[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/30] configure, meson: move membarrier test to meson
From: |
Paolo Bonzini |
Subject: |
[PULL 07/30] configure, meson: move membarrier test to meson |
Date: |
Tue, 15 Feb 2022 10:32:00 +0100 |
The test is a bit different from the others, in that it does not run
if $membarrier is empty. For meson, the default can simply be disabled;
if one day we will toggle the default, no change is needed in meson.build.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 40 -----------------------------------
meson.build | 22 ++++++++++++++++++-
meson_options.txt | 6 ++++++
scripts/meson-buildoptions.sh | 3 +++
util/meson.build | 4 +++-
5 files changed, 33 insertions(+), 42 deletions(-)
diff --git a/configure b/configure
index a6a577277f..c49797012d 100755
--- a/configure
+++ b/configure
@@ -290,7 +290,6 @@ EXTRA_CXXFLAGS=""
EXTRA_LDFLAGS=""
xen_ctrl_version="$default_feature"
-membarrier="$default_feature"
vhost_kernel="$default_feature"
vhost_net="$default_feature"
vhost_crypto="$default_feature"
@@ -967,10 +966,6 @@ for opt do
;;
--enable-fdt=*) fdt="$optarg"
;;
- --disable-membarrier) membarrier="no"
- ;;
- --enable-membarrier) membarrier="yes"
- ;;
--with-pkgversion=*) pkgversion="$optarg"
;;
--with-coroutine=*) coroutine="$optarg"
@@ -1382,7 +1377,6 @@ cat << EOF
lto Enable Link-Time Optimization.
safe-stack SafeStack Stack Smash Protection. Depends on
clang/llvm >= 3.7 and requires coroutine backend ucontext.
- membarrier membarrier system call (for Linux 4.14+ or Windows)
rdma Enable RDMA-based migration
pvrdma Enable PVRDMA support
vhost-net vhost-net kernel acceleration support
@@ -2823,37 +2817,6 @@ if test "$fortify_source" != "no"; then
fi
fi
-##########################################
-# check for usable membarrier system call
-if test "$membarrier" = "yes"; then
- have_membarrier=no
- if test "$mingw32" = "yes" ; then
- have_membarrier=yes
- elif test "$linux" = "yes" ; then
- cat > $TMPC << EOF
- #include <linux/membarrier.h>
- #include <sys/syscall.h>
- #include <unistd.h>
- #include <stdlib.h>
- int main(void) {
- syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
- syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
- exit(0);
- }
-EOF
- if compile_prog "" "" ; then
- have_membarrier=yes
- fi
- fi
- if test "$have_membarrier" = "no"; then
- feature_not_found "membarrier" "membarrier system call not available"
- fi
-else
- # Do not enable it by default even for Mingw32, because it doesn't
- # work on Wine.
- membarrier=no
-fi
-
##########################################
# check for usable AF_ALG environment
have_afalg=no
@@ -3315,9 +3278,6 @@ fi
if test "$vhost_user_fs" = "yes" ; then
echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
fi
-if test "$membarrier" = "yes" ; then
- echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
-fi
if test "$tcg" = "enabled" -a "$tcg_interpreter" = "true" ; then
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
fi
diff --git a/meson.build b/meson.build
index 7a262051b7..6dc38a7916 100644
--- a/meson.build
+++ b/meson.build
@@ -1808,6 +1808,26 @@ config_host_data.set('CONFIG_AVX512F_OPT',
get_option('avx512f') \
int main(int argc, char *argv[]) { return bar(argv[0]); }
'''), error_message: 'AVX512F not available').allowed())
+if get_option('membarrier').disabled()
+ have_membarrier = false
+elif targetos == 'windows'
+ have_membarrier = true
+elif targetos == 'linux'
+ have_membarrier = cc.compiles('''
+ #include <linux/membarrier.h>
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+ int main(void) {
+ syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
+ syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
+ exit(0);
+ }''')
+endif
+config_host_data.set('CONFIG_MEMBARRIER', get_option('membarrier') \
+ .require(have_membarrier, error_message: 'membarrier system call not
available') \
+ .allowed())
+
config_host_data.set('CONFIG_AF_VSOCK', cc.compiles(gnu_source_prefix + '''
#include <errno.h>
#include <sys/types.h>
@@ -3331,7 +3351,7 @@ summary_info += {'link-time optimization (LTO)':
get_option('b_lto')}
summary_info += {'PIE': get_option('b_pie')}
summary_info += {'static build': config_host.has_key('CONFIG_STATIC')}
summary_info += {'malloc trim support': has_malloc_trim}
-summary_info += {'membarrier': config_host.has_key('CONFIG_MEMBARRIER')}
+summary_info += {'membarrier': have_membarrier}
summary_info += {'debug stack usage':
config_host.has_key('CONFIG_DEBUG_STACK_USAGE')}
summary_info += {'mutex debugging':
config_host.has_key('CONFIG_DEBUG_MUTEX')}
summary_info += {'memory allocator': get_option('malloc')}
diff --git a/meson_options.txt b/meson_options.txt
index 6ff349023c..49f14f960e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -68,6 +68,12 @@ option('multiprocess', type: 'feature', value: 'auto',
description: 'Out of process device emulation support')
option('dbus_display', type: 'feature', value: 'auto',
description: '-display dbus support')
+
+# Do not enable it by default even for Mingw32, because it doesn't
+# work on Wine.
+option('membarrier', type: 'feature', value: 'disabled',
+ description: 'membarrier system call (for Linux 4.14+ or Windows')
+
option('avx2', type: 'feature', value: 'auto',
description: 'AVX2 optimizations')
option('avx512f', type: 'feature', value: 'disabled',
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index dcfc39ec6b..c204ede02b 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -65,6 +65,7 @@ meson_options_help() {
printf "%s\n" ' lzfse lzfse support for DMG images'
printf "%s\n" ' lzo lzo compression support'
printf "%s\n" ' malloc-trim enable libc malloc_trim() for memory
optimization'
+ printf "%s\n" ' membarrier membarrier system call (for Linux 4.14+ or
Windows'
printf "%s\n" ' mpath Multipath persistent reservation
passthrough'
printf "%s\n" ' multiprocess Out of process device emulation support'
printf "%s\n" ' netmap netmap network backend support'
@@ -204,6 +205,8 @@ _meson_option_parse() {
--enable-malloc=*) quote_sh "-Dmalloc=$2" ;;
--enable-malloc-trim) printf "%s" -Dmalloc_trim=enabled ;;
--disable-malloc-trim) printf "%s" -Dmalloc_trim=disabled ;;
+ --enable-membarrier) printf "%s" -Dmembarrier=enabled ;;
+ --disable-membarrier) printf "%s" -Dmembarrier=disabled ;;
--enable-mpath) printf "%s" -Dmpath=enabled ;;
--disable-mpath) printf "%s" -Dmpath=disabled ;;
--enable-multiprocess) printf "%s" -Dmultiprocess=enabled ;;
diff --git a/util/meson.build b/util/meson.build
index c9a9cc1cf5..3736988b9f 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -35,7 +35,9 @@ util_ss.add(files('crc32c.c'))
util_ss.add(files('uuid.c'))
util_ss.add(files('getauxval.c'))
util_ss.add(files('rcu.c'))
-util_ss.add(when: 'CONFIG_MEMBARRIER', if_true: files('sys_membarrier.c'))
+if have_membarrier
+ util_ss.add(files('sys_membarrier.c'))
+endif
util_ss.add(files('log.c'))
util_ss.add(files('pagesize.c'))
util_ss.add(files('qdist.c'))
--
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, 2022/02/15
- [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 <=
- [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
- [PULL 13/30] configure, meson: move block layer options to meson_options.txt, Paolo Bonzini, 2022/02/15
- [PULL 16/30] configure, meson: move coroutine options to meson_options.txt, Paolo Bonzini, 2022/02/15
- [PULL 21/30] qga/vss-win32: fix midl arguments, Paolo Bonzini, 2022/02/15
- [PULL 20/30] configure, meson: move OpenGL check to meson, Paolo Bonzini, 2022/02/15
- [PULL 17/30] configure, meson: move smbd options to meson_options.txt, Paolo Bonzini, 2022/02/15
- [PULL 18/30] configure, meson: move guest-agent, tools to meson, Paolo Bonzini, 2022/02/15