project(
  'card10-firmware',
  'c',
  default_options: [
    'buildtype=minsize',
    'c_lto=true',
    'c_std=c99',
    'b_staticpic=false',
    'b_asneeded=false',
  ],
)

assert(
  meson.is_cross_build(),
  'card10-firmware can only be cross-compiled for card10.\n' +
  'Please use `--cross-file card10-cross.ini`.',
)

add_global_arguments(
  meson.get_cross_property('target_defs'),
  language: 'c',
)

if get_option('debug_prints')
  add_global_arguments(
    ['-DLOG_ENABLE_DEBUG=1'],
    language: 'c',
  )
endif

if get_option('debug_core1')
  add_global_arguments(
    ['-DCARD10_DEBUG_CORE1=1'],
    language: 'c',
  )
endif

add_global_link_arguments(
  '-Wl,--gc-sections',
  '-lm',
  language: 'c',
)

# python3 = import('python').find_installation('python3')
python3 = 'python3'

# Version Header
version_hdr = custom_target(
  'card10-version.h',
  output: 'card10-version.h',
  build_by_default: true,
  build_always_stale: true,
  command: [files('tools/version-header.sh'), '@OUTPUT@'],
)

jq = find_program('jq', required: false)
if jq.found()
  compile_commands = custom_target(
    'compile_commands_tidy.json',
    build_by_default: true,
    output: 'compile_commands_tidy.json',
    command: [
      files('tools/convert-ccjson.sh'),
      meson.current_source_dir(),
      meson.current_build_dir(),
      '@OUTPUT@',
    ],
  )
endif


subdir('lib/')
subdir('bootloader/')

subdir('epicardium/')
subdir('pycardium/')

subdir('hw-tests/')

subdir('l0dables/')