summaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreterobjects.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-02-22 17:19:48 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2021-05-31 16:01:57 +0200
commit08a8043f1916cb2a337b93b6b6d600df9af6ecb7 (patch)
tree755610159fe1fb03430842492db81cbf6dbd38c2 /mesonbuild/interpreter/interpreterobjects.py
parent6aef800ba83a4dd469c354900b6e537777d3080c (diff)
downloadmeson-08a8043f1916cb2a337b93b6b6d600df9af6ecb7.tar.gz
interpreter: add feature.allowed()
This method simplifies the conversion of Feature objects to booleans. Often, one has to use the "not" operator in order to treat "auto" and "enabled" the same way. "allowed()" also works well in conjunction with the require method that is introduced in the next patch. For example, if get_option('foo').require(host_machine.system() == 'windows').allowed() then src += ['foo.c'] config.set10('HAVE_FOO', 1) endif can be used instead of if host_machine.system() != 'windows' if get_option('foo').enabled() error('...') endif endif if not get_option('foo').disabled() then src += ['foo.c'] config.set10('HAVE_FOO', 1) endif Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/interpreter/interpreterobjects.py')
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index c70b8b5a1..5a37b48a7 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -72,6 +72,7 @@ class FeatureOptionHolder(InterpreterObject, ObjectHolder[coredata.UserFeatureOp
self.name = name
self.methods.update({'enabled': self.enabled_method,
'disabled': self.disabled_method,
+ 'allowed': self.allowed_method,
'auto': self.auto_method,
})
@@ -87,6 +88,11 @@ class FeatureOptionHolder(InterpreterObject, ObjectHolder[coredata.UserFeatureOp
@noPosargs
@permittedKwargs({})
+ def allowed_method(self, args, kwargs):
+ return not self.held_object.is_disabled()
+
+ @noPosargs
+ @permittedKwargs({})
def auto_method(self, args, kwargs):
return self.held_object.is_auto()