diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-03-04 08:24:08 -0800 |
|---|---|---|
| committer | Eli Schwartz <eschwartz93@gmail.com> | 2025-03-10 14:14:25 -0400 |
| commit | 251f74dcf3fea706ed373b717257f82592b6a1de (patch) | |
| tree | 5ee2906048dc2bb552be08e040d332e9dfc7d8fb | |
| parent | 4fa52925459dac650bf053715987ee7beb3b23c1 (diff) | |
| download | meson-251f74dcf3fea706ed373b717257f82592b6a1de.tar.gz | |
coredata: remove get_option_for_subproject
This is just a wrapper around `OptionStore.get_option_for`, but without
taking an `OptionKey`. This complicates the subproject passing, since
`OptionKey` is designed to encapsulate the option name and subproject.
| -rw-r--r-- | mesonbuild/compilers/compilers.py | 10 | ||||
| -rw-r--r-- | mesonbuild/compilers/cpp.py | 8 | ||||
| -rw-r--r-- | mesonbuild/compilers/cuda.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/elbrus.py | 6 | ||||
| -rw-r--r-- | mesonbuild/compilers/objc.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/objcpp.py | 4 | ||||
| -rw-r--r-- | mesonbuild/coredata.py | 8 |
7 files changed, 19 insertions, 25 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index f0744f80b..a73697cdd 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -280,10 +280,12 @@ def are_asserts_disabled(target: 'BuildTarget', env: 'Environment') -> bool: (env.coredata.get_option_for_target(target, 'b_ndebug') == 'if-release' and env.coredata.get_option_for_target(target, 'buildtype') in {'release', 'plain'})) + def are_asserts_disabled_for_subproject(subproject: str, env: 'Environment') -> bool: - return (env.coredata.get_option_for_subproject('b_ndebug', subproject) == 'true' or - (env.coredata.get_option_for_subproject('b_ndebug', subproject) == 'if-release' and - env.coredata.get_option_for_subproject('buildtype', subproject) in {'release', 'plain'})) + key = OptionKey('b_ndebug', subproject) + return (env.coredata.optstore.get_value_for(key) == 'true' or + (env.coredata.optstore.get_value_for(key) == 'if-release' and + env.coredata.optstore.get_value_for(key.evolve(name='buildtype')) in {'release', 'plain'})) def get_base_compile_args(target: 'BuildTarget', compiler: 'Compiler', env: 'Environment') -> T.List[str]: @@ -1400,7 +1402,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta): if target: return env.coredata.get_option_for_target(target, key) else: - return env.coredata.get_option_for_subproject(key, subproject) + return env.coredata.optstore.get_value_for(key.evolve(subproject=subproject)) def _update_language_stds(self, opts: MutableKeyedOptionDictType, value: T.List[str]) -> None: key = self.form_compileropt_key('std') diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index b21a62e44..cbb91e439 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -764,11 +764,11 @@ class VisualStudioLikeCPPCompilerMixin(CompilerMixinBase): def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]: # need a typeddict for this - key = self.form_compileropt_key('winlibs') + key = self.form_compileropt_key('winlibs').evolve(subproject=subproject) if target: value = env.coredata.get_option_for_target(target, key) else: - value = env.coredata.get_option_for_subproject(key, subproject) + value = env.coredata.optstore.get_value_for(key) return T.cast('T.List[str]', value)[:] def _get_options_impl(self, opts: 'MutableKeyedOptionDictType', cpp_stds: T.List[str]) -> 'MutableKeyedOptionDictType': @@ -845,11 +845,11 @@ class CPP11AsCPP14Mixin(CompilerMixinBase): # which means setting the C++ standard version to C++14, in compilers that support it # (i.e., after VS2015U3) # if one is using anything before that point, one cannot set the standard. - stdkey = self.form_compileropt_key('std') + stdkey = self.form_compileropt_key('std').evolve(subproject=subproject) if target is not None: std = env.coredata.get_option_for_target(target, stdkey) else: - std = env.coredata.get_option_for_subproject(stdkey, subproject) + std = env.coredata.optstore.get_value_for(stdkey) if std in {'vc++11', 'c++11'}: mlog.warning(self.id, 'does not support C++11;', 'attempting best effort; setting the standard to C++14', diff --git a/mesonbuild/compilers/cuda.py b/mesonbuild/compilers/cuda.py index 612643c8f..b67aa8715 100644 --- a/mesonbuild/compilers/cuda.py +++ b/mesonbuild/compilers/cuda.py @@ -794,11 +794,11 @@ class CudaCompiler(Compiler): target: 'T.Optional[BuildTarget]', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]: - key = self.form_compileropt_key('ccbindir') + key = self.form_compileropt_key('ccbindir').evolve(subproject=subproject) if target: ccbindir = env.coredata.get_option_for_target(target, key) else: - ccbindir = env.coredata.get_option_for_subproject(key, subproject) + ccbindir = env.coredata.optstore.get_value_for(key) if isinstance(ccbindir, str) and ccbindir != '': return [self._shield_nvcc_list_arg('-ccbin='+ccbindir, False)] else: diff --git a/mesonbuild/compilers/mixins/elbrus.py b/mesonbuild/compilers/mixins/elbrus.py index 4bf082627..eac68bd94 100644 --- a/mesonbuild/compilers/mixins/elbrus.py +++ b/mesonbuild/compilers/mixins/elbrus.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 -# Copyright © 2023-2024 Intel Corporation +# Copyright © 2023-2025 Intel Corporation from __future__ import annotations @@ -85,11 +85,11 @@ class ElbrusCompiler(GnuLikeCompiler): def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]: args: T.List[str] = [] - key = OptionKey(f'{self.language}_std', machine=self.for_machine) + key = OptionKey(f'{self.language}_std', subproject=subproject, machine=self.for_machine) if target: std = env.coredata.get_option_for_target(target, key) else: - std = env.coredata.get_option_for_subproject(key, subproject) + std = env.coredata.optstore.get_value_for(key) assert isinstance(std, str) if std != 'none': args.append('-std=' + std) diff --git a/mesonbuild/compilers/objc.py b/mesonbuild/compilers/objc.py index b133d47c4..776f5037d 100644 --- a/mesonbuild/compilers/objc.py +++ b/mesonbuild/compilers/objc.py @@ -78,11 +78,11 @@ class GnuObjCCompiler(GnuCStds, GnuCompiler, ObjCCompiler): def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]: args: T.List[str] = [] - key = OptionKey('c_std', machine=self.for_machine) + key = OptionKey('c_std', subproject=subproject, machine=self.for_machine) if target: std = env.coredata.get_option_for_target(target, key) else: - std = env.coredata.get_option_for_subproject(key, subproject) + std = env.coredata.optstore.get_value_for(key) assert isinstance(std, str) if std != 'none': args.append('-std=' + std) diff --git a/mesonbuild/compilers/objcpp.py b/mesonbuild/compilers/objcpp.py index 743bbb9cd..b38fdb60d 100644 --- a/mesonbuild/compilers/objcpp.py +++ b/mesonbuild/compilers/objcpp.py @@ -83,11 +83,11 @@ class GnuObjCPPCompiler(GnuCPPStds, GnuCompiler, ObjCPPCompiler): def get_option_compile_args(self, target: 'BuildTarget', env: 'Environment', subproject: T.Optional[str] = None) -> T.List[str]: args: T.List[str] = [] - key = OptionKey('cpp_std', machine=self.for_machine) + key = OptionKey('cpp_std', subproject=subproject, machine=self.for_machine) if target: std = env.coredata.get_option_for_target(target, key) else: - std = env.coredata.get_option_for_subproject(key, subproject) + std = env.coredata.optstore.get_value_for(key) assert isinstance(std, str) if std != 'none': args.append('-std=' + std) diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index f1286aa2e..6bf8705c5 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -414,14 +414,6 @@ class CoreData: return option_object.validate_value(override) return value - def get_option_for_subproject(self, key: T.Union[str, OptionKey], subproject) -> ElementaryOptionValues: - if isinstance(key, str): - key = OptionKey(key, subproject=subproject) - if key.subproject != subproject: - # This should be an error, fix before merging. - key = key.evolve(subproject=subproject) - return self.optstore.get_value_for(key) - def set_option(self, key: OptionKey, value, first_invocation: bool = False) -> bool: dirty = False try: |
