aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-02-03 21:30:44 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2018-02-07 22:10:04 +0200
commit0204895143d4aacf143be952f962dc47e415c187 (patch)
tree32da3b7f923358b8416f554317adb6dc20041661 /mesonbuild
parent20c1cb7d02f77ada1446b592d8915ec4945994e3 (diff)
downloadmeson-0204895143d4aacf143be952f962dc47e415c187.zip
meson-0204895143d4aacf143be952f962dc47e415c187.tar.gz
meson-0204895143d4aacf143be952f962dc47e415c187.tar.bz2
Expose integer options to build option files.
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,
}