diff options
| author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-06-22 20:39:58 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-22 20:39:58 +0300 |
| commit | 7588dbc587afd3de931be60472f8919ae17dd396 (patch) | |
| tree | f545c53c79aa419946a66fabda2b9f9e8d274aed /test cases | |
| parent | a44c1d18c19b607d443e0ee6247c97a42545c6f4 (diff) | |
| parent | bd75e0398fc66a71ecab297fefe68d0066c38a81 (diff) | |
| download | meson-7588dbc587afd3de931be60472f8919ae17dd396.tar.gz | |
Merge pull request #8900 from bonzini/extract-objects-docs
extract_objects: fixes, tests and documentation for using the result in a custom_target
Diffstat (limited to 'test cases')
| -rw-r--r-- | test cases/common/22 object extraction/check-obj.py | 21 | ||||
| -rw-r--r-- | test cases/common/22 object extraction/header.h | 1 | ||||
| -rw-r--r-- | test cases/common/22 object extraction/meson.build | 14 |
3 files changed, 35 insertions, 1 deletions
diff --git a/test cases/common/22 object extraction/check-obj.py b/test cases/common/22 object extraction/check-obj.py new file mode 100644 index 000000000..99c2cc546 --- /dev/null +++ b/test cases/common/22 object extraction/check-obj.py @@ -0,0 +1,21 @@ +#! /usr/bin/env python3 + +import json +import sys +import os + +cc = None +output = None + +# Only the ninja backend produces compile_commands.json +if sys.argv[1] == 'ninja': + with open('compile_commands.json', 'r') as f: + cc = json.load(f) + output = set((x['output'] for x in cc)) + +for obj in sys.argv[2:]: + if not os.path.exists(obj): + sys.exit(1) + if sys.argv[1] == 'ninja' and obj not in output: + sys.exit(1) + print('Verified', obj) diff --git a/test cases/common/22 object extraction/header.h b/test cases/common/22 object extraction/header.h new file mode 100644 index 000000000..50403ce3c --- /dev/null +++ b/test cases/common/22 object extraction/header.h @@ -0,0 +1 @@ +/* Check that extract_all_objects works with headers. */ diff --git a/test cases/common/22 object extraction/meson.build b/test cases/common/22 object extraction/meson.build index 18be1dbeb..fd4af8c60 100644 --- a/test cases/common/22 object extraction/meson.build +++ b/test cases/common/22 object extraction/meson.build @@ -4,20 +4,32 @@ if meson.is_unity() message('Skipping extraction test because this is a Unity build.') else lib1 = shared_library('somelib', 'src/lib.c') - lib2 = shared_library('somelib2', 'lib.c', 'lib2.c') + lib2 = shared_library('somelib2', 'lib.c', 'header.h', 'lib2.c') obj1 = lib1.extract_objects('src/lib.c') obj2 = lib2.extract_objects(['lib.c']) obj3 = lib2.extract_objects(files('lib.c')) obj4 = lib2.extract_objects(['lib.c', 'lib.c']) + obj5 = lib2.extract_objects(['lib.c', 'header.h']) + obj6 = lib2.extract_all_objects(recursive: true) e1 = executable('main1', 'main.c', objects : obj1) e2 = executable('main2', 'main.c', objects : obj2) e3 = executable('main3', 'main.c', objects : obj3) e4 = executable('main4', 'main.c', objects : obj4) + e5 = executable('main5', 'main.c', objects : obj5) + e6 = executable('main6', 'main.c', objects : obj6) + + custom_target('custom_target with object inputs', output: 'objs', + input: [obj1, obj2, obj3, obj5, obj6], + build_by_default: true, + command: [find_program('check-obj.py'), meson.backend(), '@INPUT@'], + capture: true) test('extraction test 1', e1) test('extraction test 2', e2) test('extraction test 3', e3) test('extraction test 4', e4) + test('extraction test 5', e5) + test('extraction test 6', e6) endif |
