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
