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', 'src/tx.c' ] resources = [ 'res/hi3/glb.dat', 'res/hi3/sea.dat', 'res/hi3/cn.dat', 'res/hi3/tw.dat', 'res/hi3/kr.dat', 'res/hi3/jp.dat', 'res/hsr/os.dat', 'res/hsr/cn.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 conf_data = configuration_data() conf_data.set('version', meson.project_version()) conf = configure_file(input: 'include/config.h.in', output: 'config.h', configuration: conf_data) shared_library( 'game_payload', sources, res_header, res_object, core_target, conf, objects: core_blob, include_directories: include_dir, name_prefix: '' )