* [PATCH v2 00/15] configure cleanups for QEMU 8.2
@ 2023-09-02 12:59 Paolo Bonzini
2023-09-02 12:59 ` [PATCH 01/15] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
` (14 more replies)
0 siblings, 15 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
This includes a few more patches cleaning up the configure/meson
separation. The highlights are fixing --host-cc, removing the last
traces of compiler detection from config-host.mak, and dropping the
useless pc-bios/Makefile.
Compared to v1, I have also removed the loop that takes random CONFIG_*
lines of config-host.mak and shoves them into config-host.h. These were
the last remains of the old scripts/create_config logic, but they are not
needed anymore because all config-host.h tests are done in meson.build or
come from meson-level options. We're definitely getting into diminishing
returns land (which is a good thing), but I believe it's worth having a
few extra patches to further reduce the coupling between config-host.mak
and meson.build.
To be honest, the plugin code would probably be a lot simpler if
contrib/plugins/Makefile was turned into a meson.build file. As things
stand, the "are plugins enabled?" logic has to stay in configure, in order
to decide whether to build contrib/plugins. However, contrib/plugins
was left as a separate build process for demonstration purposes, so I
am not going to change that. If desired, this can be changed in the
future (together with moving all the $plugins logic from configure
to meson.build). Perhaps the "external project" module from Meson
could be used too, but right now it is limited to projects with
a "configure" phase.
Paolo
Paolo Bonzini (15):
meson: do not unnecessarily use cmake for dependencies
meson: update unsupported host/CPU messages
configure: remove HOST_CC
configure: create native file with contents of $host_cc
meson: compile bundled device trees
configure: remove boolean variables for targets
configure: move --enable-debug-tcg to meson
meson: test for CONFIG_TCG in config_all
contrib/plugins: use an independent makefile
configure: unify recursion into sub-Makefiles
configure, meson: move --enable-plugins to meson
configure, meson: remove CONFIG_SOLARIS from config-host.mak
configure, meson: remove target OS symbols from config-host.mak
meson: list leftover CONFIG_* symbols
configure: remove dead code
Makefile | 29 +++--
accel/tcg/meson.build | 4 +-
chardev/meson.build | 2 +-
configure | 125 ++++++----------------
contrib/plugins/Makefile | 18 ++--
docs/devel/build-system.rst | 8 +-
docs/devel/kconfig.rst | 2 +-
gdbstub/meson.build | 4 +-
meson.build | 106 ++++++++++--------
meson_options.txt | 4 +
net/meson.build | 18 ++--
pc-bios/Makefile | 19 ----
pc-bios/meson.build | 25 ++++-
plugins/meson.build | 12 ++-
qga/meson.build | 4 +-
scripts/meson-buildoptions.sh | 6 ++
storage-daemon/meson.build | 2 +-
tcg/meson.build | 2 +-
tests/Makefile.include | 2 +-
tests/meson.build | 8 +-
tests/migration/meson.build | 2 +-
tests/qtest/meson.build | 18 ++--
tests/tcg/tricore/Makefile.softmmu-target | 2 +-
tests/unit/meson.build | 6 +-
24 files changed, 198 insertions(+), 230 deletions(-)
delete mode 100644 pc-bios/Makefile
--
2.41.0
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 01/15] meson: do not unnecessarily use cmake for dependencies
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 02/15] meson: update unsupported host/CPU messages Paolo Bonzini
` (13 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Daniel P . Berrangé
Both gvnc and sysprof-capture come with pkg-config files, so specify
the method to find them.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/migration/meson.build | 2 +-
tests/qtest/meson.build | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/migration/meson.build b/tests/migration/meson.build
index ac71f132901..a91aa61c659 100644
--- a/tests/migration/meson.build
+++ b/tests/migration/meson.build
@@ -1,4 +1,4 @@
-sysprof = dependency('sysprof-capture-4', required: false)
+sysprof = dependency('sysprof-capture-4', method: 'pkg-config', required: false)
glib_static = dependency('glib-2.0', version: glib_req_ver, required: false,
method: 'pkg-config', static: true)
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index b071d400b37..df63909ee51 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -321,7 +321,7 @@ qtests = {
}
if vnc.found()
- gvnc = dependency('gvnc-1.0', required: false)
+ gvnc = dependency('gvnc-1.0', method: 'pkg-config', required: false)
if gvnc.found()
qtests += {'vnc-display-test': [gvnc]}
qtests_generic += [ 'vnc-display-test' ]
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 02/15] meson: update unsupported host/CPU messages
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
2023-09-02 12:59 ` [PATCH 01/15] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-04 8:09 ` Thomas Huth
2023-09-02 12:59 ` [PATCH 03/15] configure: remove HOST_CC Paolo Bonzini
` (12 subsequent siblings)
14 siblings, 1 reply; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
Unsupported CPU and OSes are not really going away, but the
project simply does not guarantee that they work. Rephrase
the messages accordingly. While at it, move the warning for
TCI performance at the end where it is more visible.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 45 ++++++++++++++++++++++++++-------------------
1 file changed, 26 insertions(+), 19 deletions(-)
diff --git a/meson.build b/meson.build
index 98e68ef0b1e..9bcf117f8a4 100644
--- a/meson.build
+++ b/meson.build
@@ -678,9 +678,7 @@ endif
tcg_arch = host_arch
if get_option('tcg').allowed()
if host_arch == 'unknown'
- if get_option('tcg_interpreter')
- warning('Unsupported CPU @0@, will use TCG with TCI (slow)'.format(cpu))
- else
+ if not get_option('tcg_interpreter')
error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu))
endif
elif get_option('tcg_interpreter')
@@ -4317,28 +4315,37 @@ summary_info += {'selinux': selinux}
summary_info += {'libdw': libdw}
summary(summary_info, bool_yn: true, section: 'Dependencies')
-if not supported_cpus.contains(cpu)
+if host_arch == 'unknown'
message()
- warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
+ warning('UNSUPPORTED HOST CPU')
message()
- message('CPU host architecture ' + cpu + ' support is not currently maintained.')
- message('The QEMU project intends to remove support for this host CPU in')
- message('a future release if nobody volunteers to maintain it and to')
- message('provide a build host for our continuous integration setup.')
- message('configure has succeeded and you can continue to build, but')
- message('if you care about QEMU on this platform you should contact')
- message('us upstream at qemu-devel@nongnu.org.')
+ message('Support for CPU host architecture ' + cpu + ' is not currently')
+ message('maintained. The QEMU project does not guarantee that QEMU will')
+ message('compile or work on this host CPU. You can help by volunteering')
+ message('to maintain it and providing a build host for our continuous.')
+ message('integration setup.')
+ if get_option('tcg').allowed() and target_dirs.length() > 0
+ message()
+ message('configure has succeeded and you can continue to build, but')
+ message('QEMU will use a slow interpreter to emulate the target CPU.')
+ endif
endif
if not supported_oses.contains(targetos)
message()
- warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
+ warning('UNSUPPORTED HOST OS')
message()
- message('Host OS ' + targetos + 'support is not currently maintained.')
- message('The QEMU project intends to remove support for this host OS in')
- message('a future release if nobody volunteers to maintain it and to')
- message('provide a build host for our continuous integration setup.')
+ message('Support for host OS ' + targetos + 'is not currently maintained.')
message('configure has succeeded and you can continue to build, but')
- message('if you care about QEMU on this platform you should contact')
- message('us upstream at qemu-devel@nongnu.org.')
+ message('the QEMU project does not guarantee that QEMU will compile or')
+ message('work on this operating system. You can help by volunteering')
+ message('to maintain it and providing a build host for our continuous.')
+ message('integration setup. This will ensure that future versions of QEMU')
+ message('will keep working on ' + targetos + '.')
+endif
+
+if host_arch == 'unknown' or not supported_oses.contains(targetos)
+ message()
+ message('If you care about QEMU on this platform, please contact the')
+ message('developers at qemu-devel@nongnu.org.')
endif
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 03/15] configure: remove HOST_CC
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
2023-09-02 12:59 ` [PATCH 01/15] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
2023-09-02 12:59 ` [PATCH 02/15] meson: update unsupported host/CPU messages Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 04/15] configure: create native file with contents of $host_cc Paolo Bonzini
` (11 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Daniel P . Berrangé
$(HOST_CC) is only used to invoke the preprocessor, and $(CC) can be
used instead now that there is a Tricore C compiler. Remove the variable
from config-host.mak.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 1 -
tests/tcg/tricore/Makefile.softmmu-target | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/configure b/configure
index b9af8282293..7743c18f2fe 100755
--- a/configure
+++ b/configure
@@ -1800,7 +1800,6 @@ fi
mkdir -p tests/tcg
echo "# Automatically generated by configure - do not modify" > $config_host_mak
echo "SRC_PATH=$source_path" >> $config_host_mak
-echo "HOST_CC=$host_cc" >> $config_host_mak
# versioned checked in the main config_host.mak above
if test -n "$gdb_bin"; then
diff --git a/tests/tcg/tricore/Makefile.softmmu-target b/tests/tcg/tricore/Makefile.softmmu-target
index aff7c1b5802..2ec0bd36225 100644
--- a/tests/tcg/tricore/Makefile.softmmu-target
+++ b/tests/tcg/tricore/Makefile.softmmu-target
@@ -28,7 +28,7 @@ TESTS += test_context_save_areas.c.tst
QEMU_OPTS += -M tricore_testboard -cpu tc27x -nographic -kernel
%.pS: $(ASM_TESTS_PATH)/%.S
- $(HOST_CC) -E -o $@ $<
+ $(CC) -E -o $@ $<
%.o: %.pS
$(AS) $(ASFLAGS) -o $@ $<
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 04/15] configure: create native file with contents of $host_cc
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (2 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 03/15] configure: remove HOST_CC Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 05/15] meson: compile bundled device trees Paolo Bonzini
` (10 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Daniel P . Berrangé
The argument of --host-cc is not obeyed when cross compiling. To avoid
this issue, place it in a configuration file and pass it to meson
with --native-file.
While at it, clarify that --host-cc is not obeyed anyway when _not_
cross compiling, because cc="$host_cc" is placed before --host-cc is
processed.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index 7743c18f2fe..378a0de9fb6 100755
--- a/configure
+++ b/configure
@@ -288,7 +288,7 @@ static="no"
# ${cross_prefix}gcc (if cross-prefix specified)
# system compiler
if test -z "${CC}${cross_prefix}"; then
- cc="$host_cc"
+ cc="cc"
else
cc="${CC-${cross_prefix}gcc}"
fi
@@ -927,8 +927,8 @@ Advanced options (experts only):
-Dmesonoptname=val passthrough option to meson unmodified
--cross-prefix=PREFIX use PREFIX for compile tools, PREFIX can be blank [$cross_prefix]
--cc=CC use C compiler CC [$cc]
- --host-cc=CC use C compiler CC [$host_cc] for code run at
- build time
+ --host-cc=CC when cross compiling, use C compiler CC for code run
+ at build time [$host_cc]
--cxx=CXX use C++ compiler CXX [$cxx]
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
--extra-cflags=CFLAGS append extra C compiler flags CFLAGS
@@ -1892,7 +1892,6 @@ if test "$skip_meson" = no; then
echo "windres = [$(meson_quote $windres)]" >> $cross
echo "windmc = [$(meson_quote $windmc)]" >> $cross
if test "$cross_compile" = "yes"; then
- cross_arg="--cross-file config-meson.cross"
echo "[host_machine]" >> $cross
echo "system = '$targetos'" >> $cross
case "$cpu" in
@@ -1909,6 +1908,14 @@ if test "$skip_meson" = no; then
else
echo "endian = 'little'" >> $cross
fi
+ cross_arg="--cross-file config-meson.cross"
+
+ native="config-meson.native.new"
+ echo "# Automatically generated by configure - do not modify" > $native
+ echo "[binaries]" >> $native
+ echo "c = [$(meson_quote $host_cc)]" >> $native
+ mv $native config-meson.native
+ cross_arg="$cross_arg --native-file config-meson.native"
else
cross_arg="--native-file config-meson.cross"
fi
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 05/15] meson: compile bundled device trees
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (3 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 04/15] configure: create native file with contents of $host_cc Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 06/15] configure: remove boolean variables for targets Paolo Bonzini
` (9 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson
If dtc is available, compile the .dts files in the pc-bios directory
instead of using the precompiled binaries.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
pc-bios/Makefile | 19 -------------------
pc-bios/meson.build | 25 +++++++++++++++++++++----
2 files changed, 21 insertions(+), 23 deletions(-)
delete mode 100644 pc-bios/Makefile
diff --git a/pc-bios/Makefile b/pc-bios/Makefile
deleted file mode 100644
index 315288df84e..00000000000
--- a/pc-bios/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# NOTE: only compilable with x86 cross compile tools
-#
-include ../config-host.mak
-
-DEFINES=
-
-TARGETS=
-
-all: $(TARGETS)
-
-%.o: %.S
- $(CC) $(DEFINES) -c -o $@ $<
-
-%.dtb: %.dts
- dtc -I dts -O dtb -o $@ $<
-
-clean:
- rm -f $(TARGETS) *.o *~
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index a7224ef4699..e67fa433a1b 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -57,10 +57,6 @@ blobs = [
'efi-e1000e.rom',
'efi-vmxnet3.rom',
'qemu-nsis.bmp',
- 'bamboo.dtb',
- 'canyonlands.dtb',
- 'petalogix-s3adsp1800.dtb',
- 'petalogix-ml605.dtb',
'multiboot.bin',
'multiboot_dma.bin',
'linuxboot.bin',
@@ -84,6 +80,27 @@ blobs = [
'vof-nvram.bin',
]
+dtc = find_program('dtc', required: false)
+foreach f : [
+ 'bamboo.dts',
+ 'canyonlands.dts',
+ 'petalogix-s3adsp1800.dts',
+ 'petalogix-ml605.dts',
+]
+ out = fs.replace_suffix(f, '.dtb')
+ if dtc.found()
+ custom_target(f,
+ build_by_default: have_system,
+ input: files(f),
+ output: out,
+ install: get_option('install_blobs'),
+ install_dir: qemu_datadir,
+ command: [ dtc, '-I', 'dts', '-O', 'dtb', '-o', '@OUTPUT@', '@INPUT0@' ])
+ else
+ blobs += out
+ endif
+endforeach
+
if get_option('install_blobs')
install_data(blobs, install_dir: qemu_datadir)
endif
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 06/15] configure: remove boolean variables for targets
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (4 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 05/15] meson: compile bundled device trees Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 23:30 ` Richard Henderson
2023-09-04 8:15 ` Thomas Huth
2023-09-02 12:59 ` [PATCH 07/15] configure: move --enable-debug-tcg to meson Paolo Bonzini
` (8 subsequent siblings)
14 siblings, 2 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
Just use $targetos always.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 55 +++++++++++++------------------------------------------
1 file changed, 13 insertions(+), 42 deletions(-)
diff --git a/configure b/configure
index 378a0de9fb6..f96f7359a83 100755
--- a/configure
+++ b/configure
@@ -374,45 +374,14 @@ fi
# OS specific
-mingw32="no"
-bsd="no"
-linux="no"
-solaris="no"
case $targetos in
windows)
- mingw32="yes"
plugins="no"
pie="no"
;;
-gnu/kfreebsd)
- bsd="yes"
-;;
-freebsd)
- bsd="yes"
- # needed for kinfo_getvmmap(3) in libutil.h
-;;
-dragonfly)
- bsd="yes"
-;;
-netbsd)
- bsd="yes"
-;;
-openbsd)
- bsd="yes"
-;;
-darwin)
- bsd="yes"
- darwin="yes"
-;;
-sunos)
- solaris="yes"
-;;
haiku)
pie="no"
;;
-linux)
- linux="yes"
-;;
esac
if test ! -z "$cpu" ; then
@@ -627,7 +596,7 @@ do
fi
done
-if test "$mingw32" = "yes" ; then
+if test "$targetos" = "windows" ; then
EXESUF=".exe"
prefix="/qemu"
bindir=""
@@ -809,7 +778,7 @@ for opt do
;;
--enable-download) download="enabled"; git_submodules_action=update;
;;
- --enable-plugins) if test "$mingw32" = "yes"; then
+ --enable-plugins) if test "$targetos" = "windows"; then
error_exit "TCG plugins not currently supported on Windows platforms"
else
plugins="yes"
@@ -1080,7 +1049,7 @@ fi
# by default. Only enable by default for git builds
if test -z "$werror" ; then
if test -e "$source_path/.git" && \
- { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then
+ { test "$targetos" = linux || test "$targetos" = "windows"; }; then
werror="yes"
else
werror="no"
@@ -1718,7 +1687,7 @@ echo all: >> $config_host_mak
if test "$debug_tcg" = "yes" ; then
echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
fi
-if test "$mingw32" = "yes" ; then
+if test "$targetos" = "windows"; then
echo "CONFIG_WIN32=y" >> $config_host_mak
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO-Linux}" >> $config_host_mak
@@ -1727,24 +1696,26 @@ else
echo "CONFIG_POSIX=y" >> $config_host_mak
fi
-if test "$linux" = "yes" ; then
+if test "$targetos" = "linux" ; then
echo "CONFIG_LINUX=y" >> $config_host_mak
fi
-if test "$darwin" = "yes" ; then
+if test "$targetos" = "darwin" ; then
echo "CONFIG_DARWIN=y" >> $config_host_mak
fi
-if test "$solaris" = "yes" ; then
+if test "$targetos" = "sunos" ; then
echo "CONFIG_SOLARIS=y" >> $config_host_mak
fi
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
# XXX: suppress that
-if [ "$bsd" = "yes" ] ; then
- echo "CONFIG_BSD=y" >> $config_host_mak
-fi
+case $targetos in
+ gnu/kfreebsd | freebsd | dragonfly | netbsd | openbsd | darwin)
+ echo "CONFIG_BSD=y" >> $config_host_mak
+ ;;
+esac
if test "$plugins" = "yes" ; then
echo "CONFIG_PLUGIN=y" >> $config_host_mak
@@ -1774,7 +1745,7 @@ echo "CC=$cc" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
# use included Linux headers for KVM architectures
-if test "$linux" = "yes" && test -n "$linux_arch"; then
+if test "$targetos" = "linux" && test -n "$linux_arch"; then
symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
fi
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 07/15] configure: move --enable-debug-tcg to meson
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (5 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 06/15] configure: remove boolean variables for targets Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 08/15] meson: test for CONFIG_TCG in config_all Paolo Bonzini
` (7 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Richard Henderson, Peter Maydell
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 11 +----------
meson.build | 3 ++-
meson_options.txt | 2 ++
scripts/meson-buildoptions.sh | 3 +++
4 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/configure b/configure
index f96f7359a83..afd6121b616 100755
--- a/configure
+++ b/configure
@@ -248,7 +248,6 @@ done
git_submodules_action="update"
git="git"
-debug_tcg="no"
docs="auto"
EXESUF=""
prefix="/usr/local"
@@ -727,13 +726,9 @@ for opt do
# configure to be used by RPM and similar macros that set
# lots of directory switches by default.
;;
- --enable-debug-tcg) debug_tcg="yes"
- ;;
- --disable-debug-tcg) debug_tcg="no"
- ;;
--enable-debug)
# Enable debugging options that aren't excessively noisy
- debug_tcg="yes"
+ meson_option_parse --enable-debug-tcg ""
meson_option_parse --enable-debug-graph-lock ""
meson_option_parse --enable-debug-mutex ""
meson_option_add -Doptimization=0
@@ -933,7 +928,6 @@ cat << EOF
linux-user all linux usermode emulation targets
bsd-user all BSD usermode emulation targets
pie Position Independent Executables
- debug-tcg TCG debugging (default is disabled)
NOTE: The object files are built at the place where configure is launched
EOF
@@ -1684,9 +1678,6 @@ echo >> $config_host_mak
echo all: >> $config_host_mak
-if test "$debug_tcg" = "yes" ; then
- echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
-fi
if test "$targetos" = "windows"; then
echo "CONFIG_WIN32=y" >> $config_host_mak
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
diff --git a/meson.build b/meson.build
index 9bcf117f8a4..baf47613650 100644
--- a/meson.build
+++ b/meson.build
@@ -2199,6 +2199,7 @@ config_host_data.set10('CONFIG_COROUTINE_POOL', have_coroutine_pool)
config_host_data.set('CONFIG_DEBUG_GRAPH_LOCK', get_option('debug_graph_lock'))
config_host_data.set('CONFIG_DEBUG_MUTEX', get_option('debug_mutex'))
config_host_data.set('CONFIG_DEBUG_STACK_USAGE', get_option('debug_stack_usage'))
+config_host_data.set('CONFIG_DEBUG_TCG', get_option('debug_tcg'))
config_host_data.set('CONFIG_GPROF', get_option('gprof'))
config_host_data.set('CONFIG_LIVE_BLOCK_MIGRATION', get_option('live_block_migration').allowed())
config_host_data.set('CONFIG_QOM_CAST_DEBUG', get_option('qom_cast_debug'))
@@ -4156,7 +4157,7 @@ if config_all.has_key('CONFIG_TCG')
summary_info += {'TCG backend': 'native (@0@)'.format(cpu)}
endif
summary_info += {'TCG plugins': config_host.has_key('CONFIG_PLUGIN')}
- summary_info += {'TCG debug enabled': config_host.has_key('CONFIG_DEBUG_TCG')}
+ summary_info += {'TCG debug enabled': get_option('debug_tcg')}
endif
summary_info += {'target list': ' '.join(target_dirs)}
if have_system
diff --git a/meson_options.txt b/meson_options.txt
index aaea5ddd779..5d6b889554c 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -83,6 +83,8 @@ option('xen_pci_passthrough', type: 'feature', value: 'auto',
description: 'Xen PCI passthrough support')
option('tcg', type: 'feature', value: 'enabled',
description: 'TCG support')
+option('debug_tcg', type: 'boolean', value: false,
+ description: 'TCG debugging')
option('tcg_interpreter', type: 'boolean', value: false,
description: 'TCG with bytecode interpreter (slow)')
option('safe_stack', type: 'boolean', value: false,
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 9da3fe299b7..5567fd29985 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -29,6 +29,7 @@ meson_options_help() {
printf "%s\n" ' --enable-debug-mutex mutex debugging support'
printf "%s\n" ' --enable-debug-stack-usage'
printf "%s\n" ' measure coroutine stack usage'
+ printf "%s\n" ' --enable-debug-tcg TCG debugging'
printf "%s\n" ' --enable-fdt[=CHOICE] Whether and how to find the libfdt library'
printf "%s\n" ' (choices: auto/disabled/enabled/internal/system)'
printf "%s\n" ' --enable-fuzzing build fuzzing targets'
@@ -276,6 +277,8 @@ _meson_option_parse() {
--disable-debug-mutex) printf "%s" -Ddebug_mutex=false ;;
--enable-debug-stack-usage) printf "%s" -Ddebug_stack_usage=true ;;
--disable-debug-stack-usage) printf "%s" -Ddebug_stack_usage=false ;;
+ --enable-debug-tcg) printf "%s" -Ddebug_tcg=true ;;
+ --disable-debug-tcg) printf "%s" -Ddebug_tcg=false ;;
--enable-dmg) printf "%s" -Ddmg=enabled ;;
--disable-dmg) printf "%s" -Ddmg=disabled ;;
--docdir=*) quote_sh "-Ddocdir=$2" ;;
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 08/15] meson: test for CONFIG_TCG in config_all
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (6 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 07/15] configure: move --enable-debug-tcg to meson Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 09/15] contrib/plugins: use an independent makefile Paolo Bonzini
` (6 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Philippe Mathieu-Daudé
CONFIG_TCG is not included in *-config-devices.h, so the test is
always failing.
Fixes: 74884cb1a6d ("qtest/meson.build: check CONFIG_TCG for boot-serial-test in qtests_ppc", 2022-03-14)
Fixes: 44d827ea69e ("qtest/meson.build: check CONFIG_TCG for prom-env-test in qtests_ppc", 2022-03-14)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/qtest/meson.build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index df63909ee51..c0751ef7c35 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -155,8 +155,8 @@ qtests_ppc = \
qtests_filter + \
(config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) + \
(config_all_devices.has_key('CONFIG_M48T59') ? ['m48t59-test'] : []) + \
- (config_all_devices.has_key('CONFIG_TCG') ? ['prom-env-test'] : []) + \
- (config_all_devices.has_key('CONFIG_TCG') ? ['boot-serial-test'] : []) + \
+ (config_all.has_key('CONFIG_TCG') ? ['prom-env-test'] : []) + \
+ (config_all.has_key('CONFIG_TCG') ? ['boot-serial-test'] : []) + \
['boot-order-test']
qtests_ppc64 = \
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 09/15] contrib/plugins: use an independent makefile
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (7 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 08/15] meson: test for CONFIG_TCG in config_all Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 10/15] configure: unify recursion into sub-Makefiles Paolo Bonzini
` (5 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Daniel P . Berrangé
The initial reason to write this patch was to remove the last use of
CONFIG_DEBUG_TCG from the makefiles; the flags to use to build TCG
plugins are unrelated to --enable-debug-tcg, and instead they should
be the same as those used to build emulators (the plugins are not build
via meson for demonstration reasons only).
However, since contrib/plugins/Makefile is also the last case of doing
a compilation job using config-host.mak, go a step further and make it
use a completely separate configuration file, removing all references
to compilers from the toplevel config-host.mak. Clean up references to
empty variables, and use .SECONDARY so that intermediate object files
are not deleted.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 12 +++++++++---
contrib/plugins/Makefile | 18 +++++++++---------
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/configure b/configure
index afd6121b616..1be8b430a54 100755
--- a/configure
+++ b/configure
@@ -245,7 +245,7 @@ for opt do
esac
done
-
+default_cflags='-O2 -g'
git_submodules_action="update"
git="git"
docs="auto"
@@ -732,6 +732,7 @@ for opt do
meson_option_parse --enable-debug-graph-lock ""
meson_option_parse --enable-debug-mutex ""
meson_option_add -Doptimization=0
+ default_cflags='-O0 -g'
;;
--disable-tcg) tcg="disabled"
plugins="no"
@@ -1731,8 +1732,6 @@ echo "PYTHON=$python" >> $config_host_mak
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
echo "MESON=$meson" >> $config_host_mak
echo "NINJA=$ninja" >> $config_host_mak
-echo "PKG_CONFIG=${pkg_config}" >> $config_host_mak
-echo "CC=$cc" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
# use included Linux headers for KVM architectures
@@ -1757,6 +1756,13 @@ if test "$ccache_cpp2" = "yes"; then
echo "export CCACHE_CPP2=y" >> $config_host_mak
fi
+# contrib/plugins configuration
+echo "# Automatically generated by configure - do not modify" > contrib/plugins/$config_host_mak
+echo "SRC_PATH=$source_path/contrib/plugins" >> contrib/plugins/$config_host_mak
+echo "PKG_CONFIG=${pkg_config}" >> contrib/plugins/$config_host_mak
+echo "CC=$cc $CPU_CFLAGS" >> contrib/plugins/$config_host_mak
+echo "CFLAGS=${CFLAGS-$default_cflags} $EXTRA_CFLAGS" >> contrib/plugins/$config_host_mak
+
# tests/tcg configuration
(config_host_mak=tests/tcg/config-host.mak
mkdir -p tests/tcg
diff --git a/contrib/plugins/Makefile b/contrib/plugins/Makefile
index b2b9db9f51a..0751201bcb3 100644
--- a/contrib/plugins/Makefile
+++ b/contrib/plugins/Makefile
@@ -6,11 +6,11 @@
# programs that the main configure has already done for us.
#
-BUILD_DIR := $(CURDIR)/../..
+include config-host.mak
-include $(BUILD_DIR)/config-host.mak
+TOP_SRC_PATH = $(SRC_PATH)/../..
-VPATH += $(SRC_PATH)/contrib/plugins
+VPATH += $(SRC_PATH)
NAMES :=
NAMES += execlog
@@ -26,21 +26,21 @@ SONAMES := $(addsuffix .so,$(addprefix lib,$(NAMES)))
# The main QEMU uses Glib extensively so it's perfectly fine to use it
# in plugins (which many example do).
-CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
-CFLAGS += -fPIC -Wall
-CFLAGS += $(if $(CONFIG_DEBUG_TCG), -ggdb -O0)
-CFLAGS += -I$(SRC_PATH)/include/qemu
+PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
+PLUGIN_CFLAGS += -fPIC -Wall
+PLUGIN_CFLAGS += -I$(TOP_SRC_PATH)/include/qemu
all: $(SONAMES)
%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
+ $(CC) $(CFLAGS) $(PLUGIN_CFLAGS) -c -o $@ $<
lib%.so: %.o
- $(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDLIBS)
+ $(CC) -shared -Wl,-soname,$@ -o $@ $^
clean:
rm -f *.o *.so *.d
rm -Rf .libs
.PHONY: all clean
+.SECONDARY:
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 10/15] configure: unify recursion into sub-Makefiles
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (8 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 09/15] contrib/plugins: use an independent makefile Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 11/15] configure, meson: move --enable-plugins to meson Paolo Bonzini
` (4 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
Treat contrib/plugins the same as the firmware.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Makefile | 27 ++++++++++++---------------
configure | 13 ++++++++-----
2 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/Makefile b/Makefile
index 5d48dfac18a..118c28e80d9 100644
--- a/Makefile
+++ b/Makefile
@@ -164,14 +164,6 @@ ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
endif
endif
-ifeq ($(CONFIG_PLUGIN),y)
-.PHONY: plugins
-plugins:
- $(call quiet-command,\
- $(MAKE) $(SUBDIR_MAKEFLAGS) -C contrib/plugins V="$(V)", \
- "BUILD", "example plugins")
-endif # $(CONFIG_PLUGIN)
-
else # config-host.mak does not exist
ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
$(error Please call configure before running make)
@@ -184,15 +176,20 @@ include $(SRC_PATH)/tests/Makefile.include
all: recurse-all
-ROMS_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(ROMS)))
-.PHONY: $(ROMS_RULES)
-$(ROMS_RULES):
+SUBDIR_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(SUBDIRS)))
+.PHONY: $(SUBDIR_RULES)
+$(SUBDIR_RULES):
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),)
+ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
+.PHONY: plugins
+plugins: contrib/plugins/all
+endif
+
.PHONY: recurse-all recurse-clean
-recurse-all: $(addsuffix /all, $(ROMS))
-recurse-clean: $(addsuffix /clean, $(ROMS))
-recurse-distclean: $(addsuffix /distclean, $(ROMS))
+recurse-all: $(addsuffix /all, $(SUBDIRS))
+recurse-clean: $(addsuffix /clean, $(SUBDIRS))
+recurse-distclean: $(addsuffix /distclean, $(SUBDIRS))
######################################################################
@@ -296,7 +293,7 @@ help:
$(call print-help,cscope,Generate cscope index)
$(call print-help,sparse,Run sparse on the QEMU source)
@echo ''
-ifeq ($(CONFIG_PLUGIN),y)
+ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
@echo 'Plugin targets:'
$(call print-help,plugins,Build the example TCG plugins)
@echo ''
diff --git a/configure b/configure
index 1be8b430a54..9980eaeef57 100755
--- a/configure
+++ b/configure
@@ -256,6 +256,7 @@ softmmu="yes"
linux_user=""
bsd_user=""
plugins="$default_feature"
+subdirs=""
ninja=""
python=
download="enabled"
@@ -1067,6 +1068,9 @@ if test "$static" = "yes" ; then
fi
fi
test "$plugins" = "" && plugins=yes
+if test "$plugins" = "yes"; then
+ subdirs="$subdirs contrib/plugins"
+fi
cat > $TMPC << EOF
@@ -1627,12 +1631,11 @@ done
echo "# Automatically generated by configure - do not modify" > Makefile.prereqs
# Mac OS X ships with a broken assembler
-roms=
if have_target i386-softmmu x86_64-softmmu && \
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
test "$targetos" != "haiku" && \
probe_target_compiler i386-softmmu; then
- roms="pc-bios/optionrom"
+ subdirs="$subdirs pc-bios/optionrom"
config_mak=pc-bios/optionrom/config.mak
echo "# Automatically generated by configure - do not modify" > $config_mak
echo "TOPSRC_DIR=$source_path" >> $config_mak
@@ -1641,7 +1644,7 @@ fi
if have_target ppc-softmmu ppc64-softmmu && \
probe_target_compiler ppc-softmmu; then
- roms="$roms pc-bios/vof"
+ subdirs="$subdirs pc-bios/vof"
config_mak=pc-bios/vof/config.mak
echo "# Automatically generated by configure - do not modify" > $config_mak
echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
@@ -1660,7 +1663,7 @@ if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
echo "WARNING: Your compiler does not support the z900!"
echo " The s390-ccw bios will only work with guest CPUs >= z10."
fi
- roms="$roms pc-bios/s390-ccw"
+ subdirs="$subdirs pc-bios/s390-ccw"
config_mak=pc-bios/s390-ccw/config-host.mak
echo "# Automatically generated by configure - do not modify" > $config_mak
echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
@@ -1727,7 +1730,7 @@ if test "$container" != no; then
echo "ENGINE=$container" >> $config_host_mak
echo "RUNC=$runc" >> $config_host_mak
fi
-echo "ROMS=$roms" >> $config_host_mak
+echo "SUBDIRS=$subdirs" >> $config_host_mak
echo "PYTHON=$python" >> $config_host_mak
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
echo "MESON=$meson" >> $config_host_mak
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 11/15] configure, meson: move --enable-plugins to meson
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (9 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 10/15] configure: unify recursion into sub-Makefiles Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 12/15] configure, meson: remove CONFIG_SOLARIS from config-host.mak Paolo Bonzini
` (3 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
While the option still needs to be parsed in the configure script
(it's needed by tests/tcg, and also to decide about recursing
into contrib/plugins), passing it to Meson can be done with -D
instead of using config-host.mak.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
accel/tcg/meson.build | 4 +++-
configure | 5 +----
meson.build | 7 ++++---
meson_options.txt | 2 ++
plugins/meson.build | 12 +++++++-----
scripts/meson-buildoptions.sh | 3 +++
tests/Makefile.include | 2 +-
tests/meson.build | 6 ++----
8 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build
index 166bef173b8..8ace7837079 100644
--- a/accel/tcg/meson.build
+++ b/accel/tcg/meson.build
@@ -11,7 +11,9 @@ tcg_ss.add(files(
))
tcg_ss.add(when: 'CONFIG_USER_ONLY', if_true: files('user-exec.c'))
tcg_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_false: files('user-exec-stub.c'))
-tcg_ss.add(when: 'CONFIG_PLUGIN', if_true: [files('plugin-gen.c')])
+if get_option('plugins')
+ tcg_ss.add(files('plugin-gen.c'))
+endif
tcg_ss.add(when: libdw, if_true: files('debuginfo.c'))
tcg_ss.add(when: 'CONFIG_LINUX', if_true: files('perf.c'))
specific_ss.add_all(when: 'CONFIG_TCG', if_true: tcg_ss)
diff --git a/configure b/configure
index 9980eaeef57..017977f72b3 100755
--- a/configure
+++ b/configure
@@ -1712,10 +1712,6 @@ case $targetos in
;;
esac
-if test "$plugins" = "yes" ; then
- echo "CONFIG_PLUGIN=y" >> $config_host_mak
-fi
-
if test -n "$gdb_bin"; then
gdb_version=$($gdb_bin --version | head -n 1)
if version_ge ${gdb_version##* } 9.1; then
@@ -1906,6 +1902,7 @@ if test "$skip_meson" = no; then
test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
test "$docs" != auto && meson_option_add "-Ddocs=$docs"
test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engine=$LIB_FUZZING_ENGINE"
+ test "$plugins" = yes && meson_option_add "-Dplugins=true"
test "$qemu_suffix" != qemu && meson_option_add "-Dqemu_suffix=$qemu_suffix"
test "$smbd" != '' && meson_option_add "-Dsmbd=$smbd"
test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg"
diff --git a/meson.build b/meson.build
index baf47613650..9100e2a9794 100644
--- a/meson.build
+++ b/meson.build
@@ -730,7 +730,7 @@ glib_cflags = []
if enable_modules
gmodule = dependency('gmodule-export-2.0', version: glib_req_ver, required: true,
method: 'pkg-config')
-elif config_host.has_key('CONFIG_PLUGIN')
+elif get_option('plugins')
gmodule = dependency('gmodule-no-export-2.0', version: glib_req_ver, required: true,
method: 'pkg-config')
else
@@ -2115,6 +2115,7 @@ if numa.found()
dependencies: numa))
endif
config_host_data.set('CONFIG_OPENGL', opengl.found())
+config_host_data.set('CONFIG_PLUGIN', get_option('plugins'))
config_host_data.set('CONFIG_RBD', rbd.found())
config_host_data.set('CONFIG_RDMA', rdma.found())
config_host_data.set('CONFIG_SAFESTACK', get_option('safe_stack'))
@@ -3883,7 +3884,7 @@ endforeach
# Other build targets
-if 'CONFIG_PLUGIN' in config_host
+if get_option('plugins')
install_headers('include/qemu/qemu-plugin.h')
endif
@@ -4156,7 +4157,7 @@ if config_all.has_key('CONFIG_TCG')
else
summary_info += {'TCG backend': 'native (@0@)'.format(cpu)}
endif
- summary_info += {'TCG plugins': config_host.has_key('CONFIG_PLUGIN')}
+ summary_info += {'TCG plugins': get_option('plugins')}
summary_info += {'TCG debug enabled': get_option('debug_tcg')}
endif
summary_info += {'target list': ' '.join(target_dirs)}
diff --git a/meson_options.txt b/meson_options.txt
index 5d6b889554c..e48086e2562 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -83,6 +83,8 @@ option('xen_pci_passthrough', type: 'feature', value: 'auto',
description: 'Xen PCI passthrough support')
option('tcg', type: 'feature', value: 'enabled',
description: 'TCG support')
+option('plugins', type: 'boolean', value: false,
+ description: 'TCG plugins via shared library loading')
option('debug_tcg', type: 'boolean', value: false,
description: 'TCG debugging')
option('tcg_interpreter', type: 'boolean', value: false,
diff --git a/plugins/meson.build b/plugins/meson.build
index 752377c66d3..71ed996ed31 100644
--- a/plugins/meson.build
+++ b/plugins/meson.build
@@ -13,8 +13,10 @@ if not enable_modules
endif
endif
-specific_ss.add(when: 'CONFIG_PLUGIN', if_true: [files(
- 'loader.c',
- 'core.c',
- 'api.c',
-), declare_dependency(link_args: plugin_ldflags)])
+if get_option('plugins')
+ specific_ss.add(files(
+ 'loader.c',
+ 'core.c',
+ 'api.c',
+ ), declare_dependency(link_args: plugin_ldflags))
+endif
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 5567fd29985..6b16ad94f4b 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -40,6 +40,7 @@ meson_options_help() {
printf "%s\n" ' jemalloc/system/tcmalloc)'
printf "%s\n" ' --enable-module-upgrades try to load modules from alternate paths for'
printf "%s\n" ' upgrades'
+ printf "%s\n" ' --enable-plugins TCG plugins via shared library loading'
printf "%s\n" ' --enable-rng-none dummy RNG, avoid using /dev/(u)random and'
printf "%s\n" ' getrandom()'
printf "%s\n" ' --enable-safe-stack SafeStack Stack Smash Protection (requires'
@@ -401,6 +402,8 @@ _meson_option_parse() {
--enable-pipewire) printf "%s" -Dpipewire=enabled ;;
--disable-pipewire) printf "%s" -Dpipewire=disabled ;;
--with-pkgversion=*) quote_sh "-Dpkgversion=$2" ;;
+ --enable-plugins) printf "%s" -Dplugins=true ;;
+ --disable-plugins) printf "%s" -Dplugins=false ;;
--enable-png) printf "%s" -Dpng=enabled ;;
--disable-png) printf "%s" -Dpng=disabled ;;
--enable-pvrdma) printf "%s" -Dpvrdma=enabled ;;
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 985cda7a945..38987426594 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -73,7 +73,7 @@ $(TCG_TESTS_TARGETS:%=distclean-tcg-tests-%): distclean-tcg-tests-%:
build-tcg: $(BUILD_TCG_TARGET_RULES)
.PHONY: check-tcg
-.ninja-goals.check-tcg = all $(if $(CONFIG_PLUGIN),test-plugins)
+.ninja-goals.check-tcg = all
check-tcg: $(RUN_TCG_TARGET_RULES)
.PHONY: clean-tcg
diff --git a/tests/meson.build b/tests/meson.build
index 083f2990bde..c2528a88f99 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -80,10 +80,8 @@ if 'CONFIG_TCG' in config_all
subdir('fp')
endif
-if get_option('tcg').allowed()
- if 'CONFIG_PLUGIN' in config_host
- subdir('plugin')
- endif
+if get_option('plugins')
+ subdir('plugin')
endif
subdir('unit')
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 12/15] configure, meson: remove CONFIG_SOLARIS from config-host.mak
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (10 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 11/15] configure, meson: move --enable-plugins to meson Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 13/15] configure, meson: remove target OS symbols " Paolo Bonzini
` (2 subsequent siblings)
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel; +Cc: Philippe Mathieu-Daudé
CONFIG_SOLARIS is only used to pick tap implementations. But the
target OS is invariant and does not depend on the configuration, so move
away from config_host and just use unconditional rules in softmmu_ss.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 3 ---
meson.build | 1 +
net/meson.build | 18 ++++++++++--------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/configure b/configure
index 017977f72b3..f3ffaca1878 100755
--- a/configure
+++ b/configure
@@ -1699,9 +1699,6 @@ if test "$targetos" = "darwin" ; then
echo "CONFIG_DARWIN=y" >> $config_host_mak
fi
-if test "$targetos" = "sunos" ; then
- echo "CONFIG_SOLARIS=y" >> $config_host_mak
-fi
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
diff --git a/meson.build b/meson.build
index 9100e2a9794..f6d079f4cda 100644
--- a/meson.build
+++ b/meson.build
@@ -2126,6 +2126,7 @@ if seccomp.found()
config_host_data.set('CONFIG_SECCOMP_SYSRAWRC', seccomp_has_sysrawrc)
endif
config_host_data.set('CONFIG_SNAPPY', snappy.found())
+config_host_data.set('CONFIG_SOLARIS', targetos == 'sunos')
config_host_data.set('CONFIG_TPM', have_tpm)
config_host_data.set('CONFIG_TSAN', get_option('tsan'))
config_host_data.set('CONFIG_USB_LIBUSB', libusb.found())
diff --git a/net/meson.build b/net/meson.build
index bdf564a57b2..d2d70634e5e 100644
--- a/net/meson.build
+++ b/net/meson.build
@@ -41,15 +41,17 @@ if have_vhost_net_user
system_ss.add(when: 'CONFIG_ALL', if_true: files('vhost-user-stub.c'))
endif
-system_ss.add(when: 'CONFIG_LINUX', if_true: files('tap-linux.c'))
-system_ss.add(when: 'CONFIG_BSD', if_true: files('tap-bsd.c'))
-system_ss.add(when: 'CONFIG_SOLARIS', if_true: files('tap-solaris.c'))
-tap_posix = ['tap.c']
-if not config_host.has_key('CONFIG_LINUX') and not config_host.has_key('CONFIG_BSD') and not config_host.has_key('CONFIG_SOLARIS')
- tap_posix += 'tap-stub.c'
+if targetos == 'windows'
+ system_ss.add(files('tap-win32.c'))
+elif targetos == 'linux'
+ system_ss.add(files('tap.c', 'tap-linux.c'))
+elif targetos in bsd_oses
+ system_ss.add(files('tap.c', 'tap-bsd.c'))
+elif targetos == 'solaris'
+ system_ss.add(files('tap.c', 'tap-solaris.c'))
+else
+ system_ss.add(files('tap.c', 'tap-stub.c'))
endif
-system_ss.add(when: 'CONFIG_POSIX', if_true: files(tap_posix))
-system_ss.add(when: 'CONFIG_WIN32', if_true: files('tap-win32.c'))
if have_vhost_net_vdpa
system_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('vhost-vdpa.c'), if_false: files('vhost-vdpa-stub.c'))
system_ss.add(when: 'CONFIG_ALL', if_true: files('vhost-vdpa-stub.c'))
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 13/15] configure, meson: remove target OS symbols from config-host.mak
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (11 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 12/15] configure, meson: remove CONFIG_SOLARIS from config-host.mak Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 14/15] meson: list leftover CONFIG_* symbols Paolo Bonzini
2023-09-02 12:59 ` [PATCH 15/15] configure: remove dead code Paolo Bonzini
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
Stop applying config-host.mak to the sourcesets, since it does not
have any more CONFIG_* symbols coming from the command line.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Makefile | 2 +-
chardev/meson.build | 2 +-
configure | 18 -----------------
docs/devel/kconfig.rst | 2 +-
gdbstub/meson.build | 4 ++--
meson.build | 40 +++++++++++++++++++++++++-------------
qga/meson.build | 4 ++--
storage-daemon/meson.build | 2 +-
tcg/meson.build | 2 +-
tests/meson.build | 2 +-
tests/qtest/meson.build | 12 ++++++------
tests/unit/meson.build | 6 +++---
12 files changed, 46 insertions(+), 50 deletions(-)
diff --git a/Makefile b/Makefile
index 118c28e80d9..bfc4b2c8e92 100644
--- a/Makefile
+++ b/Makefile
@@ -313,7 +313,7 @@ endif
@echo 'Documentation targets:'
$(call print-help,html man,Build documentation in specified format)
@echo ''
-ifdef CONFIG_WIN32
+ifneq ($(filter msi, $(ninja-targets)),)
@echo 'Windows targets:'
$(call print-help,installer,Build NSIS-based installer for QEMU)
$(call print-help,msi,Build MSI-based installer for qemu-ga)
diff --git a/chardev/meson.build b/chardev/meson.build
index fb630b429eb..6d56ad32fdb 100644
--- a/chardev/meson.build
+++ b/chardev/meson.build
@@ -26,7 +26,7 @@ chardev_ss.add(when: 'CONFIG_WIN32', if_true: files(
'char-win.c',
))
-chardev_ss = chardev_ss.apply(config_host, strict: false)
+chardev_ss = chardev_ss.apply(config_targetos, strict: false)
system_ss.add(files(
'char-hmp-cmds.c',
diff --git a/configure b/configure
index f3ffaca1878..6404b659718 100755
--- a/configure
+++ b/configure
@@ -1683,32 +1683,14 @@ echo >> $config_host_mak
echo all: >> $config_host_mak
if test "$targetos" = "windows"; then
- echo "CONFIG_WIN32=y" >> $config_host_mak
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO-Linux}" >> $config_host_mak
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION-$(cat "$source_path"/VERSION)}" >> $config_host_mak
-else
- echo "CONFIG_POSIX=y" >> $config_host_mak
-fi
-
-if test "$targetos" = "linux" ; then
- echo "CONFIG_LINUX=y" >> $config_host_mak
-fi
-
-if test "$targetos" = "darwin" ; then
- echo "CONFIG_DARWIN=y" >> $config_host_mak
fi
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
-# XXX: suppress that
-case $targetos in
- gnu/kfreebsd | freebsd | dragonfly | netbsd | openbsd | darwin)
- echo "CONFIG_BSD=y" >> $config_host_mak
- ;;
-esac
-
if test -n "$gdb_bin"; then
gdb_version=$($gdb_bin --version | head -n 1)
if version_ge ${gdb_version##* } 9.1; then
diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst
index e3a544e463f..73f52de1067 100644
--- a/docs/devel/kconfig.rst
+++ b/docs/devel/kconfig.rst
@@ -316,6 +316,6 @@ variable::
host_kconfig = \
(have_tpm ? ['CONFIG_TPM=y'] : []) + \
- ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
+ (targetos == 'linux' ? ['CONFIG_LINUX=y'] : []) + \
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
...
diff --git a/gdbstub/meson.build b/gdbstub/meson.build
index 77762e0b3e1..9500b9dc4e6 100644
--- a/gdbstub/meson.build
+++ b/gdbstub/meson.build
@@ -14,8 +14,8 @@ gdb_system_ss = ss.source_set()
gdb_user_ss.add(files('gdbstub.c', 'user.c'))
gdb_system_ss.add(files('gdbstub.c', 'softmmu.c'))
-gdb_user_ss = gdb_user_ss.apply(config_host, strict: false)
-gdb_system_ss = gdb_system_ss.apply(config_host, strict: false)
+gdb_user_ss = gdb_user_ss.apply(config_targetos, strict: false)
+gdb_system_ss = gdb_system_ss.apply(config_targetos, strict: false)
libgdb_user = static_library('gdb_user',
gdb_user_ss.sources() + genh,
diff --git a/meson.build b/meson.build
index f6d079f4cda..d3feac656cb 100644
--- a/meson.build
+++ b/meson.build
@@ -2069,10 +2069,15 @@ config_host_data.set('CONFIG_MODULE_UPGRADES', get_option('module_upgrades'))
config_host_data.set('CONFIG_ATTR', libattr.found())
config_host_data.set('CONFIG_BDRV_WHITELIST_TOOLS', get_option('block_drv_whitelist_in_tools'))
config_host_data.set('CONFIG_BRLAPI', brlapi.found())
+config_host_data.set('CONFIG_BSD', targetos in bsd_oses)
config_host_data.set('CONFIG_COCOA', cocoa.found())
+config_host_data.set('CONFIG_DARWIN', targetos == 'darwin')
config_host_data.set('CONFIG_FUZZ', get_option('fuzzing'))
config_host_data.set('CONFIG_GCOV', get_option('b_coverage'))
config_host_data.set('CONFIG_LIBUDEV', libudev.found())
+config_host_data.set('CONFIG_LINUX', targetos == 'linux')
+config_host_data.set('CONFIG_POSIX', targetos != 'windows')
+config_host_data.set('CONFIG_WIN32', targetos == 'windows')
config_host_data.set('CONFIG_LZO', lzo.found())
config_host_data.set('CONFIG_MPATH', mpathpersist.found())
config_host_data.set('CONFIG_BLKIO', blkio.found())
@@ -2799,6 +2804,15 @@ endif
########################
minikconf = find_program('scripts/minikconf.py')
+config_targetos = {
+ (targetos == 'windows' ? 'CONFIG_WIN32' : 'CONFIG_POSIX'): 'y'
+}
+if targetos == 'darwin'
+ config_targetos += {'CONFIG_DARWIN': 'y'}
+elif targetos == 'linux'
+ config_targetos += {'CONFIG_LINUX': 'y'}
+endif
+
config_all = {}
config_all_devices = {}
config_all_disas = {}
@@ -2842,7 +2856,7 @@ host_kconfig = \
(have_vhost_vdpa ? ['CONFIG_VHOST_VDPA=y'] : []) + \
(have_vhost_kernel ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
(have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
- ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
+ (targetos == 'linux' ? ['CONFIG_LINUX=y'] : []) + \
(have_pvrdma ? ['CONFIG_PVRDMA=y'] : []) + \
(multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) + \
(vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=y'] : [])
@@ -2863,7 +2877,7 @@ foreach target : target_dirs
endif
config_target += { 'CONFIG_LINUX_USER': 'y' }
elif target.endswith('bsd-user')
- if 'CONFIG_BSD' not in config_host
+ if targetos not in bsd_oses
if default_targets
continue
endif
@@ -2994,7 +3008,7 @@ target_dirs = actual_target_dirs
# pseudo symbol replaces it.
config_all += config_all_devices
-config_all += config_host
+config_all += config_targetos
config_all += config_all_disas
config_all += {
'CONFIG_XEN': xen.found(),
@@ -3341,7 +3355,7 @@ if enable_modules
modulecommon = declare_dependency(link_whole: libmodulecommon, compile_args: '-DBUILD_DSO')
endif
-qom_ss = qom_ss.apply(config_host, strict: false)
+qom_ss = qom_ss.apply(config_targetos, strict: false)
libqom = static_library('qom', qom_ss.sources() + genh,
dependencies: [qom_ss.dependencies()],
name_suffix: 'fa')
@@ -3515,7 +3529,7 @@ foreach d, list : target_modules
foreach target : target_dirs
if target.endswith('-softmmu')
config_target = config_target_mak[target]
- config_target += config_host
+ config_target += config_targetos
target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
c_args = ['-DNEED_CPU_H',
'-DCONFIG_TARGET="@0@-config-target.h"'.format(target),
@@ -3576,7 +3590,7 @@ qemu_syms = custom_target('qemu.syms', output: 'qemu.syms',
capture: true,
command: [undefsym, nm, '@INPUT@'])
-authz_ss = authz_ss.apply(config_host, strict: false)
+authz_ss = authz_ss.apply(config_targetos, strict: false)
libauthz = static_library('authz', authz_ss.sources() + genh,
dependencies: [authz_ss.dependencies()],
name_suffix: 'fa',
@@ -3585,7 +3599,7 @@ libauthz = static_library('authz', authz_ss.sources() + genh,
authz = declare_dependency(link_whole: libauthz,
dependencies: qom)
-crypto_ss = crypto_ss.apply(config_host, strict: false)
+crypto_ss = crypto_ss.apply(config_targetos, strict: false)
libcrypto = static_library('crypto', crypto_ss.sources() + genh,
dependencies: [crypto_ss.dependencies()],
name_suffix: 'fa',
@@ -3594,7 +3608,7 @@ libcrypto = static_library('crypto', crypto_ss.sources() + genh,
crypto = declare_dependency(link_whole: libcrypto,
dependencies: [authz, qom])
-io_ss = io_ss.apply(config_host, strict: false)
+io_ss = io_ss.apply(config_targetos, strict: false)
libio = static_library('io', io_ss.sources() + genh,
dependencies: [io_ss.dependencies()],
link_with: libqemuutil,
@@ -3610,7 +3624,7 @@ migration = declare_dependency(link_with: libmigration,
dependencies: [zlib, qom, io])
system_ss.add(migration)
-block_ss = block_ss.apply(config_host, strict: false)
+block_ss = block_ss.apply(config_targetos, strict: false)
libblock = static_library('block', block_ss.sources() + genh,
dependencies: block_ss.dependencies(),
link_depends: block_syms,
@@ -3621,7 +3635,7 @@ block = declare_dependency(link_whole: [libblock],
link_args: '@block.syms',
dependencies: [crypto, io])
-blockdev_ss = blockdev_ss.apply(config_host, strict: false)
+blockdev_ss = blockdev_ss.apply(config_targetos, strict: false)
libblockdev = static_library('blockdev', blockdev_ss.sources() + genh,
dependencies: blockdev_ss.dependencies(),
name_suffix: 'fa',
@@ -3630,7 +3644,7 @@ libblockdev = static_library('blockdev', blockdev_ss.sources() + genh,
blockdev = declare_dependency(link_whole: [libblockdev],
dependencies: [block, event_loop_base])
-qmp_ss = qmp_ss.apply(config_host, strict: false)
+qmp_ss = qmp_ss.apply(config_targetos, strict: false)
libqmp = static_library('qmp', qmp_ss.sources() + genh,
dependencies: qmp_ss.dependencies(),
name_suffix: 'fa',
@@ -3645,7 +3659,7 @@ libchardev = static_library('chardev', chardev_ss.sources() + genh,
chardev = declare_dependency(link_whole: libchardev)
-hwcore_ss = hwcore_ss.apply(config_host, strict: false)
+hwcore_ss = hwcore_ss.apply(config_targetos, strict: false)
libhwcore = static_library('hwcore', sources: hwcore_ss.sources() + genh,
name_suffix: 'fa',
build_by_default: false)
@@ -3702,7 +3716,7 @@ foreach target : target_dirs
'-DCONFIG_DEVICES="@0@-config-devices.h"'.format(target)]
link_args = emulator_link_args
- config_target += config_host
+ config_target += config_targetos
target_inc = [include_directories('target' / config_target['TARGET_BASE_ARCH'])]
if targetos == 'linux'
target_inc += include_directories('linux-headers', is_system: true)
diff --git a/qga/meson.build b/qga/meson.build
index dd18092f561..59cae0cc6ee 100644
--- a/qga/meson.build
+++ b/qga/meson.build
@@ -85,7 +85,7 @@ qga_ss.add(when: 'CONFIG_WIN32', if_true: files(
'vss-win32.c'
))
-qga_ss = qga_ss.apply(config_host, strict: false)
+qga_ss = qga_ss.apply(config_targetos, strict: false)
gen_tlb = []
qga_libs = []
@@ -180,7 +180,7 @@ test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
# the leak detector in build-oss-fuzz Gitlab CI test. we should re-enable
# this when an alternative is implemented or when the underlying glib
# issue is identified/fix
-#if 'CONFIG_POSIX' in config_host
+#if targetos != 'windows'
if false
srcs = [files('commands-posix-ssh.c')]
i = 0
diff --git a/storage-daemon/meson.build b/storage-daemon/meson.build
index 49c9d2eac91..5e90cd32b40 100644
--- a/storage-daemon/meson.build
+++ b/storage-daemon/meson.build
@@ -5,7 +5,7 @@ qsd_ss.add(blockdev, chardev, qmp, qom, qemuutil, gnutls)
subdir('qapi')
if have_tools
- qsd_ss = qsd_ss.apply(config_host, strict: false)
+ qsd_ss = qsd_ss.apply(config_targetos, strict: false)
qsd = executable('qemu-storage-daemon',
qsd_ss.sources(),
dependencies: qsd_ss.dependencies(),
diff --git a/tcg/meson.build b/tcg/meson.build
index c0252c41988..0014dca7d4f 100644
--- a/tcg/meson.build
+++ b/tcg/meson.build
@@ -22,7 +22,7 @@ if get_option('tcg_interpreter')
tcg_ss.add(files('tci.c'))
endif
-tcg_ss = tcg_ss.apply(config_host, strict: false)
+tcg_ss = tcg_ss.apply(config_targetos, strict: false)
libtcg_user = static_library('tcg_user',
tcg_ss.sources() + genh,
diff --git a/tests/meson.build b/tests/meson.build
index c2528a88f99..debaa4505eb 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -68,7 +68,7 @@ test_deps = {
'test-qht-par': qht_bench,
}
-if have_tools and have_vhost_user and 'CONFIG_LINUX' in config_host
+if have_tools and have_vhost_user and targetos == 'linux'
executable('vhost-user-bridge',
sources: files('vhost-user-bridge.c'),
dependencies: [qemuutil, vhost_user])
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index c0751ef7c35..4a9b0267e50 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -38,8 +38,8 @@ qtests_cxl = \
# for the availability of the default NICs in the tests
qtests_filter = \
(get_option('default_devices') and slirp.found() ? ['test-netfilter'] : []) + \
- (get_option('default_devices') and config_host.has_key('CONFIG_POSIX') ? ['test-filter-mirror'] : []) + \
- (get_option('default_devices') and config_host.has_key('CONFIG_POSIX') ? ['test-filter-redirector'] : [])
+ (get_option('default_devices') and targetos != 'windows' ? ['test-filter-mirror'] : []) + \
+ (get_option('default_devices') and targetos != 'windows' ? ['test-filter-redirector'] : [])
qtests_i386 = \
(slirp.found() ? ['pxe-test'] : []) + \
@@ -48,7 +48,7 @@ qtests_i386 = \
(config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) + \
(config_all_devices.has_key('CONFIG_SGA') ? ['boot-serial-test'] : []) + \
(config_all_devices.has_key('CONFIG_ISA_IPMI_KCS') ? ['ipmi-kcs-test'] : []) + \
- (config_host.has_key('CONFIG_LINUX') and \
+ (targetos == 'linux' and \
config_all_devices.has_key('CONFIG_ISA_IPMI_BT') and
config_all_devices.has_key('CONFIG_IPMI_EXTERN') ? ['ipmi-bt-test'] : []) + \
(config_all_devices.has_key('CONFIG_WDT_IB700') ? ['wdt_ib700-test'] : []) + \
@@ -74,7 +74,7 @@ qtests_i386 = \
(config_all_devices.has_key('CONFIG_SB16') ? ['fuzz-sb16-test'] : []) + \
(config_all_devices.has_key('CONFIG_SDHCI_PCI') ? ['fuzz-sdcard-test'] : []) + \
(config_all_devices.has_key('CONFIG_ESP_PCI') ? ['am53c974-test'] : []) + \
- (config_host.has_key('CONFIG_POSIX') and \
+ (targetos != 'windows' and \
config_all_devices.has_key('CONFIG_ACPI_ERST') ? ['erst-test'] : []) + \
(config_all_devices.has_key('CONFIG_PCIE_PORT') and \
config_all_devices.has_key('CONFIG_VIRTIO_NET') and \
@@ -275,7 +275,7 @@ if config_all_devices.has_key('CONFIG_VIRTIO_SERIAL')
qos_test_ss.add(files('virtio-serial-test.c'))
endif
-if config_host.has_key('CONFIG_POSIX')
+if targetos != 'windows'
qos_test_ss.add(files('e1000e-test.c'))
endif
if have_virtfs
@@ -308,7 +308,7 @@ qtests = {
'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'],
'migration-test': migration_files,
'pxe-test': files('boot-sector.c'),
- 'qos-test': [chardev, io, qos_test_ss.apply(config_host, strict: false).sources()],
+ 'qos-test': [chardev, io, qos_test_ss.apply(config_targetos, strict: false).sources()],
'tpm-crb-swtpm-test': [io, tpmemu_files],
'tpm-crb-test': [io, tpmemu_files],
'tpm-tis-swtpm-test': [io, tpmemu_files, 'tpm-tis-util.c'],
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index 93977cc32d2..0299ef6906c 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -98,7 +98,7 @@ if have_block
}
if gnutls.found() and \
tasn1.found() and \
- 'CONFIG_POSIX' in config_host
+ targetos != 'windows'
tests += {
'test-crypto-tlscredsx509': ['crypto-tls-x509-helpers.c', 'pkix_asn1_tab.c',
tasn1, crypto, gnutls],
@@ -113,7 +113,7 @@ if have_block
if xts == 'private'
tests += {'test-crypto-xts': [crypto, io]}
endif
- if 'CONFIG_POSIX' in config_host
+ if targetos != 'windows'
tests += {
'test-image-locking': [testblock],
'test-nested-aio-poll': [testblock],
@@ -148,7 +148,7 @@ if have_system
# are not runnable under TSan due to a known issue.
# https://github.com/google/sanitizers/issues/1116
if not get_option('tsan')
- if 'CONFIG_POSIX' in config_host
+ if targetos != 'windows'
tests += {
'test-char': ['socket-helpers.c', qom, io, chardev]
}
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 14/15] meson: list leftover CONFIG_* symbols
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (12 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 13/15] configure, meson: remove target OS symbols " Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 15/15] configure: remove dead code Paolo Bonzini
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
There are no config-host.mak symbols anymore that are needed in
config-host.h; the only symbols that are included in config_host_data via
the foreach loop are:
- CONFIG_DEFAULT_TARGETS, which is not used by C code.
- CONFIG_TCG and CONFIG_TCG_INTERPRETER, which are not part of config-host.mak
So, list these two symbols explicitly.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
docs/devel/build-system.rst | 8 ++------
meson.build | 10 ++--------
2 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/docs/devel/build-system.rst b/docs/devel/build-system.rst
index 64efa26b905..0f990bb3e90 100644
--- a/docs/devel/build-system.rst
+++ b/docs/devel/build-system.rst
@@ -460,17 +460,13 @@ Built by configure:
``config-host.mak``
When configure has determined the characteristics of the build host it
- will write them to this file for use in ``Makefile`` and to a smaller
- extent ``meson.build``. These include the paths to various tools and a
- variety of ``CONFIG_*`` variables related to optionally enabled features.
+ will write the paths to various tools to this file, for use in ``Makefile``
+ and to a smaller extent ``meson.build``.
``config-host.mak`` is also used as a dependency checking mechanism. If make
sees that the modification timestamp on configure is newer than that on
``config-host.mak``, then configure will be re-run.
- The variables defined here apply to all QEMU
- build outputs.
-
``config-meson.cross``
A Meson "cross file" (or native file) used to communicate the paths to
diff --git a/meson.build b/meson.build
index d3feac656cb..cde2b58b91e 100644
--- a/meson.build
+++ b/meson.build
@@ -691,7 +691,6 @@ if get_option('tcg').allowed()
endif
if get_option('tcg_interpreter')
tcg_arch = 'tci'
- config_host += { 'CONFIG_TCG_INTERPRETER': 'y' }
elif host_arch == 'x86_64'
tcg_arch = 'i386'
elif host_arch == 'ppc64'
@@ -701,7 +700,6 @@ if get_option('tcg').allowed()
language: all_languages)
accelerators += 'CONFIG_TCG'
- config_host += { 'CONFIG_TCG': 'y' }
endif
if 'CONFIG_KVM' not in accelerators and get_option('kvm').enabled()
@@ -2132,6 +2130,10 @@ if seccomp.found()
endif
config_host_data.set('CONFIG_SNAPPY', snappy.found())
config_host_data.set('CONFIG_SOLARIS', targetos == 'sunos')
+if get_option('tcg').allowed()
+ config_host_data.set('CONFIG_TCG', 1)
+ config_host_data.set('CONFIG_TCG_INTERPRETER', tcg_arch == 'tci')
+endif
config_host_data.set('CONFIG_TPM', have_tpm)
config_host_data.set('CONFIG_TSAN', get_option('tsan'))
config_host_data.set('CONFIG_USB_LIBUSB', libusb.found())
@@ -2760,12 +2762,6 @@ if targetos == 'windows' and 'cpp' in all_languages
endif
config_host_data.set('HAVE_VSS_SDK', have_vss_sdk)
-foreach k, v: config_host
- if k.startswith('CONFIG_')
- config_host_data.set(k, v == 'y' ? 1 : v)
- endif
-endforeach
-
# Older versions of MinGW do not import _lock_file and _unlock_file properly.
# This was fixed for v6.0.0 with commit b48e3ac8969d.
if targetos == 'windows'
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 15/15] configure: remove dead code
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
` (13 preceding siblings ...)
2023-09-02 12:59 ` [PATCH 14/15] meson: list leftover CONFIG_* symbols Paolo Bonzini
@ 2023-09-02 12:59 ` Paolo Bonzini
14 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-02 12:59 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 8 --------
1 file changed, 8 deletions(-)
diff --git a/configure b/configure
index 6404b659718..a8d79602098 100755
--- a/configure
+++ b/configure
@@ -1126,14 +1126,6 @@ else
done
fi
-# see if system emulation was really requested
-case " $target_list " in
- *"-softmmu "*) softmmu=yes
- ;;
- *) softmmu=no
- ;;
-esac
-
if test "$tcg" = "auto"; then
if test -z "$target_list"; then
tcg="disabled"
--
2.41.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 06/15] configure: remove boolean variables for targets
2023-09-02 12:59 ` [PATCH 06/15] configure: remove boolean variables for targets Paolo Bonzini
@ 2023-09-02 23:30 ` Richard Henderson
2023-09-04 8:15 ` Thomas Huth
1 sibling, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2023-09-02 23:30 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 9/2/23 05:59, Paolo Bonzini wrote:
> Just use $targetos always.
>
> Signed-off-by: Paolo Bonzini<pbonzini@redhat.com>
> ---
> configure | 55 +++++++++++++------------------------------------------
> 1 file changed, 13 insertions(+), 42 deletions(-)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 02/15] meson: update unsupported host/CPU messages
2023-09-02 12:59 ` [PATCH 02/15] meson: update unsupported host/CPU messages Paolo Bonzini
@ 2023-09-04 8:09 ` Thomas Huth
0 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2023-09-04 8:09 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 02/09/2023 14.59, Paolo Bonzini wrote:
> Unsupported CPU and OSes are not really going away, but the
> project simply does not guarantee that they work. Rephrase
> the messages accordingly. While at it, move the warning for
> TCI performance at the end where it is more visible.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> meson.build | 45 ++++++++++++++++++++++++++-------------------
> 1 file changed, 26 insertions(+), 19 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 98e68ef0b1e..9bcf117f8a4 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -678,9 +678,7 @@ endif
> tcg_arch = host_arch
> if get_option('tcg').allowed()
> if host_arch == 'unknown'
> - if get_option('tcg_interpreter')
> - warning('Unsupported CPU @0@, will use TCG with TCI (slow)'.format(cpu))
> - else
> + if not get_option('tcg_interpreter')
> error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu))
> endif
> elif get_option('tcg_interpreter')
> @@ -4317,28 +4315,37 @@ summary_info += {'selinux': selinux}
> summary_info += {'libdw': libdw}
> summary(summary_info, bool_yn: true, section: 'Dependencies')
>
> -if not supported_cpus.contains(cpu)
> +if host_arch == 'unknown'
> message()
> - warning('SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!')
> + warning('UNSUPPORTED HOST CPU')
> message()
> - message('CPU host architecture ' + cpu + ' support is not currently maintained.')
> - message('The QEMU project intends to remove support for this host CPU in')
> - message('a future release if nobody volunteers to maintain it and to')
> - message('provide a build host for our continuous integration setup.')
> - message('configure has succeeded and you can continue to build, but')
> - message('if you care about QEMU on this platform you should contact')
> - message('us upstream at qemu-devel@nongnu.org.')
> + message('Support for CPU host architecture ' + cpu + ' is not currently')
> + message('maintained. The QEMU project does not guarantee that QEMU will')
> + message('compile or work on this host CPU. You can help by volunteering')
> + message('to maintain it and providing a build host for our continuous.')
Please remove the dot after "continuous".
> + message('integration setup.')
> + if get_option('tcg').allowed() and target_dirs.length() > 0
> + message()
> + message('configure has succeeded and you can continue to build, but')
> + message('QEMU will use a slow interpreter to emulate the target CPU.')
> + endif
> endif
>
> if not supported_oses.contains(targetos)
> message()
> - warning('WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!')
> + warning('UNSUPPORTED HOST OS')
> message()
> - message('Host OS ' + targetos + 'support is not currently maintained.')
> - message('The QEMU project intends to remove support for this host OS in')
> - message('a future release if nobody volunteers to maintain it and to')
> - message('provide a build host for our continuous integration setup.')
> + message('Support for host OS ' + targetos + 'is not currently maintained.')
> message('configure has succeeded and you can continue to build, but')
> - message('if you care about QEMU on this platform you should contact')
> - message('us upstream at qemu-devel@nongnu.org.')
> + message('the QEMU project does not guarantee that QEMU will compile or')
You are starting a new sentence here, so "the" at the beginning should start
with a capital letter?
> + message('work on this operating system. You can help by volunteering')
> + message('to maintain it and providing a build host for our continuous.')
Please remove the dot after "continuous".
> + message('integration setup. This will ensure that future versions of QEMU')
> + message('will keep working on ' + targetos + '.')
> +endif
> +
> +if host_arch == 'unknown' or not supported_oses.contains(targetos)
> + message()
> + message('If you care about QEMU on this platform, please contact the')
> + message('developers at qemu-devel@nongnu.org.')
I'd maybe add a "and want to keep it alive" or "and want to keep it up and
running" after "platform".
> endif
With the nits fixed:
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 06/15] configure: remove boolean variables for targets
2023-09-02 12:59 ` [PATCH 06/15] configure: remove boolean variables for targets Paolo Bonzini
2023-09-02 23:30 ` Richard Henderson
@ 2023-09-04 8:15 ` Thomas Huth
2023-09-05 6:00 ` Paolo Bonzini
1 sibling, 1 reply; 20+ messages in thread
From: Thomas Huth @ 2023-09-04 8:15 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 02/09/2023 14.59, Paolo Bonzini wrote:
> Just use $targetos always.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 55 +++++++++++++------------------------------------------
> 1 file changed, 13 insertions(+), 42 deletions(-)
...
> @@ -1718,7 +1687,7 @@ echo all: >> $config_host_mak
> if test "$debug_tcg" = "yes" ; then
> echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
> fi
> -if test "$mingw32" = "yes" ; then
> +if test "$targetos" = "windows"; then
> echo "CONFIG_WIN32=y" >> $config_host_mak
> echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
> echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO-Linux}" >> $config_host_mak
> @@ -1727,24 +1696,26 @@ else
> echo "CONFIG_POSIX=y" >> $config_host_mak
> fi
>
> -if test "$linux" = "yes" ; then
> +if test "$targetos" = "linux" ; then
> echo "CONFIG_LINUX=y" >> $config_host_mak
> fi
>
> -if test "$darwin" = "yes" ; then
> +if test "$targetos" = "darwin" ; then
> echo "CONFIG_DARWIN=y" >> $config_host_mak
> fi
>
> -if test "$solaris" = "yes" ; then
> +if test "$targetos" = "sunos" ; then
> echo "CONFIG_SOLARIS=y" >> $config_host_mak
> fi
> echo "SRC_PATH=$source_path" >> $config_host_mak
> echo "TARGET_DIRS=$target_list" >> $config_host_mak
>
> # XXX: suppress that
> -if [ "$bsd" = "yes" ] ; then
> - echo "CONFIG_BSD=y" >> $config_host_mak
> -fi
> +case $targetos in
> + gnu/kfreebsd | freebsd | dragonfly | netbsd | openbsd | darwin)
> + echo "CONFIG_BSD=y" >> $config_host_mak
> + ;;
> +esac
It might look nicer to put the linux and solaris parts from above as
separate entries in the new case-esac statement.
Anyway:
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 06/15] configure: remove boolean variables for targets
2023-09-04 8:15 ` Thomas Huth
@ 2023-09-05 6:00 ` Paolo Bonzini
0 siblings, 0 replies; 20+ messages in thread
From: Paolo Bonzini @ 2023-09-05 6:00 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 316 bytes --]
Il lun 4 set 2023, 10:15 Thomas Huth <thuth@redhat.com> ha scritto:
> It might look nicer to put the linux and solaris parts from above as
> separate entries in the new case-esac statement.
>
True but it all disappears by the end of the series.
Paolo
> Anyway:
> Reviewed-by: Thomas Huth <thuth@redhat.com>
>
>
[-- Attachment #2: Type: text/html, Size: 971 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2023-09-05 6:01 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-02 12:59 [PATCH v2 00/15] configure cleanups for QEMU 8.2 Paolo Bonzini
2023-09-02 12:59 ` [PATCH 01/15] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
2023-09-02 12:59 ` [PATCH 02/15] meson: update unsupported host/CPU messages Paolo Bonzini
2023-09-04 8:09 ` Thomas Huth
2023-09-02 12:59 ` [PATCH 03/15] configure: remove HOST_CC Paolo Bonzini
2023-09-02 12:59 ` [PATCH 04/15] configure: create native file with contents of $host_cc Paolo Bonzini
2023-09-02 12:59 ` [PATCH 05/15] meson: compile bundled device trees Paolo Bonzini
2023-09-02 12:59 ` [PATCH 06/15] configure: remove boolean variables for targets Paolo Bonzini
2023-09-02 23:30 ` Richard Henderson
2023-09-04 8:15 ` Thomas Huth
2023-09-05 6:00 ` Paolo Bonzini
2023-09-02 12:59 ` [PATCH 07/15] configure: move --enable-debug-tcg to meson Paolo Bonzini
2023-09-02 12:59 ` [PATCH 08/15] meson: test for CONFIG_TCG in config_all Paolo Bonzini
2023-09-02 12:59 ` [PATCH 09/15] contrib/plugins: use an independent makefile Paolo Bonzini
2023-09-02 12:59 ` [PATCH 10/15] configure: unify recursion into sub-Makefiles Paolo Bonzini
2023-09-02 12:59 ` [PATCH 11/15] configure, meson: move --enable-plugins to meson Paolo Bonzini
2023-09-02 12:59 ` [PATCH 12/15] configure, meson: remove CONFIG_SOLARIS from config-host.mak Paolo Bonzini
2023-09-02 12:59 ` [PATCH 13/15] configure, meson: remove target OS symbols " Paolo Bonzini
2023-09-02 12:59 ` [PATCH 14/15] meson: list leftover CONFIG_* symbols Paolo Bonzini
2023-09-02 12:59 ` [PATCH 15/15] configure: remove dead code Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).