fs = import('fs') include_dir = include_directories('include') # Input files sources = [ 'src/main.c', 'src/ntdll.c', 'src/ace.c', 'src/pe.c', 'src/game.c', 'src/hi3.c', 'src/hsr.c', 'src/utils.c', 'src/msg.c' ] resources = [ 'res/hi3/glb/allocations.dat', 'res/hi3/glb/entries.dat', 'res/hsr/os/allocations.dat', 'res/hsr/os/entries.dat', 'res/hsr/cn/allocations.dat', 'res/hsr/cn/entries.dat' ] # Generate resource files for ./res res_header = custom_target( 'resources.h', output: 'resources.h', input: resources, command: [ gen_res, '--header', meson.current_source_dir(), '@OUTPUT0@', '@INPUT@' ] ) res_object = custom_target( 'resources.o', output: 'resources.o', input: resources, command: [ gen_res, '--object', meson.current_source_dir(), '@OUTPUT0@', '@INPUT@' ] ) if fs.exists('src/tp6.c') # Compile the real file first (dirty hack) tp6c_fake_exe = executable( 'tp6c.o', 'src/tp6.c', res_header, link_args: [ '-r' ], # Output an object file include_directories: include_dir ) # another dirty hack copy_tp6c = find_program('copy_tp6c.sh') tp6c = custom_target( 'copy_tp6c', output: 'tp6c.o', input: tp6c_fake_exe.extract_all_objects(recursive: false), command: [ copy_tp6c, '@INPUT0@', '@OUTPUT0@', meson.current_source_dir() / 'blob/tp6c.o' ] ) else message('Using precompiled tp6c blob. Refer to the readme for more details') tp6c = 'blob/tp6c.o' endif shared_library( 'game_payload', sources, res_header, res_object, objects: tp6c, include_directories: include_dir, name_prefix: '' )