Import('env', 'common', 'cereal', 'messaging')

loc_libs = [cereal, messaging, 'zmq', common, 'capnp', 'kj', 'kaitai', 'pthread']

if GetOption('kaitai'):
  generated = Dir('generated').srcnode().abspath
  cmd = f"kaitai-struct-compiler --target cpp_stl --outdir {generated} $SOURCES"
  env.Command(['generated/ubx.cpp', 'generated/ubx.h'], 'ubx.ksy', cmd)
  env.Command(['generated/gps.cpp', 'generated/gps.h'], 'gps.ksy', cmd)
  glonass = env.Command(['generated/glonass.cpp', 'generated/glonass.h'], 'glonass.ksy', cmd)

  # kaitai issue: https://github.com/kaitai-io/kaitai_struct/issues/910
  patch = env.Command(None, 'glonass_fix.patch', 'git apply $SOURCES')
  env.Depends(patch, glonass)

glonass_obj = env.Object('generated/glonass.cpp')
env.Program("ubloxd", ["ubloxd.cc", "ublox_msg.cc", "generated/ubx.cpp", "generated/gps.cpp",  glonass_obj], LIBS=loc_libs)

if GetOption('extras'):
  env.Program("tests/test_glonass_runner", ['tests/test_glonass_runner.cc', 'tests/test_glonass_kaitai.cc', glonass_obj], LIBS=[loc_libs])