"""Build DAOS SPDK Go bindings"""
from os.path import join


def scons():
    """Execute build"""
    Import('denv', 'prereqs', 'control_tgts')

    denv.AppendUnique(LIBPATH=[Dir('.')])

    senv = denv.Clone()
    senv.require('pmdk', 'spdk', 'ofi')
    if senv["CC"] == 'icx':
        # Avoid need to link Intel libraries in go build
        senv["CC"] = "gcc"

    senv.AppendUnique(CPPPATH=[join(Dir('.').srcnode().abspath, "include")])
    senv.AppendUnique(OBJPREFIX='s_')

    # Explicitly link RTE & SPDK libs for CGO access
    libs = ['spdk_log', 'spdk_env_dpdk', 'spdk_nvme', 'spdk_vmd', 'rte_mempool']
    libs += ['rte_mempool_ring', 'rte_bus_pci']

    # Other libs
    libs += ['numa', 'dl']

    nc_obj = senv.Object("src/nvme_control.c")
    ncc_obj = senv.Object("src/nvme_control_common.c")
    senv.d_static_library("nvme_control", [nc_obj, ncc_obj, control_tgts], LIBS=libs)

    if prereqs.test_requested():
        SConscript('ctests/SConscript', exports=['senv', 'nc_obj', 'ncc_obj'])


if __name__ == "SCons.Script":
    scons()
