aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.py17
-rw-r--r--test cases/common/25 object extraction/meson.build11
2 files changed, 18 insertions, 10 deletions
diff --git a/build.py b/build.py
index 89103d5..8efb356 100644
--- a/build.py
+++ b/build.py
@@ -248,14 +248,17 @@ class BuildTarget():
if 'link_with' in self.kwargs:
self.kwargs['link_with'] = self.unpack_holder(self.kwargs['link_with'])
- def extract_objects(self, srclist):
+ def extract_objects(self, srcargs):
obj_src = []
- for src in srclist:
- if not isinstance(src, str):
- raise coredata.MesonException('Extraction arguments must be strings.')
- if src not in self.sources:
- raise coredata.MesonException('Tried to extract unknown source %s.' % src)
- obj_src.append(src)
+ for srclist in srcargs:
+ if not isinstance(srclist, list):
+ srclist = [srclist]
+ for src in srclist:
+ if not isinstance(src, str):
+ raise coredata.MesonException('Extraction arguments must be strings.')
+ if src not in self.sources:
+ raise coredata.MesonException('Tried to extract unknown source %s.' % src)
+ obj_src.append(src)
return ExtractedObjects(self, obj_src)
def get_rpaths(self):
diff --git a/test cases/common/25 object extraction/meson.build b/test cases/common/25 object extraction/meson.build
index f936609..0a17c60 100644
--- a/test cases/common/25 object extraction/meson.build
+++ b/test cases/common/25 object extraction/meson.build
@@ -4,8 +4,13 @@ if meson.is_unity()
message('Skipping extraction test because this is a Unity build.')
else
lib = shared_library('somelib', 'lib.c')
- obj = lib.extract_objects('lib.c')
- e = executable('main', 'main.c', objects : obj)
- test('extraction test', e)
+ obj1 = lib.extract_objects('lib.c')
+ obj2 = lib.extract_objects(['lib.c'])
+
+ e1 = executable('main 1', 'main.c', objects : obj1)
+ e2 = executable('main 2', 'main.c', objects : obj2)
+
+ test('extraction test 1', e1)
+ test('extraction test 2', e2)
endif