From 7b6e527f440cd7e6f8be2b07cee320ee6ca18786 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 29 Apr 2024 06:41:38 +0200 Subject: Adding upstream version 1.0.1. Signed-off-by: Daniel Baumann --- .../check_object.py | 17 ++++++++ .../libdir/gen.py | 6 +++ .../libdir/meson.build | 21 ++++++++++ .../libdir/source.c | 3 ++ .../meson.build | 48 ++++++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 test cases/common/216 custom target input extracted objects/check_object.py create mode 100644 test cases/common/216 custom target input extracted objects/libdir/gen.py create mode 100644 test cases/common/216 custom target input extracted objects/libdir/meson.build create mode 100644 test cases/common/216 custom target input extracted objects/libdir/source.c create mode 100644 test cases/common/216 custom target input extracted objects/meson.build (limited to 'test cases/common/216 custom target input extracted objects') diff --git a/test cases/common/216 custom target input extracted objects/check_object.py b/test cases/common/216 custom target input extracted objects/check_object.py new file mode 100644 index 0000000..d521b43 --- /dev/null +++ b/test cases/common/216 custom target input extracted objects/check_object.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import sys, os + +if __name__ == '__main__': + if len(sys.argv) < 4: + print(sys.argv[0], 'n output objects...') + sys.exit(1) + if len(sys.argv) != int(sys.argv[1]) + 3: + print(f'expected {sys.argv[1]} objects, got {len(sys.argv) - 3}') + sys.exit(1) + for i in sys.argv[3:]: + print('testing', i) + if not os.path.exists(i): + sys.exit(1) + with open(sys.argv[2], 'wb') as out: + pass diff --git a/test cases/common/216 custom target input extracted objects/libdir/gen.py b/test cases/common/216 custom target input extracted objects/libdir/gen.py new file mode 100644 index 0000000..095fffd --- /dev/null +++ b/test cases/common/216 custom target input extracted objects/libdir/gen.py @@ -0,0 +1,6 @@ +#! /usr/bin/env python3 +import sys +with open(sys.argv[1], 'r') as f: + for l in f: + l = l.rstrip() + print(l.replace(sys.argv[2], sys.argv[3])) diff --git a/test cases/common/216 custom target input extracted objects/libdir/meson.build b/test cases/common/216 custom target input extracted objects/libdir/meson.build new file mode 100644 index 0000000..93a7bcc --- /dev/null +++ b/test cases/common/216 custom target input extracted objects/libdir/meson.build @@ -0,0 +1,21 @@ +gen_py = find_program('gen.py') +ctsrc = custom_target('custom_target sources', + output: 'ct-source.c', + input: 'source.c', + command: [ gen_py, '@INPUT@', 'func1', 'func2' ], capture: true) + +gen = generator(gen_py, arguments: ['@INPUT@', 'func1', 'func3'], + output: 'gen-@PLAINNAME@', + capture: true) +gensrc = gen.process('source.c') + + +gen = generator(gen_py, arguments: ['@INPUT@', 'func1', 'func4'], + output: 'gen-@PLAINNAME@', + capture: true) +sublibsrc = gen.process('source.c') +subobjlib = static_library('subobject', sublibsrc) + +objlib = static_library('object', 'source.c', ctsrc, gensrc, + objects: subobjlib.extract_all_objects(recursive: false), + override_options : ['unity=off']) diff --git a/test cases/common/216 custom target input extracted objects/libdir/source.c b/test cases/common/216 custom target input extracted objects/libdir/source.c new file mode 100644 index 0000000..1dc08e1 --- /dev/null +++ b/test cases/common/216 custom target input extracted objects/libdir/source.c @@ -0,0 +1,3 @@ +int func1_in_obj(void) { + return 0; +} diff --git a/test cases/common/216 custom target input extracted objects/meson.build b/test cases/common/216 custom target input extracted objects/meson.build new file mode 100644 index 0000000..654b76d --- /dev/null +++ b/test cases/common/216 custom target input extracted objects/meson.build @@ -0,0 +1,48 @@ +project('custom target input extracted objects', 'c') + +if meson.backend() == 'xcode' + error('MESON_SKIP_TEST: sometimes Xcode puts object files in weird paths and we can not extract them.') +endif + + +checker = find_program('check_object.py') + +cc = meson.get_compiler('c').cmd_array().get(-1) + +subdir('libdir') + +custom_target('check', + input: objlib.extract_objects('source.c'), + output: 'objcheck', + command: [checker, '1', '@OUTPUT@', '@INPUT@'], + build_by_default: true) + +custom_target('checkct', + input: objlib.extract_objects(ctsrc), + output: 'objcheck-ct', + command: [checker, '1', '@OUTPUT@', '@INPUT@'], + build_by_default: true) + +custom_target('checkcti', + input: objlib.extract_objects(ctsrc[0]), + output: 'objcheck-cti', + command: [checker, '1', '@OUTPUT@', '@INPUT@'], + build_by_default: true) + +custom_target('checkgen', + input: objlib.extract_objects(gensrc), + output: 'objcheck-gen', + command: [checker, '1', '@OUTPUT@', '@INPUT@'], + build_by_default: true) + +custom_target('checkall', + input: objlib.extract_all_objects(recursive: false), + output: 'objcheck-all', + command: [checker, '3', '@OUTPUT@', '@INPUT@'], + build_by_default: true) + +custom_target('checkall-recursive', + input: objlib.extract_all_objects(recursive: true), + output: 'objcheck-all-recursive', + command: [checker, '4', '@OUTPUT@', '@INPUT@'], + build_by_default: true) -- cgit v1.2.3