name = 'epicardium' ########################################################################## # # API # ########################################################################## api = custom_target( 'api_*.c', input: 'epicardium.h', output: ['api_caller.c', 'api_dispatcher.c'], command: [ python3, meson.current_source_dir() + '/api/genapi.py', '-H', '@INPUT0@', '-c', '@OUTPUT0@', '-s', '@OUTPUT1@', ], depend_files: 'api/genapi.py', ) api_caller_lib = static_library( 'api-caller', 'api/caller.c', 'api/interrupt-receiver.c', api[0], # Caller dependencies: periphdriver, ) api_caller = declare_dependency( include_directories: include_directories('.'), link_with: api_caller_lib, dependencies: periphdriver, ) api_dispatcher_lib = static_library( 'api-dispatcher', 'api/dispatcher.c', 'api/interrupt-sender.c', 'api/control.c', api[1], # Dispatcher dependencies: [libcard10, periphdriver], ) ########################################################################## # # FreeRTOS # ########################################################################## freertos = static_library( 'freertos', freertos_sources, freertos_heap3, dependencies: periphdriver, include_directories: [ freertos_includes, include_directories('./'), ], ) ########################################################################## # # Epicardium executable # ########################################################################## subdir('modules/') subdir('ble/') subdir('l0der/') epicardium_cargs = ['-D_POSIX_C_SOURCE=200809'] if get_option('jailbreak_card10') epicardium_cargs += [ '-DJAILBREAK_CARD10=1', ] endif version_screen = custom_target( 'version-splash.h', input: 'version-splash.png', output: 'version-splash.h', command: [ python3, meson.current_source_dir() + '../tools/version-image.py', '@INPUT@', '@OUTPUT@', ], ) elf = executable( name + '.elf', 'usb/epc_usb.c', 'usb/cdcacm.c', 'usb/mass_storage.c', 'main.c', 'support.c', 'fs/filesystem_fat.c', 'fs/fs_util.c', module_sources, l0der_sources, ble_sources, version_hdr, version_screen, dependencies: [libcard10, max32665_startup_core0, maxusb, libff13, ble, bhy1, libcrypto], link_with: [api_dispatcher_lib, freertos], link_whole: [max32665_startup_core0_lib, board_card10_lib, newlib_heap_lib], include_directories: [freertos_includes], link_args: [ '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', '-Wl,--defsym=_write=_write_epicardium', ], c_args: epicardium_cargs, ) epicardium_bin = custom_target( name + '.bin', build_by_default: true, output: name + '.bin', input: elf, command: [build_image, '@INPUT@', '@OUTPUT0@'], )