diff options
author | Aleksey Gurtovoy <agurtovoy@acm.org> | 2019-09-06 12:31:26 -0500 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2019-09-24 14:22:20 -0700 |
commit | 6ac5db50c901f172176b297d087e6123df497062 (patch) | |
tree | c57cab2ef12633b760ab0189539a932e3b465817 /mesonbuild/mesonlib.py | |
parent | 1670fca36fcb1a4fe4780e96731e954515501a35 (diff) | |
download | meson-6ac5db50c901f172176b297d087e6123df497062.zip meson-6ac5db50c901f172176b297d087e6123df497062.tar.gz meson-6ac5db50c901f172176b297d087e6123df497062.tar.bz2 |
CUDA support on Windows
Diffstat (limited to 'mesonbuild/mesonlib.py')
-rw-r--r-- | mesonbuild/mesonlib.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index 03fbf02..5df7311 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -1495,3 +1495,33 @@ def get_wine_shortpath(winecmd, wine_paths): len(wine_path))) return wine_path.strip(';') + + +class OptionProxy: + def __init__(self, value): + self.value = value + +class OptionOverrideProxy: + '''Mimic an option list but transparently override + selected option values.''' + def __init__(self, overrides, *options): + self.overrides = overrides + self.options = options + + def __getitem__(self, option_name): + for opts in self.options: + if option_name in opts: + return self._get_override(option_name, opts[option_name]) + raise KeyError('Option not found', option_name) + + def _get_override(self, option_name, base_opt): + if option_name in self.overrides: + return OptionProxy(base_opt.validate_value(self.overrides[option_name])) + return base_opt + + def copy(self): + result = {} + for opts in self.options: + for option_name in opts: + result[option_name] = self._get_override(option_name, opts[option_name]) + return result |