diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2020-07-21 21:44:17 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2020-09-14 20:32:22 -0400 |
commit | 67c0ec1640369e20f9cea3fbdef873a4da3e47d3 (patch) | |
tree | 1a20aad639427b0ec272c8b0873e92046a87f8a4 /mesonbuild | |
parent | b872eea27f32e2d0b6767d7247cd43199b9ae41c (diff) | |
download | meson-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.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) |