[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/30] meson: use .require() and .disable_auto_if() method for fea
From: |
Paolo Bonzini |
Subject: |
[PULL 05/30] meson: use .require() and .disable_auto_if() method for features |
Date: |
Tue, 15 Feb 2022 10:31:58 +0100 |
The method is now in 0.59, using it simplifies some conditionals.
There is a small change, which is to build virtfs-proxy-helper in a
tools-only build. This is done for consistency with other tools,
which are not culled by the absence of system emulator binaries.
.disable_auto_if() would also be useful to check for packages,
for example
-linux_io_uring = not_found
-if not get_option('linux_io_uring').auto() or have_block
- linux_io_uring = dependency('liburing', required:
get_option('linux_io_uring'),
- method: 'pkg-config', kwargs: static_kwargs)
-endif
+linux_io_uring = dependency('liburing',
+ required: get_option('linux_io_uring').disable_auto_if(not have_block),
+ method: 'pkg-config', kwargs: static_kwargs)
This change however is much larger and I am not sure about the improved
readability, so I am not performing it right now.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 74 ++++++++++++++++++-----------------------------
tools/meson.build | 31 ++++++--------------
2 files changed, 37 insertions(+), 68 deletions(-)
diff --git a/meson.build b/meson.build
index af136b780d..15dfd66a3e 100644
--- a/meson.build
+++ b/meson.build
@@ -269,14 +269,12 @@ if 'syslog' in get_option('trace_backends') and not
cc.compiles('''
endif
# Miscellaneous Linux-only features
-if targetos != 'linux' and get_option('mpath').enabled()
- error('Multipath is supported only on Linux')
-endif
+get_option('mpath') \
+ .require(targetos == 'linux', error_message: 'Multipath is supported only on
Linux')
-if targetos != 'linux' and get_option('multiprocess').enabled()
- error('Multiprocess QEMU is supported only on Linux')
-endif
-multiprocess_allowed = targetos == 'linux' and
get_option('multiprocess').allowed()
+multiprocess_allowed = get_option('multiprocess') \
+ .require(targetos == 'linux', error_message: 'Multiprocess QEMU is supported
only on Linux') \
+ .allowed()
# Target-specific libraries and flags
libm = cc.find_library('m', required: false)
@@ -1268,19 +1266,13 @@ statx_test = gnu_source_prefix + '''
has_statx = cc.links(statx_test)
-have_vhost_user_blk_server = (targetos == 'linux' and
- 'CONFIG_VHOST_USER' in config_host)
-
-if get_option('vhost_user_blk_server').enabled()
- if targetos != 'linux'
- error('vhost_user_blk_server requires linux')
- elif 'CONFIG_VHOST_USER' not in config_host
- error('vhost_user_blk_server requires vhost-user support')
- endif
-elif get_option('vhost_user_blk_server').disabled() or not have_system
- have_vhost_user_blk_server = false
-endif
-
+have_vhost_user_blk_server = get_option('vhost_user_blk_server') \
+ .require(targetos == 'linux',
+ error_message: 'vhost_user_blk_server requires linux') \
+ .require('CONFIG_VHOST_USER' in config_host,
+ error_message: 'vhost_user_blk_server requires vhost-user support')
\
+ .disable_auto_if(not have_system) \
+ .allowed()
if get_option('fuse').disabled() and get_option('fuse_lseek').enabled()
error('Cannot enable fuse-lseek while fuse is disabled')
@@ -1407,36 +1399,26 @@ endif
have_host_block_device = (targetos != 'darwin' or
cc.has_header('IOKit/storage/IOMedia.h'))
-dbus_display = false
-if not get_option('dbus_display').disabled()
- # FIXME enable_modules shouldn't be necessary, but:
https://github.com/mesonbuild/meson/issues/8333
- dbus_display = gio.version().version_compare('>=2.64') and
config_host.has_key('GDBUS_CODEGEN') and enable_modules
- if get_option('dbus_display').enabled() and not dbus_display
- error('Requirements missing to enable -display dbus (glib>=2.64 &&
--enable-modules)')
- endif
-endif
+# FIXME enable_modules shouldn't be necessary, but:
https://github.com/mesonbuild/meson/issues/8333
+dbus_display = get_option('dbus_display') \
+ .require(gio.version().version_compare('>=2.64'),
+ error_message: '-display dbus requires glib>=2.64') \
+ .require(enable_modules,
+ error_message: '-display dbus requires --enable-modules') \
+ .require(config_host.has_key('GDBUS_CODEGEN'),
+ error_message: '-display dbus requires gdbus-codegen') \
+ .allowed()
-have_virtfs = (targetos == 'linux' and
- have_system and
- libattr.found() and
- libcap_ng.found())
+have_virtfs = get_option('virtfs') \
+ .require(targetos == 'linux',
+ error_message: 'virtio-9p (virtfs) requires Linux') \
+ .require(libattr.found() and libcap_ng.found(),
+ error_message: 'virtio-9p (virtfs) requires libcap-ng-devel and
libattr-devel') \
+ .disable_auto_if(not have_tools and not have_system) \
+ .allowed()
have_virtfs_proxy_helper = have_virtfs and have_tools
-if get_option('virtfs').enabled()
- if not have_virtfs
- if targetos != 'linux'
- error('virtio-9p (virtfs) requires Linux')
- elif not libcap_ng.found() or not libattr.found()
- error('virtio-9p (virtfs) requires libcap-ng-devel and libattr-devel')
- elif not have_system
- error('virtio-9p (virtfs) needs system emulation support')
- endif
- endif
-elif get_option('virtfs').disabled()
- have_virtfs = false
-endif
-
foreach k : get_option('trace_backends')
config_host_data.set('CONFIG_TRACE_' + k.to_upper(), true)
endforeach
diff --git a/tools/meson.build b/tools/meson.build
index 3e5a0abfa2..46977af84f 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -1,25 +1,12 @@
-have_virtiofsd = (targetos == 'linux' and
- have_tools and
- seccomp.found() and
- libcap_ng.found() and
- 'CONFIG_VHOST_USER' in config_host)
-
-if get_option('virtiofsd').enabled()
- if not have_virtiofsd
- if targetos != 'linux'
- error('virtiofsd requires Linux')
- elif not seccomp.found() or not libcap_ng.found()
- error('virtiofsd requires libcap-ng-devel and seccomp-devel')
- elif 'CONFIG_VHOST_USER' not in config_host
- error('virtiofsd needs vhost-user support')
- else
- # Disabled all the tools but virtiofsd.
- have_virtiofsd = true
- endif
- endif
-elif get_option('virtiofsd').disabled() or not have_system
- have_virtiofsd = false
-endif
+have_virtiofsd = get_option('virtiofsd') \
+ .require(targetos == 'linux',
+ error_message: 'virtiofsd requires Linux') \
+ .require(seccomp.found() and libcap_ng.found(),
+ error_message: 'virtiofsd requires libcap-ng-devel and
seccomp-devel') \
+ .require('CONFIG_VHOST_USER' in config_host,
+ error_message: 'virtiofsd needs vhost-user-support') \
+ .disable_auto_if(not have_tools and not have_system) \
+ .allowed()
if have_virtiofsd
subdir('virtiofsd')
--
2.34.1
- [PULL 00/30] Misc mostly build system patches for 2022-02-15, Paolo Bonzini, 2022/02/15
- [PULL 01/30] target/i386: add TCG support for UMIP, Paolo Bonzini, 2022/02/15
- [PULL 03/30] tests/qemu-iotests/testrunner: Print diff to stderr in TAP mode, Paolo Bonzini, 2022/02/15
- [PULL 04/30] meson: use .allowed() method for features, Paolo Bonzini, 2022/02/15
- [PULL 05/30] meson: use .require() and .disable_auto_if() method for features,
Paolo Bonzini <=
- [PULL 02/30] memory: Fix qemu crash on starting dirty log twice with stopped VM, Paolo Bonzini, 2022/02/15
- [PULL 06/30] configure, meson: move AVX tests to meson, Paolo Bonzini, 2022/02/15
- [PULL 08/30] configure, meson: move AF_ALG test to meson, Paolo Bonzini, 2022/02/15
- [PULL 09/30] configure, meson: move libnuma detection to meson, Paolo Bonzini, 2022/02/15
- [PULL 10/30] configure, meson: move TPM check to meson, Paolo Bonzini, 2022/02/15
- [PULL 07/30] configure, meson: move membarrier test to meson, Paolo Bonzini, 2022/02/15
- [PULL 12/30] configure, meson: move image format options to meson_options.txt, Paolo Bonzini, 2022/02/15
- [PULL 11/30] configure, meson: cleanup qemu-ga libraries, Paolo Bonzini, 2022/02/15
- [PULL 15/30] configure, meson: move some default-disabled options to meson_options.txt, Paolo Bonzini, 2022/02/15
- [PULL 14/30] meson: define qemu_cflags/qemu_ldflags, Paolo Bonzini, 2022/02/15