project('custom target') 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(), 'my_compiler.py') # Test that files() in command: works. The compiler just discards it. useless = files('test.json') mytarget = custom_target('bindat', output : 'data.dat', input : 'data_source.txt', command : [python, comp, '--input=@INPUT@', '--output=@OUTPUT@', useless], env: {'MY_COMPILER_ENV': 'value'}, install : true, install_dir : 'subdir' ) has_not_changed = false if is_disabler(mytarget) has_not_changed = true else has_not_changed = true endif assert(has_not_changed, 'Custom target has changed.') assert(not is_disabler(mytarget), 'Custom target is a disabler.') mytarget_disabler = custom_target('bindat', output : 'data.dat', input : 'data_source.txt', command : [disabler(), comp, '--input=@INPUT@', '--output=@OUTPUT@', useless], install : true, install_dir : 'subdir' ) if mytarget_disabler.found() mytarget_disabled = false else mytarget_disabled = true endif assert(mytarget_disabled, 'Disabled custom target should not be found.') mytarget_ci = custom_target('bindat_ci', output : 'data_ci.dat', input : 'data_source.txt', command : [python, comp, '--input=@INPUT@', '--output=@OUTPUT@', mytarget.to_list()], ) mytarget_disabler = custom_target('bindat', output : 'data.dat', input : disabler(), command : [python, comp, '--input=@INPUT@', '--output=@OUTPUT@', useless], install : true, install_dir : 'subdir' ) assert(is_disabler(mytarget_disabler), 'Disabled custom target is not a disabler.') if mytarget_disabler.found() mytarget_disabled = false else mytarget_disabled = true endif assert(mytarget_disabled, 'Disabled custom target should not be found.') subdir('depfile')