project('a', 'c')

good = declare_dependency(link_with: static_library('good', 'g.c'))
bad = declare_dependency(link_args: 'nonexistent.a')
not_found = dependency('invalid', required: false)

source_set = import('sourceset')

sources = source_set.source_set()
sources.add(when: 'YES',  if_false: ['nope.c'])
sources.add(when: 'YES1', if_true: files('a.c'))
subdir('subdir')
sources.add(when: 'NO',   if_true: 'nope.c', if_false: ['f.c'])
sources.add(when: 'NO',   if_true: bad,      if_false: ['f.c'])

sources.add(when: 'YES2', if_true: good)

# dependencies as conditions
sources.add(when: not_found, if_true: 'nope.c')

# test add_all
sources2 = source_set.source_set()
sources2.add(when: 'YES1',  if_true: 'nope.c')
sources.add_all(when: 'NO', if_true: sources2)

# test duplicate items
sources.add(when: 'YES1',   if_true: files('a.c'))

conf1 = configuration_data()
conf1.set10('YES', true)
conf1.set10('YES1', true)
conf1.set10('YES2', false)
conf1.set10('NO', false)
result1 = sources.apply(conf1)

conf2 = configuration_data()
conf2.set10('YES', true)
conf2.set10('YES1', false)
conf2.set10('YES2', true)
conf2.set10('NO', false)
result2 = sources.apply(conf2)

# Each target will recompile the objects
executable('first', sources: result1.sources(), dependencies: result1.dependencies())
executable('second', sources: result2.sources(), dependencies: result2.dependencies())

# All target will use the same object files
if meson.is_unity()
  message('Skipping extraction test because this is a Unity build.')
else
  all_objs = static_library('all_objs', sources.all_sources())
  executable('first_via_lib', objects: all_objs.extract_objects(result1.sources()), dependencies: result1.dependencies())
  executable('second_via_lib', objects: all_objs.extract_objects(result2.sources()), dependencies: result2.dependencies())
endif
