diff options
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 15 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 2 | ||||
| -rw-r--r-- | mesonbuild/options.py | 2 |
3 files changed, 11 insertions, 8 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index abdc8899d..27e682edb 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -296,9 +296,8 @@ class Interpreter(InterpreterBase, HoldableObject): self.configure_file_outputs: T.Dict[str, int] = {} # Passed from the outside, only used in subprojects. if default_project_options: - self.default_project_options = default_project_options if isinstance(default_project_options, str) else default_project_options.copy() - if isinstance(default_project_options, dict): - pass + assert isinstance(default_project_options, dict) + self.default_project_options = default_project_options else: self.default_project_options = {} self.project_default_options: T.List[str] = [] @@ -878,6 +877,10 @@ class Interpreter(InterpreterBase, HoldableObject): return self.disabled_subproject(subp_name, disabled_feature=feature) default_options = kwargs['default_options'] + if isinstance(default_options, str): + default_options = [default_options] + if isinstance(default_options, list): + default_options = dict((x.split('=', 1) for x in default_options)) if subp_name == '': raise InterpreterException('Subproject name must not be empty.') @@ -952,7 +955,7 @@ class Interpreter(InterpreterBase, HoldableObject): raise e def _do_subproject_meson(self, subp_name: str, subdir: str, - default_options: T.List[str], + default_options: T.Dict[str, options.ElementaryOptionValues], kwargs: kwtypes.DoSubproject, ast: T.Optional[mparser.CodeBlockNode] = None, build_def_files: T.Optional[T.List[str]] = None, @@ -1012,7 +1015,7 @@ class Interpreter(InterpreterBase, HoldableObject): return self.subprojects[subp_name] def _do_subproject_cmake(self, subp_name: str, subdir: str, - default_options: T.List[str], + default_options: T.Dict[str, options.ElementaryOptionValues], kwargs: kwtypes.DoSubproject) -> SubprojectHolder: from ..cmake import CMakeInterpreter with mlog.nested(subp_name): @@ -1039,7 +1042,7 @@ class Interpreter(InterpreterBase, HoldableObject): return result def _do_subproject_cargo(self, subp_name: str, subdir: str, - default_options: T.List[str], + default_options: T.Dict[str, options.ElementaryOptionValues], kwargs: kwtypes.DoSubproject) -> SubprojectHolder: from .. import cargo FeatureNew.single_use('Cargo subproject', '1.3.0', self.subproject, location=self.current_node) diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index fb34bbbce..d741aabc5 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -321,7 +321,7 @@ class Subproject(ExtractRequired): class DoSubproject(ExtractRequired): - default_options: T.List[str] + default_options: T.Union[T.List[str], T.Dict[str, options.ElementaryOptionValues], str] version: T.List[str] cmake_options: T.List[str] options: T.Optional[CMakeSubprojectOptions] diff --git a/mesonbuild/options.py b/mesonbuild/options.py index 594aaf940..f897916c7 100644 --- a/mesonbuild/options.py +++ b/mesonbuild/options.py @@ -1401,7 +1401,7 @@ class OptionStore: def initialize_from_subproject_call(self, subproject: str, - spcall_default_options_in: T.Union[T.List[str], OptionStringLikeDict], + spcall_default_options_in: OptionStringLikeDict, project_default_options_in: T.Union[T.List[str], OptionStringLikeDict], cmd_line_options: OptionStringLikeDict) -> None: is_first_invocation = True |
