diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2024-08-27 13:33:12 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-10-01 08:26:40 -0700 |
| commit | 351ae5d3a61f20ecbd6e487662ae53808da8fcbd (patch) | |
| tree | bdda84f55d8bc36406bb7c29009a06926de7572d /mesonbuild/modules | |
| parent | c79453ed73569796130eb62fbfa913d89e9bfb54 (diff) | |
| download | meson-351ae5d3a61f20ecbd6e487662ae53808da8fcbd.tar.gz | |
modules/cmake: use typed_kwargs for subproject.dependency
Diffstat (limited to 'mesonbuild/modules')
| -rw-r--r-- | mesonbuild/modules/cmake.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index 8eefe11cc..10a4ef29b 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -16,7 +16,6 @@ from ..interpreter import SubprojectHolder from ..interpreter.type_checking import REQUIRED_KW, INSTALL_DIR_KW, NoneType, in_set_validator from ..interpreterbase import ( FeatureNew, - FeatureNewKwargs, permittedKwargs, noPosargs, @@ -89,7 +88,6 @@ macro(set_and_check _var _file) message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") endif() endmacro() - #################################################################################### ''' @@ -125,9 +123,17 @@ class CMakeSubproject(ModuleObject): def get_variable(self, state: ModuleState, args: T.Tuple[str, T.Optional[str]], kwargs: TYPE_kwargs) -> T.Union[TYPE_var, InterpreterObject]: return self.subp.get_variable(args, kwargs) - @FeatureNewKwargs('dependency', '0.56.0', ['include_type']) - @permittedKwargs({'include_type'}) @typed_pos_args('cmake.subproject.dependency', str) + @typed_kwargs( + 'cmake.subproject.dependency', + KwargInfo( + 'include_type', + str, + default='preserve', + since='0.56.0', + validator=in_set_validator({'preserve', 'system', 'non-system'}) + ), + ) def dependency(self, state: ModuleState, args: T.Tuple[str], kwargs: T.Dict[str, str]) -> dependencies.Dependency: info = self._args_to_info(args[0]) if info['func'] == 'executable': @@ -136,9 +142,8 @@ class CMakeSubproject(ModuleObject): raise InvalidArguments(f'{args[0]} does not support the dependency() method. Use target() instead.') orig = self.get_variable(state, [info['dep']], {}) assert isinstance(orig, dependencies.Dependency) - actual = orig.include_type - if 'include_type' in kwargs and kwargs['include_type'] != actual: - mlog.debug('Current include type is {}. Converting to requested {}'.format(actual, kwargs['include_type'])) + if kwargs['include_type'] != 'preserve' and kwargs['include_type'] != orig.include_type: + mlog.debug('Current include type is {}. Converting to requested {}'.format(orig.include_type, kwargs['include_type'])) return orig.generate_system_dependency(kwargs['include_type']) return orig |
