project('nasm config file', 'c') if host_machine.cpu_family() == 'x86' and host_machine.system() == 'windows' asm_format = 'win32' elif host_machine.cpu_family() == 'x86_64' and host_machine.system() == 'windows' asm_format = 'win64' elif host_machine.cpu_family() == 'x86' and host_machine.system() == 'linux' asm_format = 'elf32' elif host_machine.cpu_family() == 'x86_64' and host_machine.system() == 'linux' asm_format = 'elf64' else error('MESON_SKIP_TEST: skipping test on this platform') endif nasm = find_program('nasm', required: false) if not nasm.found() error('MESON_SKIP_TEST: nasm not available') endif conf = configuration_data() conf.set('HELLO', 0) asm_gen = generator(nasm, output : '@BASENAME@.o', arguments : [ '-f', asm_format, '-i', meson.current_source_dir() + '/', '-i', join_paths(meson.current_source_dir(), ''), '-P', join_paths(meson.current_build_dir(), 'config.asm'), '@INPUT@', '-o', '@OUTPUT@']) config_file = configure_file( output: 'config.asm', configuration: conf, output_format: 'nasm', ) cc = meson.get_compiler('c') link_args = cc.get_supported_link_arguments(['-no-pie']) exe = executable('hello', asm_gen.process('hello.asm'), link_args: link_args, ) test('test-nasm-configure-file', exe) exe2 = executable('hello2', objects : exe.extract_all_objects(), link_args: link_args, ) test('test-nasm-extract-all-objects', exe2)