aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-07-21 21:44:17 -0400
committerXavier Claessens <xclaesse@gmail.com>2020-09-14 20:32:22 -0400
commit67c0ec1640369e20f9cea3fbdef873a4da3e47d3 (patch)
tree1a20aad639427b0ec272c8b0873e92046a87f8a4 /mesonbuild
parentb872eea27f32e2d0b6767d7247cd43199b9ae41c (diff)
downloadmeson-67c0ec1640369e20f9cea3fbdef873a4da3e47d3.zip
meson-67c0ec1640369e20f9cea3fbdef873a4da3e47d3.tar.gz
meson-67c0ec1640369e20f9cea3fbdef873a4da3e47d3.tar.bz2
InternalDependency: Add as_link_whole() method
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/dependencies/base.py5
-rw-r--r--mesonbuild/interpreter.py10
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)