diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2021-02-22 17:19:48 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-05-31 16:01:57 +0200 |
commit | 08a8043f1916cb2a337b93b6b6d600df9af6ecb7 (patch) | |
tree | 755610159fe1fb03430842492db81cbf6dbd38c2 /mesonbuild/interpreter/interpreterobjects.py | |
parent | 6aef800ba83a4dd469c354900b6e537777d3080c (diff) | |
download | meson-08a8043f1916cb2a337b93b6b6d600df9af6ecb7.zip meson-08a8043f1916cb2a337b93b6b6d600df9af6ecb7.tar.gz meson-08a8043f1916cb2a337b93b6b6d600df9af6ecb7.tar.bz2 |
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.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py index c70b8b5..5a37b48 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() |