1project('object extraction', 'c')
2
3if meson.is_unity()
4  message('Skipping extraction test because this is a Unity build.')
5else
6  lib1 = library('somelib', 'src/lib.c')
7  lib2 = library('somelib2', 'lib.c', 'header.h', 'lib2.c')
8
9  obj1 = lib1.extract_objects('src/lib.c')
10  obj2 = lib2.extract_objects(['lib.c'])
11  obj3 = lib2.extract_objects(files('lib.c'))
12  obj4 = lib2.extract_objects(['lib.c', 'lib.c'])
13  obj5 = lib2.extract_objects(['lib.c', 'header.h'])
14  obj6 = lib2.extract_all_objects(recursive: true)
15
16  e1 = executable('main1', 'main.c', objects : obj1)
17  e2 = executable('main2', 'main.c', objects : obj2)
18  e3 = executable('main3', 'main.c', objects : obj3)
19  e4 = executable('main4', 'main.c', objects : obj4)
20  e5 = executable('main5', 'main.c', objects : obj5)
21  e6 = executable('main6', 'main.c', objects : obj6)
22
23  custom_target('custom_target with object inputs', output: 'objs',
24                input: [obj1, obj2, obj3, obj5, obj6],
25                build_by_default: true,
26                command: [find_program('check-obj.py'), meson.backend(), '@INPUT@'],
27                capture: true)
28
29  test('extraction test 1', e1)
30  test('extraction test 2', e2)
31  test('extraction test 3', e3)
32  test('extraction test 4', e4)
33  test('extraction test 5', e5)
34  test('extraction test 6', e6)
35endif
36