diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-10-13 16:47:23 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2020-10-13 23:51:25 +0300 |
commit | e36f713a7f5cc10d3f8adc7ae1c73ef6cce51082 (patch) | |
tree | 8b0c072a8ba46fa629bb99dfd460282953076f56 /mesonbuild/modules/cmake.py | |
parent | e00df9046defea68ca449635d9ce3e849bc70807 (diff) | |
download | meson-e36f713a7f5cc10d3f8adc7ae1c73ef6cce51082.zip meson-e36f713a7f5cc10d3f8adc7ae1c73ef6cce51082.tar.gz meson-e36f713a7f5cc10d3f8adc7ae1c73ef6cce51082.tar.bz2 |
include_type: Add CMake subporject dependency method (fixes #6879)
Diffstat (limited to 'mesonbuild/modules/cmake.py')
-rw-r--r-- | mesonbuild/modules/cmake.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index 2383753..35c85a7 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -20,7 +20,7 @@ from . import ExtensionModule, ModuleReturnValue from .. import build, dependencies, mesonlib, mlog from ..cmake import SingleTargetOptions, TargetOptions, cmake_defines_to_args -from ..interpreter import ConfigurationDataHolder, InterpreterException, SubprojectHolder +from ..interpreter import ConfigurationDataHolder, InterpreterException, SubprojectHolder, DependencyHolder from ..interpreterbase import ( InterpreterObject, ObjectHolder, @@ -105,11 +105,18 @@ class CMakeSubprojectHolder(InterpreterObject, ObjectHolder): def get_variable(self, args, kwargs): return self.held_object.get_variable_method(args, kwargs) - @noKwargs + @FeatureNewKwargs('dependency', '0.56.0', ['include_type']) + @permittedKwargs({'include_type'}) @stringArgs def dependency(self, args, kwargs): info = self._args_to_info(args) - return self.get_variable([info['dep']], kwargs) + orig = self.get_variable([info['dep']], {}) + assert isinstance(orig, DependencyHolder) + actual = orig.include_type_method([], {}) + if 'include_type' in kwargs and kwargs['include_type'] != actual: + mlog.debug('Current include type is {}. Converting to requested {}'.format(actual, kwargs['include_type'])) + return orig.as_system_method([kwargs['include_type']], {}) + return orig @noKwargs @stringArgs |