blob: 49590d6d60f9d681869dcd8eb61f7ea3ae79c45b [file] [log] [blame]
project('object generator', 'c')
python = find_program('python3', required : false)
if not python.found()
python = find_program('python')
endif
# Note that this will not add a dependency to the compiler executable.
# Code will not be rebuilt if it changes.
comp = '@0@/@1@'.format(meson.current_source_dir(), 'obj_generator.py')
if host_machine.system() == 'windows'
outputname = '@BASENAME@.obj'
else
outputname = '@BASENAME@.o'
endif
cc = meson.get_compiler('c').cmd_array().get(-1)
# Generate an object file manually.
gen = generator(python,
output : outputname,
arguments : [comp, cc, '@INPUT@', '@OUTPUT@'])
generated = gen.process(['source.c', 'source2.c'])
# Generate an object file with indexed OUTPUT replacement.
gen2 = generator(python,
output : outputname,
arguments : [comp, cc, '@INPUT@', '@OUTPUT0@'])
generated2 = gen2.process(['source3.c'])
# Generate an object file ending with .o even on Windows.
# The VS backend needs to handle .o objects differently from .obj objects.
gen3 = generator(python,
output : '@BASENAME@.o',
arguments : [comp, cc, '@INPUT@', '@OUTPUT@'])
generated3 = gen3.process(['source4.c'])
e = executable('prog', 'prog.c', generated, generated2, generated3)
test('objgen', e)