import os

import iqdbc

Import('env', 'common', 'msgq')

cereal_dir = Dir('.')
gen_dir = Dir('gen')

# Build cereal
schema_files = ['log.capnp', 'legacy.capnp', 'custom.capnp']
car_schema_dir = os.path.join(os.path.dirname(iqdbc.__file__), 'car')
car_capnp = os.path.join(car_schema_dir, 'car.capnp')
all_output = schema_files + ['car.capnp']
env.Command([f'gen/cpp/{s}.c++' for s in all_output] + [f'gen/cpp/{s}.h' for s in all_output],
            schema_files + [car_capnp],
            env.PrettyAction(f"capnpc --src-prefix={cereal_dir.path} --src-prefix={car_schema_dir} --import-path={car_schema_dir} $SOURCES -o c++:{gen_dir.path}/cpp/", 'CAPNP'))

cereal = env.Library('cereal', [f'gen/cpp/{s}.c++' for s in all_output])

# Build messaging
services_h = env.Command(['services.h'], ['services.py'], env.PrettyAction('python3 ' + cereal_dir.path + '/services.py > $TARGET', 'GEN'))
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')
