blob: fac46a6873310a2d89ee15ccd7bcf9950b255d41 [file] [log] [blame]
project('nasm config file', 'c')
if not host_machine.cpu_family().startswith('x86')
error('MESON_SKIP_TEST: nasm only supported for x86 and x86_64')
endif
if host_machine.system() != 'linux'
error('MESON_SKIP_TEST: this test asm is made for Linux')
endif
if host_machine.cpu_family() == 'x86'
asm_format = 'elf32'
else
asm_format = 'elf64'
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)