diff options
Diffstat (limited to 'mesonbuild/modules/cmake.py')
-rw-r--r-- | mesonbuild/modules/cmake.py | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/mesonbuild/modules/cmake.py b/mesonbuild/modules/cmake.py index bef7a00..048b59e 100644 --- a/mesonbuild/modules/cmake.py +++ b/mesonbuild/modules/cmake.py @@ -16,16 +16,12 @@ import os, os.path, pathlib import shutil import typing as T -from . import ExtensionModule, ModuleReturnValue +from . import ExtensionModule, ModuleReturnValue, ModuleObject from .. import build, mesonlib, mlog from ..cmake import SingleTargetOptions, TargetOptions, cmake_defines_to_args from ..interpreter import ConfigurationDataHolder, SubprojectHolder, DependencyHolder from ..interpreterbase import ( - InterpreterException, - InterpreterObject, - ObjectHolder, - FeatureNew, FeatureNewKwargs, FeatureDeprecatedKwargs, @@ -72,12 +68,12 @@ endmacro() #################################################################################### ''' -class CMakeSubprojectHolder(InterpreterObject, ObjectHolder): +class CMakeSubproject(ModuleObject): def __init__(self, subp, pv): assert(isinstance(subp, SubprojectHolder)) assert(hasattr(subp, 'cm_interpreter')) - InterpreterObject.__init__(self) - ObjectHolder.__init__(self, subp, pv) + super().__init__() + self.subp = subp self.methods.update({'get_variable': self.get_variable, 'dependency': self.dependency, 'include_directories': self.include_directories, @@ -92,7 +88,7 @@ class CMakeSubprojectHolder(InterpreterObject, ObjectHolder): raise InterpreterException('Exactly one argument is required.') tgt = args[0] - res = self.held_object.cm_interpreter.target_info(tgt) + res = self.subp.cm_interpreter.target_info(tgt) if res is None: raise InterpreterException(f'The CMake target {tgt} does not exist\n' + ' Use the following command in your meson.build to list all available targets:\n\n' + @@ -104,15 +100,15 @@ class CMakeSubprojectHolder(InterpreterObject, ObjectHolder): @noKwargs @stringArgs - def get_variable(self, args, kwargs): - return self.held_object.get_variable_method(args, kwargs) + def get_variable(self, state, args, kwargs): + return self.subp.get_variable_method(args, kwargs) @FeatureNewKwargs('dependency', '0.56.0', ['include_type']) @permittedKwargs({'include_type'}) @stringArgs - def dependency(self, args, kwargs): + def dependency(self, state, args, kwargs): info = self._args_to_info(args) - orig = self.get_variable([info['dep']], {}) + orig = self.get_variable(state, [info['dep']], {}) assert isinstance(orig, DependencyHolder) actual = orig.include_type_method([], {}) if 'include_type' in kwargs and kwargs['include_type'] != actual: @@ -122,35 +118,35 @@ class CMakeSubprojectHolder(InterpreterObject, ObjectHolder): @noKwargs @stringArgs - def include_directories(self, args, kwargs): + def include_directories(self, state, args, kwargs): info = self._args_to_info(args) - return self.get_variable([info['inc']], kwargs) + return self.get_variable(state, [info['inc']], kwargs) @noKwargs @stringArgs - def target(self, args, kwargs): + def target(self, state, args, kwargs): info = self._args_to_info(args) - return self.get_variable([info['tgt']], kwargs) + return self.get_variable(state, [info['tgt']], kwargs) @noKwargs @stringArgs - def target_type(self, args, kwargs): + def target_type(self, state, args, kwargs): info = self._args_to_info(args) return info['func'] @noPosargs @noKwargs - def target_list(self, args, kwargs): - return self.held_object.cm_interpreter.target_list() + def target_list(self, state, args, kwargs): + return self.subp.cm_interpreter.target_list() @noPosargs @noKwargs @FeatureNew('CMakeSubproject.found()', '0.53.2') - def found_method(self, args, kwargs): - return self.held_object is not None + def found_method(self, state, args, kwargs): + return self.subp is not None -class CMakeSubprojectOptions(InterpreterObject): +class CMakeSubprojectOptions(ModuleObject): def __init__(self) -> None: super().__init__() self.cmake_options = [] # type: T.List[str] @@ -173,39 +169,39 @@ class CMakeSubprojectOptions(InterpreterObject): return self.target_options.global_options @noKwargs - def add_cmake_defines(self, args, kwargs) -> None: + def add_cmake_defines(self, state, args, kwargs) -> None: self.cmake_options += cmake_defines_to_args(args) @stringArgs @permittedKwargs({'target'}) - def set_override_option(self, args, kwargs) -> None: + def set_override_option(self, state, args, kwargs) -> None: if len(args) != 2: raise InvalidArguments('set_override_option takes exactly 2 positional arguments') self._get_opts(kwargs).set_opt(args[0], args[1]) @permittedKwargs({'target'}) - def set_install(self, args, kwargs) -> None: + def set_install(self, state, args, kwargs) -> None: if len(args) != 1 or not isinstance(args[0], bool): raise InvalidArguments('set_install takes exactly 1 boolean argument') self._get_opts(kwargs).set_install(args[0]) @stringArgs @permittedKwargs({'target'}) - def append_compile_args(self, args, kwargs) -> None: + def append_compile_args(self, state, args, kwargs) -> None: if len(args) < 2: raise InvalidArguments('append_compile_args takes at least 2 positional arguments') self._get_opts(kwargs).append_args(args[0], args[1:]) @stringArgs @permittedKwargs({'target'}) - def append_link_args(self, args, kwargs) -> None: + def append_link_args(self, state, args, kwargs) -> None: if not args: raise InvalidArguments('append_link_args takes at least 1 positional argument') self._get_opts(kwargs).append_link_args(args) @noPosargs @noKwargs - def clear(self, args, kwargs) -> None: + def clear(self, state, args, kwargs) -> None: self.cmake_options.clear() self.target_options = TargetOptions() @@ -389,7 +385,7 @@ class CmakeModule(ExtensionModule): subp = self.interpreter.do_subproject(dirname, 'cmake', kwargs) if not subp.held_object: return subp - return CMakeSubprojectHolder(subp, dirname) + return CMakeSubproject(subp, dirname) @FeatureNew('subproject_options', '0.55.0') @noKwargs |