aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
diff options
context:
space:
mode:
authorAleksey Gurtovoy <agurtovoy@acm.org>2019-09-06 12:31:26 -0500
committerDylan Baker <dylan@pnwbakers.com>2019-09-24 14:22:20 -0700
commit6ac5db50c901f172176b297d087e6123df497062 (patch)
treec57cab2ef12633b760ab0189539a932e3b465817 /mesonbuild/mesonlib.py
parent1670fca36fcb1a4fe4780e96731e954515501a35 (diff)
downloadmeson-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.py30
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