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/core.c') # Compile the real file first (dirty hack) core_fake_exe = executable( 'core.o', 'src/core.c', res_header, link_args: [ '-r' ], # Output an object file include_directories: include_dir ) # another dirty hack copy_core = find_program('copy_core.sh') core_target = [custom_target( 'copy_core', output: 'core.o', input: core_fake_exe.extract_all_objects(recursive: false), command: [ copy_core, '@INPUT0@', '@OUTPUT0@', meson.current_source_dir() / 'blob/core.o' ] )] core_blob = [] else message('Using precompiled core blob. Refer to the readme for more details') core_target = [] core_blob = [ 'blob/core.o' ] endif shared_library( 'game_payload', sources, res_header, res_object, core_target, objects: core_blob, include_directories: include_dir, name_prefix: '' )