|
|
|
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)
|