aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/common/22 object extraction
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/common/22 object extraction
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/common/22 object extraction')
-rw-r--r--meson/test cases/common/22 object extraction/check-obj.py21
-rw-r--r--meson/test cases/common/22 object extraction/header.h1
-rw-r--r--meson/test cases/common/22 object extraction/lib.c3
-rw-r--r--meson/test cases/common/22 object extraction/lib2.c3
-rw-r--r--meson/test cases/common/22 object extraction/main.c5
-rw-r--r--meson/test cases/common/22 object extraction/meson.build35
-rw-r--r--meson/test cases/common/22 object extraction/src/lib.c3
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;
+}