diff options
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 |