mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-20 15:54:13 +08:00
29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
import subprocess
|
|
|
|
Import('env', 'common', 'msgq')
|
|
|
|
cereal_dir = Dir('.')
|
|
gen_dir = Dir('gen')
|
|
|
|
# Build cereal
|
|
schema_files = ['log.capnp', 'car.capnp', 'legacy.capnp', 'custom.capnp']
|
|
schema_outputs = env.Command([f'gen/cpp/{s}.c++' for s in schema_files] + [f'gen/cpp/{s}.h' for s in schema_files],
|
|
schema_files,
|
|
f"capnpc --src-prefix={cereal_dir.path} $SOURCES -o c++:{gen_dir.path}/cpp/")
|
|
|
|
# capnpc embeds an exact compiler-version guard in every generated C++ header.
|
|
# Include the tool version in the dependency signature so SCons cannot reuse
|
|
# generated headers from a cache populated by another AGNOS/toolchain version.
|
|
capnp_compiler_version = subprocess.check_output(['capnpc', '--version'], encoding='utf-8').strip()
|
|
env.Depends(schema_outputs, env.Value(capnp_compiler_version))
|
|
|
|
cereal = env.Library('cereal', [f'gen/cpp/{s}.c++' for s in schema_files])
|
|
|
|
# Build messaging
|
|
services_h = env.Command(['services.h'], ['services.py'], 'python3 ' + cereal_dir.path + '/services.py > $TARGET')
|
|
env.Program('messaging/bridge', ['messaging/bridge.cc', 'messaging/msgq_to_zmq.cc'], LIBS=[msgq, common, 'pthread'])
|
|
|
|
socketmaster = env.Library('socketmaster', ['messaging/socketmaster.cc'])
|
|
|
|
Export('cereal', 'socketmaster')
|