aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/coredata.py8
-rw-r--r--mesonbuild/mintro.py2
-rw-r--r--mesonbuild/optinterpreter.py11
3 files changed, 20 insertions, 1 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index 0fdac8b..c96a09e 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -80,10 +80,16 @@ class UserBooleanOption(UserOption):
class UserIntegerOption(UserOption):
def __init__(self, name, description, min_value, max_value, value):
- super().__init__(name, description, [True, False])
+ super().__init__(name, description, None)
self.min_value = min_value
self.max_value = max_value
self.set_value(value)
+ c = []
+ if min_value is not None:
+ c.append('>=' + str(min_value))
+ if max_value is not None:
+ c.append('<=' + str(max_value))
+ self.choices = ', '.join(c)
def set_value(self, newvalue):
if isinstance(newvalue, str):
diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py
index aaaf8fc..8cf66af 100644
--- a/mesonbuild/mintro.py
+++ b/mesonbuild/mintro.py
@@ -139,6 +139,8 @@ def add_keys(optlist, options):
elif isinstance(opt, coredata.UserComboOption):
optdict['choices'] = opt.choices
typestr = 'combo'
+ elif isinstance(opt, coredata.UserIntegerOption):
+ typestr = 'integer'
elif isinstance(opt, coredata.UserArrayOption):
typestr = 'array'
else:
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py
index df945ab..7eeaa48 100644
--- a/mesonbuild/optinterpreter.py
+++ b/mesonbuild/optinterpreter.py
@@ -85,6 +85,16 @@ def ComboParser(name, description, kwargs):
raise OptionException('Combo choice elements must be strings.')
return coredata.UserComboOption(name, description, choices, kwargs.get('value', choices[0]))
+@permitted_kwargs({'value', 'min', 'max'})
+def IntegerParser(name, description, kwargs):
+ if 'value' not in kwargs:
+ raise OptionException('Integer option must contain value argument.')
+ return coredata.UserIntegerOption(name,
+ description,
+ kwargs.get('min', None),
+ kwargs.get('max', None),
+ kwargs['value'])
+
@permitted_kwargs({'value', 'choices'})
def string_array_parser(name, description, kwargs):
if 'choices' in kwargs:
@@ -105,6 +115,7 @@ def string_array_parser(name, description, kwargs):
option_types = {'string': StringParser,
'boolean': BooleanParser,
'combo': ComboParser,
+ 'integer': IntegerParser,
'array': string_array_parser,
}