Use toplevel key when sp-specific one does not exist.
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index 49b84b9..bfa160b 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py
@@ -582,6 +582,9 @@ except KeyError: pass + if key.subproject: + # Per-subproject option was not found, try the top level one. + return self.get_option(key.toplevel_key()) raise MesonException(f'Tried to get unknown builtin option {str(key)}') def set_option(self, key: OptionKey, value) -> None:
diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py index 318b365..fbb3a00 100644 --- a/mesonbuild/mesonlib/universal.py +++ b/mesonbuild/mesonlib/universal.py
@@ -1976,6 +1976,11 @@ _type = _classify_argument(self) object.__setattr__(self, 'type', _type) + def toplevel_key(self): + if not self.subproject: + raise RuntimeError("Internal error: tried to get top level option for a top level option.") + return OptionKey(self.name, '', self.machine, self.lang, self.type) + def __setattr__(self, key: str, value: T.Any) -> None: raise AttributeError('OptionKey instances do not support mutation.')