From e36f713a7f5cc10d3f8adc7ae1c73ef6cce51082 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Tue, 13 Oct 2020 16:47:23 +0200 Subject: include_type: Add CMake subporject dependency method (fixes #6879) --- mesonbuild/modules/cmake.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'mesonbuild') 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 -- cgit v1.1