diff options
-rw-r--r-- | mesonbuild/build.py | 10 | ||||
-rw-r--r-- | test cases/common/22 object extraction/header.h | 1 | ||||
-rw-r--r-- | test cases/common/22 object extraction/meson.build | 10 |
3 files changed, 15 insertions, 6 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 436a55d..0a792fc 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -375,7 +375,8 @@ class ExtractedObjects: r = '<{0} {1!r}: {2}>' return r.format(self.__class__.__name__, self.target.name, self.srclist) - def classify_all_sources(self, sources, generated_sources): + @staticmethod + def get_sources(sources, generated_sources): # Merge sources and generated sources sources = list(sources) for gensrc in generated_sources: @@ -386,8 +387,10 @@ class ExtractedObjects: sources.append(s) # Filter out headers and all non-source files - sources = [s for s in sources if environment.is_source(s) and not environment.is_header(s)] + return [s for s in sources if environment.is_source(s) and not environment.is_header(s)] + def classify_all_sources(self, sources, generated_sources): + sources = self.get_sources(sources, generated_sources) return classify_unity_sources(self.target.compilers.values(), sources) def check_unity_compatible(self): @@ -407,10 +410,9 @@ class ExtractedObjects: 'the object files for each compiler at once.') def get_outputs(self, backend): - # TODO: Consider if we need to handle genlist here return [ backend.object_filename_from_source(self.target, source) - for source in self.srclist + for source in self.get_sources(self.srclist, self.genlist) ] class EnvironmentVariables: 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 0000000..50403ce --- /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 407c5e8..fd4af8c 100644 --- a/test cases/common/22 object extraction/meson.build +++ b/test cases/common/22 object extraction/meson.build @@ -4,20 +4,24 @@ 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], + input: [obj1, obj2, obj3, obj5, obj6], build_by_default: true, command: [find_program('check-obj.py'), meson.backend(), '@INPUT@'], capture: true) @@ -26,4 +30,6 @@ else 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 |