From fe973d9fc45581f20fefc41fc0b8eb0066c0129d Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 2 Dec 2020 16:02:03 -0800 Subject: use OptionKey for compiler_options --- mesonbuild/cmake/interpreter.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mesonbuild/cmake/interpreter.py') diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index d4f7fba..6125f15 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -31,6 +31,7 @@ from pathlib import Path import typing as T import re from os import environ +from ..coredata import OptionKey from ..mparser import ( Token, @@ -577,10 +578,10 @@ class ConverterTarget: @lru_cache(maxsize=None) def _all_lang_stds(self, lang: str) -> T.List[str]: - lang_opts = self.env.coredata.compiler_options.build.get(lang, None) - if not lang_opts or 'std' not in lang_opts: + try: + res = self.env.coredata.compiler_options[OptionKey('std', machine=MachineChoice.BUILD, lang=lang)].choices # type: ignore + except KeyError: return [] - res = lang_opts['std'].choices # TODO: Get rid of this once we have propper typing for options assert isinstance(res, list) -- cgit v1.1 From f9b19e73a5b87a2f3c8506cf19cfd5bbc468e938 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Thu, 3 Dec 2020 11:37:52 -0800 Subject: move OptionKey to mesonlib There's starting to be a lot of things including coredata that coredata needs to itself include. putting it in mesonlib makes more sense --- mesonbuild/cmake/interpreter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'mesonbuild/cmake/interpreter.py') diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 6125f15..5931fd1 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -22,7 +22,7 @@ from .executor import CMakeExecutor from .toolchain import CMakeToolchain, CMakeExecScope from .traceparser import CMakeTraceParser, CMakeGeneratorTarget from .. import mlog, mesonlib -from ..mesonlib import MachineChoice, OrderedSet, version_compare, path_is_in_root, relative_to_if_possible +from ..mesonlib import MachineChoice, OrderedSet, version_compare, path_is_in_root, relative_to_if_possible, OptionKey from ..mesondata import mesondata from ..compilers.compilers import lang_suffixes, header_suffixes, obj_suffixes, lib_suffixes, is_header from enum import Enum @@ -31,7 +31,6 @@ from pathlib import Path import typing as T import re from os import environ -from ..coredata import OptionKey from ..mparser import ( Token, -- cgit v1.1 From 71db6b04a31707674ad776be1cf22f667056d56b Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Fri, 4 Dec 2020 16:09:10 -0800 Subject: 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. --- mesonbuild/cmake/interpreter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mesonbuild/cmake/interpreter.py') diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 5931fd1..5d2dd7f 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -578,7 +578,7 @@ class ConverterTarget: @lru_cache(maxsize=None) def _all_lang_stds(self, lang: str) -> T.List[str]: try: - res = self.env.coredata.compiler_options[OptionKey('std', machine=MachineChoice.BUILD, lang=lang)].choices # type: ignore + res = self.env.coredata.compiler_options[OptionKey('std', machine=MachineChoice.BUILD, lang=lang)].choices except KeyError: return [] -- cgit v1.1 From e81acbd6069e8c1ae8e3be7bb83ddc239009d42d Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Fri, 4 Dec 2020 17:01:45 -0800 Subject: Use a single coredata dictionary for options This patches takes the options work to it's logical conclusion: A single flat dictionary of OptionKey: UserOptions. This allows us to simplify a large number of cases, as we don't need to check if an option is in this dict or that one (or any of 5 or 6, actually). --- mesonbuild/cmake/interpreter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mesonbuild/cmake/interpreter.py') diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 5d2dd7f..e73dcf9 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -362,7 +362,7 @@ class ConverterTarget: cfgs += [x for x in tgt.properties['CONFIGURATIONS'] if x] cfg = cfgs[0] - is_debug = self.env.coredata.get_builtin_option('debug'); + is_debug = self.env.coredata.get_option(OptionKey('debug')); if is_debug: if 'DEBUG' in cfgs: cfg = 'DEBUG' @@ -578,7 +578,7 @@ class ConverterTarget: @lru_cache(maxsize=None) def _all_lang_stds(self, lang: str) -> T.List[str]: try: - res = self.env.coredata.compiler_options[OptionKey('std', machine=MachineChoice.BUILD, lang=lang)].choices + res = self.env.coredata.options[OptionKey('std', machine=MachineChoice.BUILD, lang=lang)].choices except KeyError: return [] -- cgit v1.1