diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/backend/backends.py | 3 | ||||
-rw-r--r-- | mesonbuild/build.py | 8 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 9 |
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): |