aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mintro.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-12-04 16:09:10 -0800
committerDylan Baker <dylan@pnwbakers.com>2021-01-04 12:20:40 -0800
commit71db6b04a31707674ad776be1cf22f667056d56b (patch)
treeb62c0721557766ddc2034e740960d00a37cd9991 /mesonbuild/mintro.py
parentf9b19e73a5b87a2f3c8506cf19cfd5bbc468e938 (diff)
downloadmeson-71db6b04a31707674ad776be1cf22f667056d56b.zip
meson-71db6b04a31707674ad776be1cf22f667056d56b.tar.gz
meson-71db6b04a31707674ad776be1cf22f667056d56b.tar.bz2
use OptionKey for builtin and base options
I would have prefered to do these seperatately, but they are combined in some cases, so it was much easier to convert them together. this eliminates the builtins_per_machine dict, as it's duplicated with the OptionKey's machine parameter.
Diffstat (limited to 'mesonbuild/mintro.py')
-rw-r--r--mesonbuild/mintro.py38
1 files changed, 12 insertions, 26 deletions
diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py
index 7b2560f..b1d2831 100644
--- a/mesonbuild/mintro.py
+++ b/mesonbuild/mintro.py
@@ -33,7 +33,7 @@ import typing as T
import os
import argparse
-from .mesonlib import MachineChoice
+from .mesonlib import MachineChoice, OptionKey
def get_meson_info_file(info_dir: str) -> str:
return os.path.join(info_dir, 'meson-info.json')
@@ -213,24 +213,16 @@ def list_buildoptions_from_source(intr: IntrospectionInterpreter) -> T.List[T.Di
def list_buildoptions(coredata: cdata.CoreData, subprojects: T.Optional[T.List[str]] = None) -> T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]:
optlist = [] # type: T.List[T.Dict[str, T.Union[str, bool, int, T.List[str]]]]
- dir_option_names = list(cdata.BUILTIN_DIR_OPTIONS)
- test_option_names = ['errorlogs',
- 'stdsplit']
- core_option_names = [k for k in coredata.builtins if k not in dir_option_names + test_option_names]
-
- dir_options = {k: o for k, o in coredata.builtins.items() if k in dir_option_names}
- test_options = {k: o for k, o in coredata.builtins.items() if k in test_option_names}
- core_options = {k: o for k, o in coredata.builtins.items() if k in core_option_names}
-
- if subprojects:
- # Add per subproject built-in options
- sub_core_options = {}
- for sub in subprojects:
- for k, o in core_options.items():
- if o.yielding:
- continue
- sub_core_options[sub + ':' + k] = o
- core_options.update(sub_core_options)
+ dir_option_names = set(cdata.BUILTIN_DIR_OPTIONS)
+ test_option_names = {OptionKey('errorlogs'),
+ OptionKey('stdsplit')}
+ core_option_names = {k for k in coredata.builtins if k not in dir_option_names | test_option_names}
+
+ dir_options = {str(k): o for k, o in coredata.builtins.items() if k in dir_option_names}
+ test_options = {str(k): o for k, o in coredata.builtins.items() if k in test_option_names}
+ core_options = {str(k): o for k, o in coredata.builtins.items() if k in core_option_names}
+ for s in subprojects or []:
+ core_options.update({str(k.evolve(subproject=s)): v for k, v in coredata.builtins.items() if not v.yielding})
def add_keys(options: 'cdata.OptionDictType', section: str, machine: str = 'any') -> None:
for key, opt in sorted(options.items()):
@@ -253,14 +245,8 @@ def list_buildoptions(coredata: cdata.CoreData, subprojects: T.Optional[T.List[s
optlist.append(optdict)
add_keys(core_options, 'core')
- add_keys(coredata.builtins_per_machine.host, 'core', machine='host')
- add_keys(
- {'build.' + k: o for k, o in coredata.builtins_per_machine.build.items()},
- 'core',
- machine='build',
- )
add_keys({str(k): v for k, v in coredata.backend_options.items()}, 'backend')
- add_keys(coredata.base_options, 'base')
+ add_keys({str(k): v for k, v in coredata.base_options.items()}, 'base')
add_keys(
{str(k): v for k, v in coredata.compiler_options.items() if k.machine is MachineChoice.HOST},
'compiler',