Import('env', 'envCython', 'arch', 'cereal', 'messaging', 'common', 'visionipc') lenv = env.Clone() lenvCython = envCython.Clone() libs = [cereal, messaging, visionipc, common, 'capnp', 'kj', 'pthread'] frameworks = [] common_src = [ "models/commonmodel.cc", "transforms/loadyuv.cc", "transforms/transform.cc", ] thneed_src_common = [ "thneed/clutil_legacy.cc", "thneed/thneed_common.cc", "thneed/serialize.cc", ] thneed_src_qcom = thneed_src_common + ["thneed/thneed_qcom2.cc"] thneed_src_pc = thneed_src_common + ["thneed/thneed_pc.cc"] thneed_src = thneed_src_qcom if arch == "larch64" else thneed_src_pc # OpenCL is a framework on Mac if arch == "Darwin": frameworks += ['OpenCL'] else: libs += ['OpenCL'] # Set path definitions for pathdef, fn in {'TRANSFORM': 'transforms/transform.cl', 'LOADYUV': 'transforms/loadyuv.cl'}.items(): for xenv in (lenv, lenvCython): xenv['CXXFLAGS'].append(f'-D{pathdef}_PATH=\\"{File(fn).abspath}\\"') cython_libs = envCython["LIBS"] + libs commonmodel_lib = lenv.Library('commonmodel', common_src) lenvCython.Program('runners/runmodel_pyx.so', 'runners/runmodel_pyx.pyx', LIBS=cython_libs, FRAMEWORKS=frameworks) lenvCython.Program('models/commonmodel_pyx.so', 'models/commonmodel_pyx.pyx', LIBS=[commonmodel_lib, *cython_libs], FRAMEWORKS=frameworks) if arch == "larch64": thneed_lib = env.SharedLibrary('thneed', thneed_src, LIBS=[common, 'OpenCL', 'dl']) thneedmodel_lib = env.Library('thneedmodel', ['runners/thneedmodel.cc']) lenvCython.Program('runners/thneedmodel_pyx.so', 'runners/thneedmodel_pyx.pyx', LIBS=envCython["LIBS"]+[thneedmodel_lib, thneed_lib, common, 'dl', 'OpenCL'])