The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.9 KiB
108 lines
2.9 KiB
5 years ago
|
project('run target', 'c')
|
||
|
|
||
|
# Make it possible to run built programs.
|
||
|
# In cross builds exe_wrapper should be added if it exists.
|
||
|
|
||
|
exe = executable('helloprinter', 'helloprinter.c')
|
||
4 years ago
|
|
||
|
if not meson.is_cross_build() or meson.can_run_host_binaries()
|
||
|
run_target('runhello',
|
||
|
command : [exe, 'argument'])
|
||
|
endif
|
||
5 years ago
|
|
||
|
converter = find_program('converter.py')
|
||
|
|
||
|
hex = custom_target('exe.hex',
|
||
|
input : exe,
|
||
|
output : 'exe.hex',
|
||
|
command : [converter, '@INPUT@', '@OUTPUT@',
|
||
|
],
|
||
|
)
|
||
|
|
||
|
fakeburner = find_program('fakeburner.py')
|
||
|
|
||
|
# These emulates the Arduino flasher application. It sandwiches the filename inside
|
||
|
# a packed argument. Thus we need to declare it manually.
|
||
|
run_target('upload',
|
||
|
command : [fakeburner, 'x:@0@:y'.format(exe.full_path())],
|
||
|
depends : exe,
|
||
|
)
|
||
|
|
||
|
run_target('upload2',
|
||
|
command : [fakeburner, 'x:@0@:y'.format(hex.full_path())],
|
||
|
depends : hex,
|
||
|
)
|
||
|
|
||
|
python3 = find_program('python3', required : false)
|
||
|
if not python3.found()
|
||
|
python3 = find_program('python')
|
||
|
endif
|
||
|
|
||
|
run_target('py3hi',
|
||
|
command : [python3, '-c', 'print("I am Python3.")'])
|
||
|
|
||
|
run_target('check_exists',
|
||
|
command : [find_program('check_exists.py'), files('helloprinter.c')])
|
||
|
|
||
|
run_target('check_exists',
|
||
|
command : [find_program('check_exists.py'), files('helloprinter.c')],
|
||
|
depends : disabler(),
|
||
|
)
|
||
|
|
||
|
run_target('check_exists',
|
||
|
command : [disabler(), files('helloprinter.c')])
|
||
|
|
||
|
# What if the output of a custom_target is the command to
|
||
|
# execute. Obviously this will not work as hex is not an
|
||
|
# executable but test that the output is generated correctly.
|
||
|
run_target('donotrunme',
|
||
|
command : hex)
|
||
|
|
||
|
# Ensure configure files can be passed
|
||
|
conf = configure_file(
|
||
|
input: 'configure.in',
|
||
|
output: 'configure',
|
||
|
configuration: configuration_data()
|
||
|
)
|
||
|
|
||
|
run_target('configure_script',
|
||
|
command : conf
|
||
|
)
|
||
|
|
||
4 years ago
|
custom_target('configure_script_ct',
|
||
|
command: conf,
|
||
|
output: 'dummy.txt',
|
||
|
capture: true)
|
||
4 years ago
|
|
||
5 years ago
|
# Target names that clash with potential builtin functionality.
|
||
|
run_target('ctags',
|
||
|
command : converter)
|
||
|
|
||
|
run_target('clang-format',
|
||
|
command : converter)
|
||
4 years ago
|
|
||
4 years ago
|
# Check we can pass env to the program. Also check some string substitutions
|
||
|
# that were added in 0.57.0 but not documented. This is documented behaviour
|
||
|
# since 0.57.1.
|
||
4 years ago
|
run_target('check-env',
|
||
4 years ago
|
command: [find_program('check-env.py'), '@SOURCE_ROOT@', '@BUILD_ROOT@',
|
||
|
'@CURRENT_SOURCE_DIR@'],
|
||
4 years ago
|
env: {'MY_ENV': '1'},
|
||
|
)
|
||
4 years ago
|
|
||
|
# Check some string substitutions that has always been done but never documented.
|
||
|
# Some projects have been relying on this implementation detail. This is
|
||
|
# documented behaviour since 0.57.1.
|
||
4 years ago
|
custom_target('check-env-ct',
|
||
4 years ago
|
command: [find_program('check-env.py'), '@SOURCE_ROOT@', '@BUILD_ROOT@',
|
||
|
'@CURRENT_SOURCE_DIR@'],
|
||
|
env: {'MESON_SOURCE_ROOT': meson.source_root(),
|
||
|
'MESON_BUILD_ROOT': meson.build_root(),
|
||
|
'MESON_SUBDIR': meson.current_source_dir(),
|
||
|
'MESONINTROSPECT': 'fake value',
|
||
|
'MY_ENV': '1'},
|
||
4 years ago
|
output: 'check-env-ct',
|
||
4 years ago
|
)
|
||
4 years ago
|
|
||
|
run_target('textprinter', command: ['subdir/textprinter.py'])
|