diff --git a/opendbc/can/SConscript b/opendbc/can/SConscript index 9f6825a9..ca0196b4 100644 --- a/opendbc/can/SConscript +++ b/opendbc/can/SConscript @@ -1,23 +1,30 @@ -Import('env', 'envCython', 'common', 'arch') - +Import('env','envCython','common','arch') +from SCons.Subst import Literal # ← add this envDBC = env.Clone() -dbc_file_path = '-DDBC_FILE_PATH=\'"%s"\'' % (envDBC.Dir("../dbc").abspath) -envDBC['CXXFLAGS'] += [dbc_file_path] -src = ["dbc.cc", "parser.cc", "packer.cc", "common.cc"] +envDBC['CXXFLAGS'] += ['-DDBC_FILE_PATH=\\"%s\\"' % envDBC.Dir('../dbc').abspath] +src = ['dbc.cc','parser.cc','packer.cc','common.cc'] +linkflags = envDBC['LINKFLAGS'] +if arch == 'Darwin': + linkflags += ['-Wl,-install_name,@loader_path/../..//libdbc.dylib'] +libdbc = envDBC.SharedLibrary('libdbc',src,LIBS=[common],LINKFLAGS=linkflags) -# shared library for openpilot -LINKFLAGS = envDBC["LINKFLAGS"] -if arch == "Darwin": - LINKFLAGS += ["-Wl,-install_name,@loader_path/libdbc.dylib"] -libdbc = envDBC.SharedLibrary('libdbc', src, LIBS=[common, ], LINKFLAGS=LINKFLAGS) - -# Build packer and parser lenv = envCython.Clone() -lenv["LIBPATH"].append(Dir(".")) -lenv["RPATH"] = [libdbc[0].dir.abspath, ] -parser = lenv.Program('parser_pyx.so', 'parser_pyx.pyx', LIBS=[common, libdbc[0].name]) -packer = lenv.Program('packer_pyx.so', 'packer_pyx.pyx', LIBS=[common, libdbc[0].name]) +dbc_dir = libdbc[0].dir.abspath +lenv.Append(LIBPATH=[dbc_dir]) -opendbc_python = Alias("opendbc_python", [parser, packer]) +if arch == 'Darwin': + rpath_flags = [ + '-Wl,-rpath,@loader_path', + '-Wl,-rpath,@loader_path/../..', + ] +else: + rpath_flags = [ + Literal('-Wl,-rpath,$ORIGIN'), + Literal('-Wl,-rpath,$ORIGIN/../..'), + ] +lenv.Append(LINKFLAGS=rpath_flags) +parser = lenv.SharedLibrary('parser_pyx','parser_pyx.pyx',SHLIBPREFIX='',SHLIBSUFFIX='.so',LIBS=[common,'dbc']) +packer = lenv.SharedLibrary('packer_pyx','packer_pyx.pyx',SHLIBPREFIX='',SHLIBSUFFIX='.so',LIBS=[common,'dbc']) +opendbc_python = Alias('opendbc_python',[parser,packer,libdbc]) Export('opendbc_python')