diff options
author | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/common/22 object extraction | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/common/22 object extraction')
7 files changed, 71 insertions, 0 deletions
diff --git a/meson/test cases/common/22 object extraction/check-obj.py b/meson/test cases/common/22 object extraction/check-obj.py new file mode 100644 index 000000000..99c2cc546 --- /dev/null +++ b/meson/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/meson/test cases/common/22 object extraction/header.h b/meson/test cases/common/22 object extraction/header.h new file mode 100644 index 000000000..50403ce3c --- /dev/null +++ b/meson/test cases/common/22 object extraction/header.h @@ -0,0 +1 @@ +/* Check that extract_all_objects works with headers. */ diff --git a/meson/test cases/common/22 object extraction/lib.c b/meson/test cases/common/22 object extraction/lib.c new file mode 100644 index 000000000..81805512f --- /dev/null +++ b/meson/test cases/common/22 object extraction/lib.c @@ -0,0 +1,3 @@ +int func(void) { + return 42; +} diff --git a/meson/test cases/common/22 object extraction/lib2.c b/meson/test cases/common/22 object extraction/lib2.c new file mode 100644 index 000000000..5020593c6 --- /dev/null +++ b/meson/test cases/common/22 object extraction/lib2.c @@ -0,0 +1,3 @@ +int retval(void) { + return 43; +} diff --git a/meson/test cases/common/22 object extraction/main.c b/meson/test cases/common/22 object extraction/main.c new file mode 100644 index 000000000..27162c5e0 --- /dev/null +++ b/meson/test cases/common/22 object extraction/main.c @@ -0,0 +1,5 @@ +int func(void); + +int main(void) { + return func() == 42 ? 0 : 1; +} diff --git a/meson/test cases/common/22 object extraction/meson.build b/meson/test cases/common/22 object extraction/meson.build new file mode 100644 index 000000000..4847fa11d --- /dev/null +++ b/meson/test cases/common/22 object extraction/meson.build @@ -0,0 +1,35 @@ +project('object extraction', 'c') + +if meson.is_unity() + message('Skipping extraction test because this is a Unity build.') +else + lib1 = library('somelib', 'src/lib.c') + lib2 = 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 diff --git a/meson/test cases/common/22 object extraction/src/lib.c b/meson/test cases/common/22 object extraction/src/lib.c new file mode 100644 index 000000000..81805512f --- /dev/null +++ b/meson/test cases/common/22 object extraction/src/lib.c @@ -0,0 +1,3 @@ +int func(void) { + return 42; +} |