diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-12-04 16:09:10 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-01-04 12:20:40 -0800 |
commit | 71db6b04a31707674ad776be1cf22f667056d56b (patch) | |
tree | b62c0721557766ddc2034e740960d00a37cd9991 /mesonbuild/mintro.py | |
parent | f9b19e73a5b87a2f3c8506cf19cfd5bbc468e938 (diff) | |
download | meson-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.py | 38 |
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', |