aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/build.py10
-rw-r--r--test cases/common/22 object extraction/header.h1
-rw-r--r--test cases/common/22 object extraction/meson.build10
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