project('rewrite tricky dataflow', 'c') # Adding a file to `begin` will add this file to the sources of `tgt1`, but # not to any other target. But a buggy rewriter might think that adding a file # to `begin` will also add this file to `end` and will refuse to add a file to # `begin`. begin = ['foo.c'] tgt1 = library('tgt1', begin) distraction = executable('distraction', link_with: tgt1) tgt2_srcs = ['foo.c'] if host_machine.system() == 'windows' # Some condition that cannot be known statically tgt2_srcs += ['bar.c'] endif executable('tgt2', tgt2_srcs) tgt34_srcs = ['foo.c'] executable('tgt3', tgt34_srcs) if host_machine.system() == 'windows' tgt34_srcs += ['bar.c'] endif executable('tgt4', tgt34_srcs) dont_add_here_5 = ['foo.c'] ct = custom_target('ct', output: 'out.c', input: dont_add_here_5, command: ['placeholder', '@INPUT@', '@OUTPUT@']) executable('tgt5', ct) dont_add_here_6 = ['foo.c'] gen = generator(find_program('cp'), output: '@BASENAME@_copy.c', arguments: ['@INPUT@', '@OUTPUT@']) generated = gen.process(dont_add_here_6) executable('tgt6', generated) if false # Should produce a warning, but should not crash var = not_defined_1 executable('tgt7', not_defined_2, var) endif