diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/dependencies/base.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 8d2f759..aa513ba 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -295,6 +295,11 @@ class InternalDependency(Dependency): return val raise DependencyException('Could not get an internal variable and no default provided for {!r}'.format(self)) + def generate_link_whole_dependency(self) -> T.Type['Dependency']: + new_dep = copy.deepcopy(self) + new_dep.whole_libraries += new_dep.libraries + new_dep.libraries = [] + return new_dep class HasNativeKwarg: def __init__(self, kwargs): diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index bc162ac..3af5b51 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -431,6 +431,7 @@ class DependencyHolder(InterpreterObject, ObjectHolder): 'partial_dependency': self.partial_dependency_method, 'include_type': self.include_type_method, 'as_system': self.as_system_method, + 'as_link_whole': self.as_link_whole_method, }) def found(self): @@ -511,6 +512,15 @@ class DependencyHolder(InterpreterObject, ObjectHolder): new_dep = self.held_object.generate_system_dependency(new_is_system) return DependencyHolder(new_dep, self.subproject) + @FeatureNew('dep.as_link_whole', '0.56.0') + @permittedKwargs({}) + @noPosargs + def as_link_whole_method(self, args, kwargs): + if not isinstance(self.held_object, InternalDependency): + raise InterpreterException('as_link_whole method is only supported on declare_dependency() objects') + new_dep = self.held_object.generate_link_whole_dependency() + return DependencyHolder(new_dep, self.subproject) + class ExternalProgramHolder(InterpreterObject, ObjectHolder): def __init__(self, ep, subproject, backend=None): InterpreterObject.__init__(self) |