summaryrefslogtreecommitdiff
path: root/test cases/nasm/1 configure file/meson.build
blob: 213e114875db3ff145f554c5f2e7081dfefaaf1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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',
)

exe = executable('hello', asm_gen.process('hello.asm'))

test('test-nasm-configure-file', exe)