diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-06-20 13:51:00 -0400 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.com> | 2018-08-22 15:15:54 -0400 |
commit | fda99b08a4a23c39d9e063e8ecd6343f23105b38 (patch) | |
tree | 756d230e6f518e9052d5dc041b49a1d7c62d3ffc /mesonbuild/interpreter.py | |
parent | 05b54b4767ff9bd14f0c037d0c2b86447a077b66 (diff) | |
download | meson-fda99b08a4a23c39d9e063e8ecd6343f23105b38.zip meson-fda99b08a4a23c39d9e063e8ecd6343f23105b38.tar.gz meson-fda99b08a4a23c39d9e063e8ecd6343f23105b38.tar.bz2 |
interpreter: Simplify get_option_internal() and fix base option fallback
The fallback to compilers.base_options was done after optname is changed
to have subproject prefix. Simplify the code by looping over all
dictionaries and only keep user_options separate because that one is
special.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 707cf9e..377b178 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2279,21 +2279,19 @@ external dependencies (including libraries) must go to "dependencies".''') return self.subprojects[dirname] def get_option_internal(self, optname): + # Some base options are not defined in some environments, return the + # default value from compilers.base_options in that case. + for d in [self.coredata.base_options, compilers.base_options, + self.coredata.builtins, self.coredata.compiler_options]: + try: + return d[optname] + except KeyError: + pass + raw_optname = optname - try: - return self.coredata.base_options[optname] - except KeyError: - pass - try: - return self.coredata.builtins[optname] - except KeyError: - pass - try: - return self.coredata.compiler_options[optname] - except KeyError: - pass - if not coredata.is_builtin_option(optname) and self.is_subproject(): + if self.is_subproject(): optname = self.subproject + ':' + optname + try: opt = self.coredata.user_options[optname] if opt.yielding and ':' in optname and raw_optname in self.coredata.user_options: @@ -2313,11 +2311,7 @@ external dependencies (including libraries) must go to "dependencies".''') return opt except KeyError: pass - # Some base options are not defined in some environments, return the default value. - try: - return compilers.base_options[optname] - except KeyError: - pass + raise InterpreterException('Tried to access unknown option "%s".' % optname) @stringArgs |