* [PATCH v2 0/5] Use meson_options.txt in the configure script
@ 2021-09-03 8:13 Thomas Huth
2021-09-03 8:13 ` [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt Thomas Huth
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
It's cumbersome to maintain the build options twice, one time in the
configure script and one time in meson_options.txt. Thus let's add some
logic to the configure script to look at the meson_options.txt file
instead of handling every option twice.
Note: Unlike Paolo's earlier version (which can bee found on
https://patchew.org/QEMU/20210107140039.467969-1-pbonzini@redhat.com/ ),
this version only uses some lines of shell code to parse meson_options.txt
instead of adding an additional Python or Perl script. It's likely not
as robust as Paolo's version, but it's way smaller and has a way nicer
diffstat.
v2:
- Improved shell code according to the suggestions of Eric
- Split the vnc change into a separate patch
- Add a comment to meson_options.txt in the new final patch
Thomas Huth (5):
configure: Add the possibility to read options from meson_options.txt
meson_options.txt: Switch the default value for the vnc option to
'auto'
configure: Remove options that can be handled via meson_options.txt
instead
configure: Get help text from meson_options.txt
meson_options.txt: Document that "configure" reads this file, too
configure | 435 +++++++---------------------------------------
meson_options.txt | 8 +-
2 files changed, 65 insertions(+), 378 deletions(-)
--
2.27.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
@ 2021-09-03 8:13 ` Thomas Huth
2021-09-03 17:09 ` Eric Blake
2021-09-03 8:13 ` [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto' Thomas Huth
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
To avoid double maintenance between the configure script and
meson_options.txt, add some simple logic in the configure script
to read the options from meson_options.txt.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
configure | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/configure b/configure
index 9a79a004d7..528e9c80c5 100755
--- a/configure
+++ b/configure
@@ -836,6 +836,8 @@ fi
werror=""
+meson_options=""
+
for opt do
optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
case "$opt" in
@@ -1581,6 +1583,26 @@ for opt do
;;
--disable-slirp-smbd) slirp_smbd=no
;;
+ --enable-*)
+ arg=$(printf %s\\n "$opt" | sed -e "s/--enable-//" -e "s/-/_/g")
+ if ! grep -q "option('$arg', type[ ]*: 'feature'" \
+ $source_path/meson_options.txt; then
+ printf "ERROR: unknown option %s\n" "$opt"
+ printf "Try '%s --help' for more information\n" "$0"
+ exit 1
+ fi
+ meson_options="$meson_options -D$arg=enabled"
+ ;;
+ --disable-*)
+ arg=$(printf %s\\n "$opt" | sed -e "s/--disable-//" -e "s/-/_/g")
+ if ! grep -q "option('$arg', type[ ]*: 'feature'" \
+ $source_path/meson_options.txt; then
+ printf "ERROR: unknown option %s\n" "$opt"
+ printf "Try '%s --help' for more information\n" "$0"
+ exit 1
+ fi
+ meson_options="$meson_options -D$arg=disabled"
+ ;;
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
@@ -5211,7 +5233,7 @@ if test "$skip_meson" = no; then
-Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
$(if test "$default_feature" = no; then echo "-Dauto_features=disabled"; fi) \
- -Dtcg_interpreter=$tcg_interpreter \
+ -Dtcg_interpreter=$tcg_interpreter $meson_options \
$cross_arg \
"$PWD" "$source_path"
--
2.27.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto'
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
2021-09-03 8:13 ` [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt Thomas Huth
@ 2021-09-03 8:13 ` Thomas Huth
2021-09-03 17:18 ` Eric Blake
2021-09-28 9:32 ` Paolo Bonzini
2021-09-03 8:13 ` [PATCH v2 3/5] configure: Remove options that can be handled via meson_options.txt instead Thomas Huth
` (2 subsequent siblings)
4 siblings, 2 replies; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
There is no reason why VNC should always be enabled and not be set to
the default value. We already switched the setting in the "configure"
script in commit 3a6a1256d4 ("configure: Allow vnc to get disabled with
--without-default-features"), so let's do that in meson_options.txt now,
too.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
meson_options.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson_options.txt b/meson_options.txt
index a9a9b8f4c6..2c89e79e8b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -120,7 +120,7 @@ option('usb_redir', type : 'feature', value : 'auto',
description: 'libusbredir support')
option('virglrenderer', type : 'feature', value : 'auto',
description: 'virgl rendering support')
-option('vnc', type : 'feature', value : 'enabled',
+option('vnc', type : 'feature', value : 'auto',
description: 'VNC server')
option('vnc_jpeg', type : 'feature', value : 'auto',
description: 'JPEG lossy compression for VNC server')
--
2.27.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 3/5] configure: Remove options that can be handled via meson_options.txt instead
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
2021-09-03 8:13 ` [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt Thomas Huth
2021-09-03 8:13 ` [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto' Thomas Huth
@ 2021-09-03 8:13 ` Thomas Huth
2021-09-03 8:13 ` [PATCH v2 4/5] configure: Get help text from meson_options.txt Thomas Huth
2021-09-03 8:13 ` [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too Thomas Huth
4 siblings, 0 replies; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
These trivial options can now be handled via the new generic code
that parses meson_options.txt.
Note: It's OK that we do not pass the "option=auto" settings from the
configure script to meson anymore since all related options use "auto"
as default value in meson_options.txt already.
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
configure | 316 +-----------------------------------------------------
1 file changed, 4 insertions(+), 312 deletions(-)
diff --git a/configure b/configure
index 528e9c80c5..5a3c6ae2ba 100755
--- a/configure
+++ b/configure
@@ -291,34 +291,14 @@ for opt do
esac
done
-brlapi="auto"
-curl="auto"
-iconv="auto"
-curses="auto"
-docs="auto"
fdt="auto"
netmap="no"
sdl="auto"
-sdl_image="auto"
coreaudio="auto"
-virtiofsd="auto"
-virtfs="auto"
-libudev="auto"
-mpath="auto"
-vnc="auto"
-sparse="auto"
vde="$default_feature"
-vnc_sasl="auto"
-vnc_jpeg="auto"
-vnc_png="auto"
-xkbcommon="auto"
xen=${default_feature:+disabled}
xen_ctrl_version="$default_feature"
-xen_pci_passthrough="auto"
linux_aio="$default_feature"
-linux_io_uring="auto"
-cap_ng="auto"
-attr="auto"
xfs="$default_feature"
tcg="enabled"
membarrier="$default_feature"
@@ -328,15 +308,8 @@ vhost_crypto="$default_feature"
vhost_scsi="$default_feature"
vhost_vsock="$default_feature"
vhost_user="no"
-vhost_user_blk_server="auto"
vhost_user_fs="$default_feature"
vhost_vdpa="$default_feature"
-bpf="auto"
-kvm="auto"
-hax="auto"
-hvf="auto"
-whpx="auto"
-nvmm="auto"
rdma="$default_feature"
pvrdma="$default_feature"
gprof="no"
@@ -362,7 +335,6 @@ bsd="no"
linux="no"
solaris="no"
profiler="no"
-cocoa="auto"
softmmu="yes"
linux_user="no"
bsd_user="no"
@@ -374,45 +346,23 @@ trace_backends="log"
trace_file="trace"
spice="$default_feature"
spice_protocol="auto"
-rbd="auto"
-smartcard="auto"
-u2f="auto"
-libusb="auto"
-usb_redir="auto"
opengl="$default_feature"
cpuid_h="no"
avx2_opt="$default_feature"
capstone="auto"
-lzo="auto"
-snappy="auto"
-bzip2="auto"
-lzfse="auto"
-zstd="auto"
guest_agent="$default_feature"
guest_agent_with_vss="no"
guest_agent_ntddscsi="no"
-guest_agent_msi="auto"
vss_win32_sdk="$default_feature"
win_sdk="no"
want_tools="$default_feature"
-libiscsi="auto"
-libnfs="auto"
coroutine=""
coroutine_pool="$default_feature"
debug_stack_usage="no"
crypto_afalg="no"
cfi="false"
cfi_debug="false"
-seccomp="auto"
-glusterfs="auto"
-gtk="auto"
tls_priority="NORMAL"
-gnutls="auto"
-nettle="auto"
-gcrypt="auto"
-auth_pam="auto"
-vte="auto"
-virglrenderer="auto"
tpm="$default_feature"
libssh="$default_feature"
live_block_migration=${default_feature:-yes}
@@ -428,25 +378,17 @@ vdi=${default_feature:-yes}
vvfat=${default_feature:-yes}
qed=${default_feature:-yes}
parallels=${default_feature:-yes}
-libxml2="auto"
debug_mutex="no"
-libpmem="auto"
default_devices="true"
plugins="$default_feature"
fuzzing="no"
rng_none="no"
secret_keyring="$default_feature"
-libdaxctl="auto"
meson=""
ninja=""
skip_meson=no
-gettext="auto"
-fuse="auto"
-fuse_lseek="auto"
-multiprocess="auto"
slirp_smbd="$default_feature"
-malloc_trim="auto"
gio="$default_feature"
# parse CC options second
@@ -982,38 +924,10 @@ for opt do
;;
--enable-sdl) sdl="enabled"
;;
- --disable-sdl-image) sdl_image="disabled"
- ;;
- --enable-sdl-image) sdl_image="enabled"
- ;;
--disable-qom-cast-debug) qom_cast_debug="no"
;;
--enable-qom-cast-debug) qom_cast_debug="yes"
;;
- --disable-virtfs) virtfs="disabled"
- ;;
- --enable-virtfs) virtfs="enabled"
- ;;
- --disable-libudev) libudev="disabled"
- ;;
- --enable-libudev) libudev="enabled"
- ;;
- --disable-virtiofsd) virtiofsd="disabled"
- ;;
- --enable-virtiofsd) virtiofsd="enabled"
- ;;
- --disable-mpath) mpath="disabled"
- ;;
- --enable-mpath) mpath="enabled"
- ;;
- --disable-vnc) vnc="disabled"
- ;;
- --enable-vnc) vnc="enabled"
- ;;
- --disable-gettext) gettext="disabled"
- ;;
- --enable-gettext) gettext="enabled"
- ;;
--oss-lib=*) oss_lib="$optarg"
;;
--audio-drv-list=*) audio_drv_list="$optarg"
@@ -1046,24 +960,8 @@ for opt do
;;
--disable-tsan) tsan="no"
;;
- --enable-sparse) sparse="enabled"
- ;;
- --disable-sparse) sparse="disabled"
- ;;
--disable-strip) strip_opt="no"
;;
- --disable-vnc-sasl) vnc_sasl="disabled"
- ;;
- --enable-vnc-sasl) vnc_sasl="enabled"
- ;;
- --disable-vnc-jpeg) vnc_jpeg="disabled"
- ;;
- --enable-vnc-jpeg) vnc_jpeg="enabled"
- ;;
- --disable-vnc-png) vnc_png="disabled"
- ;;
- --enable-vnc-png) vnc_png="enabled"
- ;;
--disable-slirp) slirp="disabled"
;;
--enable-slirp) slirp="enabled"
@@ -1084,51 +982,15 @@ for opt do
;;
--enable-xen) xen="enabled"
;;
- --disable-xen-pci-passthrough) xen_pci_passthrough="disabled"
- ;;
- --enable-xen-pci-passthrough) xen_pci_passthrough="enabled"
- ;;
- --disable-brlapi) brlapi="disabled"
- ;;
- --enable-brlapi) brlapi="enabled"
- ;;
- --disable-kvm) kvm="disabled"
- ;;
- --enable-kvm) kvm="enabled"
- ;;
- --disable-hax) hax="disabled"
- ;;
- --enable-hax) hax="enabled"
- ;;
- --disable-hvf) hvf="disabled"
- ;;
- --enable-hvf) hvf="enabled"
- ;;
- --disable-nvmm) nvmm="disabled"
- ;;
- --enable-nvmm) nvmm="enabled"
- ;;
- --disable-whpx) whpx="disabled"
- ;;
- --enable-whpx) whpx="enabled"
- ;;
--disable-tcg-interpreter) tcg_interpreter="false"
;;
--enable-tcg-interpreter) tcg_interpreter="true"
;;
- --disable-cap-ng) cap_ng="disabled"
- ;;
- --enable-cap-ng) cap_ng="enabled"
- ;;
--disable-tcg) tcg="disabled"
plugins="no"
;;
--enable-tcg) tcg="enabled"
;;
- --disable-malloc-trim) malloc_trim="disabled"
- ;;
- --enable-malloc-trim) malloc_trim="enabled"
- ;;
--disable-spice) spice="no"
;;
--enable-spice)
@@ -1141,20 +1003,8 @@ for opt do
;;
--enable-spice-protocol) spice_protocol="yes"
;;
- --disable-libiscsi) libiscsi="disabled"
- ;;
- --enable-libiscsi) libiscsi="enabled"
- ;;
- --disable-libnfs) libnfs="disabled"
- ;;
- --enable-libnfs) libnfs="enabled"
- ;;
--enable-profiler) profiler="yes"
;;
- --disable-cocoa) cocoa="disabled"
- ;;
- --enable-cocoa) cocoa="enabled"
- ;;
--disable-system) softmmu="no"
;;
--enable-system) softmmu="yes"
@@ -1202,18 +1052,6 @@ for opt do
;;
--disable-cfi-debug) cfi_debug="false"
;;
- --disable-curses) curses="disabled"
- ;;
- --enable-curses) curses="enabled"
- ;;
- --disable-iconv) iconv="disabled"
- ;;
- --enable-iconv) iconv="enabled"
- ;;
- --disable-curl) curl="disabled"
- ;;
- --enable-curl) curl="enabled"
- ;;
--disable-fdt) fdt="disabled"
;;
--enable-fdt) fdt="enabled"
@@ -1226,22 +1064,10 @@ for opt do
;;
--enable-linux-aio) linux_aio="yes"
;;
- --disable-linux-io-uring) linux_io_uring="disabled"
- ;;
- --enable-linux-io-uring) linux_io_uring="enabled"
- ;;
- --disable-attr) attr="disabled"
- ;;
- --enable-attr) attr="enabled"
- ;;
--disable-membarrier) membarrier="no"
;;
--enable-membarrier) membarrier="yes"
;;
- --disable-bpf) bpf="disabled"
- ;;
- --enable-bpf) bpf="enabled"
- ;;
--disable-blobs) blobs="false"
;;
--with-pkgversion=*) pkgversion="$optarg"
@@ -1258,10 +1084,6 @@ for opt do
;;
--disable-crypto-afalg) crypto_afalg="no"
;;
- --disable-docs) docs="disabled"
- ;;
- --enable-docs) docs="enabled"
- ;;
--disable-vhost-net) vhost_net="no"
;;
--enable-vhost-net) vhost_net="yes"
@@ -1278,10 +1100,6 @@ for opt do
;;
--enable-vhost-vsock) vhost_vsock="yes"
;;
- --disable-vhost-user-blk-server) vhost_user_blk_server="disabled"
- ;;
- --enable-vhost-user-blk-server) vhost_user_blk_server="enabled"
- ;;
--disable-vhost-user-fs) vhost_user_fs="no"
;;
--enable-vhost-user-fs) vhost_user_fs="yes"
@@ -1290,60 +1108,14 @@ for opt do
;;
--enable-opengl) opengl="yes"
;;
- --disable-rbd) rbd="disabled"
- ;;
- --enable-rbd) rbd="enabled"
- ;;
--disable-xfsctl) xfs="no"
;;
--enable-xfsctl) xfs="yes"
;;
- --disable-smartcard) smartcard="disabled"
- ;;
- --enable-smartcard) smartcard="enabled"
- ;;
- --disable-u2f) u2f="disabled"
- ;;
- --enable-u2f) u2f="enabled"
- ;;
- --disable-libusb) libusb="disabled"
- ;;
- --enable-libusb) libusb="enabled"
- ;;
- --disable-usb-redir) usb_redir="disabled"
- ;;
- --enable-usb-redir) usb_redir="enabled"
- ;;
- --disable-zlib-test)
- ;;
- --disable-lzo) lzo="disabled"
- ;;
- --enable-lzo) lzo="enabled"
- ;;
- --disable-snappy) snappy="disabled"
- ;;
- --enable-snappy) snappy="enabled"
- ;;
- --disable-bzip2) bzip2="disabled"
- ;;
- --enable-bzip2) bzip2="enabled"
- ;;
- --enable-lzfse) lzfse="enabled"
- ;;
- --disable-lzfse) lzfse="disabled"
- ;;
- --disable-zstd) zstd="disabled"
- ;;
- --enable-zstd) zstd="enabled"
- ;;
--enable-guest-agent) guest_agent="yes"
;;
--disable-guest-agent) guest_agent="no"
;;
- --enable-guest-agent-msi) guest_agent_msi="enabled"
- ;;
- --disable-guest-agent-msi) guest_agent_msi="disabled"
- ;;
--with-vss-sdk) vss_win32_sdk=""
;;
--with-vss-sdk=*) vss_win32_sdk="$optarg"
@@ -1360,12 +1132,6 @@ for opt do
;;
--disable-tools) want_tools="no"
;;
- --enable-seccomp) seccomp="enabled"
- ;;
- --disable-seccomp) seccomp="disabled"
- ;;
- --disable-glusterfs) glusterfs="disabled"
- ;;
--disable-avx2) avx2_opt="no"
;;
--enable-avx2) avx2_opt="yes"
@@ -1374,9 +1140,6 @@ for opt do
;;
--enable-avx512f) avx512f_opt="yes"
;;
-
- --enable-glusterfs) glusterfs="enabled"
- ;;
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
;;
@@ -1386,28 +1149,8 @@ for opt do
--enable-uuid|--disable-uuid)
echo "$0: $opt is obsolete, UUID support is always built" >&2
;;
- --disable-gtk) gtk="disabled"
- ;;
- --enable-gtk) gtk="enabled"
- ;;
--tls-priority=*) tls_priority="$optarg"
;;
- --disable-gnutls) gnutls="disabled"
- ;;
- --enable-gnutls) gnutls="enabled"
- ;;
- --disable-nettle) nettle="disabled"
- ;;
- --enable-nettle) nettle="enabled"
- ;;
- --disable-gcrypt) gcrypt="disabled"
- ;;
- --enable-gcrypt) gcrypt="enabled"
- ;;
- --disable-auth-pam) auth_pam="disabled"
- ;;
- --enable-auth-pam) auth_pam="enabled"
- ;;
--enable-rdma) rdma="yes"
;;
--disable-rdma) rdma="no"
@@ -1416,14 +1159,6 @@ for opt do
;;
--disable-pvrdma) pvrdma="no"
;;
- --disable-vte) vte="disabled"
- ;;
- --enable-vte) vte="enabled"
- ;;
- --disable-virglrenderer) virglrenderer="disabled"
- ;;
- --enable-virglrenderer) virglrenderer="enabled"
- ;;
--disable-tpm) tpm="no"
;;
--enable-tpm) tpm="yes"
@@ -1440,10 +1175,6 @@ for opt do
;;
--enable-numa) numa="yes"
;;
- --disable-libxml2) libxml2="disabled"
- ;;
- --enable-libxml2) libxml2="enabled"
- ;;
--disable-tcmalloc) tcmalloc="no"
;;
--enable-tcmalloc) tcmalloc="yes"
@@ -1525,14 +1256,6 @@ for opt do
;;
--disable-debug-mutex) debug_mutex=no
;;
- --enable-libpmem) libpmem="enabled"
- ;;
- --disable-libpmem) libpmem="disabled"
- ;;
- --enable-xkbcommon) xkbcommon="enabled"
- ;;
- --disable-xkbcommon) xkbcommon="disabled"
- ;;
--enable-plugins) if test "$mingw32" = "yes"; then
error_exit "TCG plugins not currently supported on Windows platforms"
else
@@ -1559,22 +1282,6 @@ for opt do
;;
--disable-keyring) secret_keyring="no"
;;
- --enable-libdaxctl) libdaxctl="enabled"
- ;;
- --disable-libdaxctl) libdaxctl="disabled"
- ;;
- --enable-fuse) fuse="enabled"
- ;;
- --disable-fuse) fuse="disabled"
- ;;
- --enable-fuse-lseek) fuse_lseek="enabled"
- ;;
- --disable-fuse-lseek) fuse_lseek="disabled"
- ;;
- --enable-multiprocess) multiprocess="enabled"
- ;;
- --disable-multiprocess) multiprocess="disabled"
- ;;
--enable-gio) gio=yes
;;
--disable-gio) gio=no
@@ -5213,25 +4920,10 @@ if test "$skip_meson" = no; then
-Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
${staticpic:+-Db_staticpic=$staticpic} \
-Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
- -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug \
- -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
- -Dkvm=$kvm -Dhax=$hax -Dwhpx=$whpx -Dhvf=$hvf -Dnvmm=$nvmm \
- -Dxen=$xen -Dxen_pci_passthrough=$xen_pci_passthrough -Dtcg=$tcg \
- -Dcocoa=$cocoa -Dgtk=$gtk -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
- -Dlibusb=$libusb -Dsmartcard=$smartcard -Dusb_redir=$usb_redir -Dvte=$vte \
- -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
- -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
- -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
- -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
- -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
- -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse -Dlibxml2=$libxml2 \
- -Dlibdaxctl=$libdaxctl -Dlibpmem=$libpmem -Dlinux_io_uring=$linux_io_uring \
- -Dgnutls=$gnutls -Dnettle=$nettle -Dgcrypt=$gcrypt -Dauth_pam=$auth_pam \
- -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
- -Dattr=$attr -Ddefault_devices=$default_devices -Dvirglrenderer=$virglrenderer \
- -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
- -Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
- -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
+ -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug -Dmalloc=$malloc \
+ -Ddefault_devices=$default_devices -Dxen=$xen -Dtcg=$tcg -Dsdl=$sdl \
+ -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
+ -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
$(if test "$default_feature" = no; then echo "-Dauto_features=disabled"; fi) \
-Dtcg_interpreter=$tcg_interpreter $meson_options \
$cross_arg \
--
2.27.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 4/5] configure: Get help text from meson_options.txt
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
` (2 preceding siblings ...)
2021-09-03 8:13 ` [PATCH v2 3/5] configure: Remove options that can be handled via meson_options.txt instead Thomas Huth
@ 2021-09-03 8:13 ` Thomas Huth
2021-09-03 17:20 ` Eric Blake
2021-09-03 8:13 ` [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too Thomas Huth
4 siblings, 1 reply; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
It's cumbersome to maintain the option help texts twice, once in the
"configure" script and once in meson_options.txt. So let's add some logic to
the configure script to read most of the help texts from meson_options.txt.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
configure | 95 ++++++++++++++++++-------------------------------------
1 file changed, 31 insertions(+), 64 deletions(-)
diff --git a/configure b/configure
index 5a3c6ae2ba..a92d11a491 100755
--- a/configure
+++ b/configure
@@ -1549,7 +1549,6 @@ Advanced options (experts only):
Default:trace-<pid>
--disable-slirp disable SLIRP userspace network connectivity
--enable-tcg-interpreter enable TCI (TCG with bytecode interpreter, experimental and slow)
- --enable-malloc-trim enable libc malloc_trim() for memory optimization
--oss-lib path to OSS library
--cpu=CPU Build for host CPU [$cpu]
--with-coroutine=BACKEND coroutine backend. Supported options:
@@ -1576,16 +1575,13 @@ disabled with --disable-FEATURE, default is enabled if available
user supported user emulation targets
linux-user all linux usermode emulation targets
bsd-user all BSD usermode emulation targets
- docs build documentation
guest-agent build the QEMU Guest Agent
- guest-agent-msi build guest agent Windows MSI installation package
pie Position Independent Executables
modules modules support (non-Windows)
module-upgrades try to load modules from alternate paths for upgrades
debug-tcg TCG debugging (default is disabled)
debug-info debugging information
lto Enable Link-Time Optimization.
- sparse sparse checker
safe-stack SafeStack Stack Smash Protection. Depends on
clang/llvm >= 3.7 and requires coroutine backend ucontext.
cfi Enable Control-Flow Integrity for indirect function calls.
@@ -1595,85 +1591,33 @@ disabled with --disable-FEATURE, default is enabled if available
cfi-debug In case of a cfi violation, a message containing the line that
triggered the error is written to stderr. After the error,
QEMU is still terminated with SIGILL
- gnutls GNUTLS cryptography support
- nettle nettle cryptography support
- gcrypt libgcrypt cryptography support
- auth-pam PAM access control
- sdl SDL UI
- sdl-image SDL Image support for icons
- gtk gtk UI
- vte vte support for the gtk UI
- curses curses UI
- iconv font glyph conversion support
- vnc VNC UI support
- vnc-sasl SASL encryption for VNC server
- vnc-jpeg JPEG lossy compression for VNC server
- vnc-png PNG compression for VNC server
- cocoa Cocoa UI (Mac OS X only)
- virtfs VirtFS
- virtiofsd build virtiofs daemon (virtiofsd)
- libudev Use libudev to enumerate host devices
- mpath Multipath persistent reservation passthrough
- xen xen backend driver support
- xen-pci-passthrough PCI passthrough support for Xen
- brlapi BrlAPI (Braile)
- curl curl connectivity
membarrier membarrier system call (for Linux 4.14+ or Windows)
fdt fdt device tree
- kvm KVM acceleration support
- hax HAX acceleration support
- hvf Hypervisor.framework acceleration support
- nvmm NVMM acceleration support
- whpx Windows Hypervisor Platform acceleration support
rdma Enable RDMA-based migration
pvrdma Enable PVRDMA support
vde support for vde network
netmap support for netmap network
linux-aio Linux AIO support
- linux-io-uring Linux io_uring support
- cap-ng libcap-ng support
- attr attr and xattr support
vhost-net vhost-net kernel acceleration support
vhost-vsock virtio sockets device support
vhost-scsi vhost-scsi kernel target support
vhost-crypto vhost-user-crypto backend support
vhost-kernel vhost kernel backend support
vhost-user vhost-user backend support
- vhost-user-blk-server vhost-user-blk server support
vhost-vdpa vhost-vdpa kernel backend support
- bpf BPF kernel support
spice spice
spice-protocol spice-protocol
- rbd rados block device (rbd)
- libiscsi iscsi support
- libnfs nfs support
- smartcard smartcard support (libcacard)
- u2f U2F support (u2f-emu)
- libusb libusb (for usb passthrough)
live-block-migration Block migration in the main migration stream
- usb-redir usb network redirection support
- lzo support of lzo compression library
- snappy support of snappy compression library
- bzip2 support of bzip2 compression library
- (for reading bzip2-compressed dmg images)
- lzfse support of lzfse compression library
- (for reading lzfse-compressed dmg images)
- zstd support for zstd compression library
- (for migration compression and qcow2 cluster compression)
- seccomp seccomp support
coroutine-pool coroutine freelist (better performance)
- glusterfs GlusterFS backend
tpm TPM support
libssh ssh block device support
numa libnuma support
- libxml2 for Parallels image format
tcmalloc tcmalloc support
jemalloc jemalloc support
avx2 AVX2 optimization support
avx512f AVX512F optimization support
replication replication support
opengl opengl support
- virglrenderer virgl rendering support
xfsctl xfsctl support
qom-cast-debug cast debugging support
tools build qemu-io, qemu-nbd and qemu-img tools
@@ -1688,18 +1632,41 @@ disabled with --disable-FEATURE, default is enabled if available
crypto-afalg Linux AF_ALG crypto backend driver
capstone capstone disassembler support
debug-mutex mutex debugging support
- libpmem libpmem support
- xkbcommon xkbcommon support
rng-none dummy RNG, avoid using /dev/(u)random and getrandom()
- libdaxctl libdaxctl support
- fuse FUSE block device export
- fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
- multiprocess Out of process device emulation support
gio libgio support
slirp-smbd use smbd (at path --smbd=*) in slirp networking
-
-NOTE: The object files are built at the place where configure is launched
EOF
+
+# Read remaining options and help text from meson_options.txt:
+current_feature=""
+while read first rest ; do
+ case "$first" in
+ option*)
+ case "$rest" in
+ *type*:*"'feature'"*)
+ current_feature=${first%\'*}
+ current_feature=${current_feature#*\'}
+ ;;
+ *)
+ current_feature=""
+ ;;
+ esac
+ ;;
+ description:)
+ if [ -n "$current_feature" ]; then
+ rest=${rest%\'*}
+ printf " %-15s %s\n" "$current_feature" "${rest#\'}"
+ fi
+ ;;
+ *)
+ current_feature=""
+ ;;
+ esac
+done < "$source_path/meson_options.txt" | sort
+
+echo
+echo "NOTE: The object files are built at the place where configure is launched"
+
exit 0
fi
--
2.27.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
` (3 preceding siblings ...)
2021-09-03 8:13 ` [PATCH v2 4/5] configure: Get help text from meson_options.txt Thomas Huth
@ 2021-09-03 8:13 ` Thomas Huth
2021-09-03 17:25 ` Eric Blake
4 siblings, 1 reply; 11+ messages in thread
From: Thomas Huth @ 2021-09-03 8:13 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Marc-André Lureau, Eric Blake
Add a comment that meson_options.txt is also parsed by the configure
script and that the options need a certain layout for this to succeed.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
meson_options.txt | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/meson_options.txt b/meson_options.txt
index 2c89e79e8b..86b3c03c7d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,9 @@
+# Note: This file is also parsed by "configure" to automatically handle the
+# 'feature' options for its --enable-* and --disable-* parameters. To be able
+# to use this automation, make sure that the corresponding options() have their
+# "type: 'feature'" in the very first line, and their "description:" in their
+# second line.
+
option('qemu_suffix', type : 'string', value: 'qemu',
description: 'Suffix for QEMU data/modules/config directories (can be empty)')
option('docdir', type : 'string', value : 'doc',
--
2.27.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt
2021-09-03 8:13 ` [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt Thomas Huth
@ 2021-09-03 17:09 ` Eric Blake
0 siblings, 0 replies; 11+ messages in thread
From: Eric Blake @ 2021-09-03 17:09 UTC (permalink / raw)
To: Thomas Huth; +Cc: Paolo Bonzini, qemu-devel, Marc-André Lureau
On Fri, Sep 03, 2021 at 10:13:54AM +0200, Thomas Huth wrote:
> To avoid double maintenance between the configure script and
> meson_options.txt, add some simple logic in the configure script
> to read the options from meson_options.txt.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> configure | 24 +++++++++++++++++++++++-
> 1 file changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 9a79a004d7..528e9c80c5 100755
> --- a/configure
> +++ b/configure
> @@ -836,6 +836,8 @@ fi
>
> werror=""
>
> +meson_options=""
> +
> for opt do
> optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
> case "$opt" in
> @@ -1581,6 +1583,26 @@ for opt do
> ;;
> --disable-slirp-smbd) slirp_smbd=no
> ;;
> + --enable-*)
> + arg=$(printf %s\\n "$opt" | sed -e "s/--enable-//" -e "s/-/_/g")
Sorry for not pointing this out earlier, but if an annoying user
passes:
./configure --'enable-my bad opt'
this results in $arg being set to 'my bad opt'...
> + if ! grep -q "option('$arg', type[ ]*: 'feature'" \
> + $source_path/meson_options.txt; then
> + printf "ERROR: unknown option %s\n" "$opt"
> + printf "Try '%s --help' for more information\n" "$0"
> + exit 1
> + fi
> + meson_options="$meson_options -D$arg=enabled"
...and that breaks $meson_options. Other odd arguments, such as
"--enable-my.*arg" could mess with the grep above. I don't know if we
care about users that go to such lengths to shoot themselves in the
foot, so it's probably not worth trying to guarantee that $opt
consists only of [a-zA-Z0-9_-].
> + ;;
> + --disable-*)
> + arg=$(printf %s\\n "$opt" | sed -e "s/--disable-//" -e "s/-/_/g")
Whatever we decide above, we should repeat here (including the
decision to leave as-is).
> + if ! grep -q "option('$arg', type[ ]*: 'feature'" \
> + $source_path/meson_options.txt; then
> + printf "ERROR: unknown option %s\n" "$opt"
> + printf "Try '%s --help' for more information\n" "$0"
> + exit 1
> + fi
> + meson_options="$meson_options -D$arg=disabled"
> + ;;
> *)
> echo "ERROR: unknown option $opt"
> echo "Try '$0 --help' for more information"
> @@ -5211,7 +5233,7 @@ if test "$skip_meson" = no; then
> -Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
> -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
> $(if test "$default_feature" = no; then echo "-Dauto_features=disabled"; fi) \
> - -Dtcg_interpreter=$tcg_interpreter \
> + -Dtcg_interpreter=$tcg_interpreter $meson_options \
> $cross_arg \
> "$PWD" "$source_path"
Unless we thing super-robustness is mandatory, I'm okay with:
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto'
2021-09-03 8:13 ` [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto' Thomas Huth
@ 2021-09-03 17:18 ` Eric Blake
2021-09-28 9:32 ` Paolo Bonzini
1 sibling, 0 replies; 11+ messages in thread
From: Eric Blake @ 2021-09-03 17:18 UTC (permalink / raw)
To: Thomas Huth; +Cc: Paolo Bonzini, qemu-devel, Marc-André Lureau
On Fri, Sep 03, 2021 at 10:13:55AM +0200, Thomas Huth wrote:
> There is no reason why VNC should always be enabled and not be set to
> the default value. We already switched the setting in the "configure"
> script in commit 3a6a1256d4 ("configure: Allow vnc to get disabled with
> --without-default-features"), so let's do that in meson_options.txt now,
> too.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> meson_options.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Eric Blake <eblake@redhat.com>
>
> diff --git a/meson_options.txt b/meson_options.txt
> index a9a9b8f4c6..2c89e79e8b 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -120,7 +120,7 @@ option('usb_redir', type : 'feature', value : 'auto',
> description: 'libusbredir support')
> option('virglrenderer', type : 'feature', value : 'auto',
> description: 'virgl rendering support')
> -option('vnc', type : 'feature', value : 'enabled',
> +option('vnc', type : 'feature', value : 'auto',
> description: 'VNC server')
> option('vnc_jpeg', type : 'feature', value : 'auto',
> description: 'JPEG lossy compression for VNC server')
> --
> 2.27.0
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/5] configure: Get help text from meson_options.txt
2021-09-03 8:13 ` [PATCH v2 4/5] configure: Get help text from meson_options.txt Thomas Huth
@ 2021-09-03 17:20 ` Eric Blake
0 siblings, 0 replies; 11+ messages in thread
From: Eric Blake @ 2021-09-03 17:20 UTC (permalink / raw)
To: Thomas Huth; +Cc: Paolo Bonzini, qemu-devel, Marc-André Lureau
On Fri, Sep 03, 2021 at 10:13:57AM +0200, Thomas Huth wrote:
> It's cumbersome to maintain the option help texts twice, once in the
> "configure" script and once in meson_options.txt. So let's add some logic to
> the configure script to read most of the help texts from meson_options.txt.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> configure | 95 ++++++++++++++++++-------------------------------------
> 1 file changed, 31 insertions(+), 64 deletions(-)
>
> +
> +# Read remaining options and help text from meson_options.txt:
> +current_feature=""
> +while read first rest ; do
> + case "$first" in
> + option*)
> + case "$rest" in
> + *type*:*"'feature'"*)
> + current_feature=${first%\'*}
> + current_feature=${current_feature#*\'}
> + ;;
> + *)
> + current_feature=""
> + ;;
> + esac
> + ;;
> + description:)
> + if [ -n "$current_feature" ]; then
> + rest=${rest%\'*}
> + printf " %-15s %s\n" "$current_feature" "${rest#\'}"
> + fi
> + ;;
> + *)
> + current_feature=""
> + ;;
> + esac
> +done < "$source_path/meson_options.txt" | sort
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too
2021-09-03 8:13 ` [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too Thomas Huth
@ 2021-09-03 17:25 ` Eric Blake
0 siblings, 0 replies; 11+ messages in thread
From: Eric Blake @ 2021-09-03 17:25 UTC (permalink / raw)
To: Thomas Huth; +Cc: Paolo Bonzini, qemu-devel, Marc-André Lureau
On Fri, Sep 03, 2021 at 10:13:58AM +0200, Thomas Huth wrote:
> Add a comment that meson_options.txt is also parsed by the configure
> script and that the options need a certain layout for this to succeed.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> meson_options.txt | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/meson_options.txt b/meson_options.txt
> index 2c89e79e8b..86b3c03c7d 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,9 @@
Huh - we don't have any copyright header in this file. Oh well, not your fault.
> +# Note: This file is also parsed by "configure" to automatically handle the
> +# 'feature' options for its --enable-* and --disable-* parameters. To be able
> +# to use this automation, make sure that the corresponding options() have their
> +# "type: 'feature'" in the very first line, and their "description:" in their
> +# second line.
> +
> option('qemu_suffix', type : 'string', value: 'qemu',
> description: 'Suffix for QEMU data/modules/config directories (can be empty)')
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto'
2021-09-03 8:13 ` [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto' Thomas Huth
2021-09-03 17:18 ` Eric Blake
@ 2021-09-28 9:32 ` Paolo Bonzini
1 sibling, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2021-09-28 9:32 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: Marc-André Lureau, Eric Blake
On 03/09/21 10:13, Thomas Huth wrote:
> There is no reason why VNC should always be enabled and not be set to
> the default value. We already switched the setting in the "configure"
> script in commit 3a6a1256d4 ("configure: Allow vnc to get disabled with
> --without-default-features"), so let's do that in meson_options.txt now,
> too.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> meson_options.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meson_options.txt b/meson_options.txt
> index a9a9b8f4c6..2c89e79e8b 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -120,7 +120,7 @@ option('usb_redir', type : 'feature', value : 'auto',
> description: 'libusbredir support')
> option('virglrenderer', type : 'feature', value : 'auto',
> description: 'virgl rendering support')
> -option('vnc', type : 'feature', value : 'enabled',
> +option('vnc', type : 'feature', value : 'auto',
> description: 'VNC server')
> option('vnc_jpeg', type : 'feature', value : 'auto',
> description: 'JPEG lossy compression for VNC server')
>
Queued this one for now, thanks.
Paolo
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-09-28 9:35 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-03 8:13 [PATCH v2 0/5] Use meson_options.txt in the configure script Thomas Huth
2021-09-03 8:13 ` [PATCH v2 1/5] configure: Add the possibility to read options from meson_options.txt Thomas Huth
2021-09-03 17:09 ` Eric Blake
2021-09-03 8:13 ` [PATCH v2 2/5] meson_options.txt: Switch the default value for the vnc option to 'auto' Thomas Huth
2021-09-03 17:18 ` Eric Blake
2021-09-28 9:32 ` Paolo Bonzini
2021-09-03 8:13 ` [PATCH v2 3/5] configure: Remove options that can be handled via meson_options.txt instead Thomas Huth
2021-09-03 8:13 ` [PATCH v2 4/5] configure: Get help text from meson_options.txt Thomas Huth
2021-09-03 17:20 ` Eric Blake
2021-09-03 8:13 ` [PATCH v2 5/5] meson_options.txt: Document that "configure" reads this file, too Thomas Huth
2021-09-03 17:25 ` Eric Blake
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.