aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-04-16 21:29:21 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2018-04-18 14:54:52 -0400
commit9a82b0136a6b9cd9d2000342a0506b7c8bf4897d (patch)
treecea978decfa60fa96cd45a5a9f6dcc3294452503 /mesonbuild
parent60aaee55d47e5938662a48d85ba659d8f79c7187 (diff)
downloadmeson-9a82b0136a6b9cd9d2000342a0506b7c8bf4897d.zip
meson-9a82b0136a6b9cd9d2000342a0506b7c8bf4897d.tar.gz
meson-9a82b0136a6b9cd9d2000342a0506b7c8bf4897d.tar.bz2
extract_all_objects: Add 'recursive' keyword argument
To maintain backward compatibility we cannot add recursive objects by default. Print a warning when there are recursive objects to be pulled and the argument is not set. After a while we'll do pull recursive objects by default.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/backend/backends.py3
-rw-r--r--mesonbuild/build.py8
-rw-r--r--mesonbuild/interpreter.py9
3 files changed, 15 insertions, 5 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 2cca5e5..5a401fe 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -253,7 +253,8 @@ class Backend:
elif isinstance(obj, mesonlib.File):
obj_list.append(obj.rel_to_builddir(self.build_to_src))
elif isinstance(obj, build.ExtractedObjects):
- obj_list += self._flatten_object_list(obj.target, obj.objlist, proj_dir_to_build_root)
+ if obj.recursive:
+ obj_list += self._flatten_object_list(obj.target, obj.objlist, proj_dir_to_build_root)
obj_list += self.determine_ext_objs(obj, proj_dir_to_build_root)
else:
raise MesonException('Unknown data type in object list.')
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 538254c..352f857 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -213,8 +213,9 @@ class ExtractedObjects:
'''
Holds a list of sources for which the objects must be extracted
'''
- def __init__(self, target, srclist=[], genlist=[], objlist=[]):
+ def __init__(self, target, srclist=[], genlist=[], objlist=[], recursive=True):
self.target = target
+ self.recursive = recursive
self.srclist = srclist
self.genlist = genlist
self.objlist = objlist
@@ -647,8 +648,9 @@ class BuildTarget(Target):
obj_src.append(src)
return ExtractedObjects(self, obj_src)
- def extract_all_objects(self):
- return ExtractedObjects(self, self.sources, self.generated, self.objects)
+ def extract_all_objects(self, recursive=True):
+ return ExtractedObjects(self, self.sources, self.generated, self.objects,
+ recursive)
def get_all_link_deps(self):
return self.get_transitive_link_deps()
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index a4c93de..b119b3d 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -606,8 +606,15 @@ class BuildTargetHolder(TargetHolder):
gobjs = self.held_object.extract_objects(args)
return GeneratedObjectsHolder(gobjs)
+ @permittedMethodKwargs({'recursive'})
def extract_all_objects_method(self, args, kwargs):
- gobjs = self.held_object.extract_all_objects()
+ recursive = kwargs.get('recursive', False)
+ gobjs = self.held_object.extract_all_objects(recursive)
+ if gobjs.objlist and 'recursive' not in kwargs:
+ mlog.warning('extract_all_objects called without setting recursive '
+ 'keyword argument. Meson currently defaults to '
+ 'non-recursive to maintain backward compatibility but '
+ 'the default will be changed in the future.')
return GeneratedObjectsHolder(gobjs)
def get_id_method(self, args, kwargs):