* [PATCH 00/17] More build system cleanups, optional non-relocatable installs
@ 2023-10-16 6:31 Paolo Bonzini
2023-10-16 6:31 ` [PATCH 01/17] meson: do not build shaders by default Paolo Bonzini
` (16 more replies)
0 siblings, 17 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
This mostly removes or simplifies some option parsing code, with some extra
items of interest:
- support for non-relocatable installs, which Michael Tokarev requested
a while ago.
- the main change outside configure and meson.build is a simplification
of GDB conditionals, by unifying HAVE_GDB_BIN and HOST_GDB_SUPPORTS_ARCH
in tests/tcg.
- on the "future work" side, patch 2 adds a macro IS_ENABLED() that can
be used in the future to replace #ifdef statements with "if()" so that
both sides are compiled.
- qemu-ga parameters (manufacturer, distro, version) can be configured
with command-line options in addition to environment variables
- finally, some changes to add comments or put related code together
Paolo
Paolo Bonzini (17):
meson: do not build shaders by default
meson: do not use set10
meson, cutils: allow non-relocatable installs
configure: clean up handling of CFI option
hw/xen: cleanup sourcesets
hw/remote: move stub vfu_object_set_bus_irq out of stubs/
tests/tcg/arm: move non-SVE tests out of conditional
configure, tests/tcg: simplify GDB conditionals
configure: clean up plugin option handling
configure: clean up PIE option handling
configure: remove some dead cruft
configure: move target-specific defaults to an external machine file
configure: move environment-specific defaults to config-meson.cross
configure: unify handling of several Debian cross containers
configure, meson: use command line options to configure qemu-ga
meson-buildoptions: document the data at the top
meson: add a note on why we use config_host for program paths
configs/meson/windows.txt | 9 +
configure | 250 +++++++-----------
hw/arm/meson.build | 1 -
hw/i386/meson.build | 1 -
hw/remote/meson.build | 4 +-
.../remote/vfio-user-obj-stub.c | 0
hw/xen/meson.build | 11 +-
include/qemu/compiler.h | 15 ++
meson.build | 32 ++-
meson_options.txt | 9 +
qga/meson.build | 9 +-
scripts/meson-buildoptions.py | 32 ++-
scripts/meson-buildoptions.sh | 26 +-
stubs/meson.build | 1 -
tests/tcg/aarch64/Makefile.target | 16 +-
tests/tcg/multiarch/Makefile.target | 18 +-
.../multiarch/system/Makefile.softmmu-target | 15 +-
tests/tcg/s390x/Makefile.target | 6 +-
tests/unit/test-coroutine.c | 2 +-
ui/shader/meson.build | 1 +
util/cutils.c | 11 +-
util/qemu-coroutine.c | 4 +-
22 files changed, 251 insertions(+), 222 deletions(-)
create mode 100644 configs/meson/windows.txt
rename stubs/vfio-user-obj.c => hw/remote/vfio-user-obj-stub.c (100%)
--
2.41.0
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 01/17] meson: do not build shaders by default
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 9:04 ` Manos Pitsidianakis
2023-10-16 6:31 ` [PATCH 02/17] meson: do not use set10 Paolo Bonzini
` (15 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
They are not needed when building user-mode emulators.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
ui/shader/meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/ui/shader/meson.build b/ui/shader/meson.build
index 592bf596b9a..3137e65578e 100644
--- a/ui/shader/meson.build
+++ b/ui/shader/meson.build
@@ -10,5 +10,6 @@ foreach e : shaders
output: output,
capture: true,
input: files('@0@.@1@'.format(e[0], e[1])),
+ build_by_default: false,
command: [shaderinclude, '@INPUT0@'])
endforeach
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 02/17] meson: do not use set10
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
2023-10-16 6:31 ` [PATCH 01/17] meson: do not build shaders by default Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-19 0:06 ` Richard Henderson
2023-10-16 6:31 ` [PATCH 03/17] meson, cutils: allow non-relocatable installs Paolo Bonzini
` (14 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Make all items of config-host.h consistent. To keep the --disable-coroutine-pool
code visible to the compiler, mutuate the IS_ENABLED() macro from Linux.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
include/qemu/compiler.h | 15 +++++++++++++++
meson.build | 2 +-
tests/unit/test-coroutine.c | 2 +-
util/qemu-coroutine.c | 4 ++--
4 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index 1109482a000..c797f0d4572 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -212,4 +212,19 @@
# define QEMU_USED
#endif
+/*
+ * Ugly CPP trick that is like "defined FOO", but also works in C
+ * code. Useful to replace #ifdef with "if" statements; assumes
+ * the symbol was defined with Meson's "config.set()", so it is empty
+ * if defined.
+ */
+#define IS_ENABLED(x) IS_EMPTY(x)
+
+#define IS_EMPTY_JUNK_ junk,
+#define IS_EMPTY(value) IS_EMPTY_(IS_EMPTY_JUNK_##value)
+
+/* Expands to either SECOND_ARG(junk, 1, 0) or SECOND_ARG(IS_EMPTY_JUNK_CONFIG_FOO 1, 0) */
+#define SECOND_ARG(first, second, ...) second
+#define IS_EMPTY_(junk_maybecomma) SECOND_ARG(junk_maybecomma 1, 0)
+
#endif /* COMPILER_H */
diff --git a/meson.build b/meson.build
index bd65a111aa8..010d2c649c2 100644
--- a/meson.build
+++ b/meson.build
@@ -2194,7 +2194,7 @@ if get_option('debug_stack_usage') and have_coroutine_pool
message('Disabling coroutine pool to measure stack usage')
have_coroutine_pool = false
endif
-config_host_data.set10('CONFIG_COROUTINE_POOL', have_coroutine_pool)
+config_host_data.set('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'))
diff --git a/tests/unit/test-coroutine.c b/tests/unit/test-coroutine.c
index b0d21d673a0..a2563647e74 100644
--- a/tests/unit/test-coroutine.c
+++ b/tests/unit/test-coroutine.c
@@ -645,7 +645,7 @@ int main(int argc, char **argv)
* with a sentinel value. If there is no freelist this would legitimately
* crash, so skip it.
*/
- if (CONFIG_COROUTINE_POOL) {
+ if (IS_ENABLED(CONFIG_COROUTINE_POOL)) {
g_test_add_func("/basic/no-dangling-access", test_no_dangling_access);
}
diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c
index 17a88f65053..5fd2dbaf8bb 100644
--- a/util/qemu-coroutine.c
+++ b/util/qemu-coroutine.c
@@ -57,7 +57,7 @@ Coroutine *qemu_coroutine_create(CoroutineEntry *entry, void *opaque)
{
Coroutine *co = NULL;
- if (CONFIG_COROUTINE_POOL) {
+ if (IS_ENABLED(CONFIG_COROUTINE_POOL)) {
CoroutineQSList *alloc_pool = get_ptr_alloc_pool();
co = QSLIST_FIRST(alloc_pool);
@@ -99,7 +99,7 @@ static void coroutine_delete(Coroutine *co)
{
co->caller = NULL;
- if (CONFIG_COROUTINE_POOL) {
+ if (IS_ENABLED(CONFIG_COROUTINE_POOL)) {
if (release_pool_size < qatomic_read(&pool_max_size) * 2) {
QSLIST_INSERT_HEAD_ATOMIC(&release_pool, co, pool_next);
qatomic_inc(&release_pool_size);
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
2023-10-16 6:31 ` [PATCH 01/17] meson: do not build shaders by default Paolo Bonzini
2023-10-16 6:31 ` [PATCH 02/17] meson: do not use set10 Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 7:12 ` Markus Armbruster
2023-10-16 9:08 ` Manos Pitsidianakis
2023-10-16 6:31 ` [PATCH 04/17] configure: clean up handling of CFI option Paolo Bonzini
` (13 subsequent siblings)
16 siblings, 2 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel; +Cc: Michael Tokarev
Suggested-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 21 +++++++++++++++++++++
meson_options.txt | 2 ++
scripts/meson-buildoptions.sh | 3 +++
util/cutils.c | 11 ++++++++---
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/meson.build b/meson.build
index 010d2c649c2..251838f2609 100644
--- a/meson.build
+++ b/meson.build
@@ -2111,6 +2111,7 @@ 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_RELOCATABLE', get_option('relocatable'))
config_host_data.set('CONFIG_SAFESTACK', get_option('safe_stack'))
config_host_data.set('CONFIG_SDL', sdl.found())
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
@@ -4054,6 +4055,7 @@ if 'simple' in get_option('trace_backends')
endif
summary_info += {'D-Bus display': dbus_display}
summary_info += {'QOM debugging': get_option('qom_cast_debug')}
+summary_info += {'Relocatable install': get_option('relocatable')}
summary_info += {'vhost-kernel support': have_vhost_kernel}
summary_info += {'vhost-net support': have_vhost_net}
summary_info += {'vhost-user support': have_vhost_user}
@@ -4356,3 +4358,22 @@ if host_arch == 'unknown' or not supported_oses.contains(targetos)
message('If you want to help supporting QEMU on this platform, please')
message('contact the developers at qemu-devel@nongnu.org.')
endif
+
+actually_reloc = get_option('relocatable')
+# check if get_relocated_path() is actually able to relocate paths
+if get_option('relocatable') and \
+ not (get_option('prefix') / get_option('bindir')).startswith(get_option('prefix') / '')
+ message()
+ warning('bindir not included within prefix, the installation will not be relocatable.')
+ message()
+ message('Use --disable-relocatable to remove this warning.')
+ actually_reloc = false
+endif
+if not actually_reloc and (targetos == 'windows' or get_option('relocatable'))
+ if targetos == 'windows'
+ message()
+ warning('Windows installs should usually be relocatable.')
+ endif
+ message()
+ message('QEMU will have to be installed under ' + get_option('prefix') + '.')
+endif
diff --git a/meson_options.txt b/meson_options.txt
index 6a17b909680..e237b268469 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -101,6 +101,8 @@ option('cfi_debug', type: 'boolean', value: false,
description: 'Verbose errors in case of CFI violation')
option('multiprocess', type: 'feature', value: 'auto',
description: 'Out of process device emulation support')
+option('relocatable', type : 'boolean', value : 'true',
+ description: 'toggle relocatable install')
option('vfio_user_server', type: 'feature', value: 'disabled',
description: 'vfio-user server support')
option('dbus_display', type: 'feature', value: 'auto',
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 2a74b0275b3..d4b89e6b443 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -17,6 +17,7 @@ meson_options_help() {
printf "%s\n" ' code for the Hexagon frontend'
printf "%s\n" ' --disable-install-blobs install provided firmware blobs'
printf "%s\n" ' --disable-qom-cast-debug cast debugging support'
+ printf "%s\n" ' --disable-relocatable toggle relocatable install'
printf "%s\n" ' --docdir=VALUE Base directory for documentation installation'
printf "%s\n" ' (can be empty) [share/doc]'
printf "%s\n" ' --enable-block-drv-whitelist-in-tools'
@@ -421,6 +422,8 @@ _meson_option_parse() {
--disable-rbd) printf "%s" -Drbd=disabled ;;
--enable-rdma) printf "%s" -Drdma=enabled ;;
--disable-rdma) printf "%s" -Drdma=disabled ;;
+ --enable-relocatable) printf "%s" -Drelocatable=true ;;
+ --disable-relocatable) printf "%s" -Drelocatable=false ;;
--enable-replication) printf "%s" -Dreplication=enabled ;;
--disable-replication) printf "%s" -Dreplication=disabled ;;
--enable-rng-none) printf "%s" -Drng_none=true ;;
diff --git a/util/cutils.c b/util/cutils.c
index c99d26c5e2d..64f817b477b 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -1178,9 +1178,11 @@ char *get_relocated_path(const char *dir)
#else
g_string_append(result, dir);
#endif
- } else if (!starts_with_prefix(dir) || !starts_with_prefix(bindir)) {
- g_string_assign(result, dir);
- } else {
+ goto out;
+ }
+
+ if (IS_ENABLED(CONFIG_RELOCATABLE) &&
+ starts_with_prefix(dir) && starts_with_prefix(bindir)) {
g_string_assign(result, exec_dir);
/* Advance over common components. */
@@ -1203,7 +1205,10 @@ char *get_relocated_path(const char *dir)
assert(G_IS_DIR_SEPARATOR(dir[-1]));
g_string_append(result, dir - 1);
}
+ goto out;
}
+ g_string_assign(result, dir);
+out:
return g_string_free(result, false);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 04/17] configure: clean up handling of CFI option
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (2 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 03/17] meson, cutils: allow non-relocatable installs Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 9:22 ` Philippe Mathieu-Daudé
2023-10-16 6:31 ` [PATCH 05/17] hw/xen: cleanup sourcesets Paolo Bonzini
` (12 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Avoid that --enable-cfi --disable-cfi leaves b_lto set to true.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/configure b/configure
index bce8c57596f..3da46ed202d 100755
--- a/configure
+++ b/configure
@@ -766,11 +766,9 @@ for opt do
;;
--disable-werror) werror="no"
;;
- --enable-cfi)
- cfi="true";
- meson_option_add -Db_lto=true
+ --enable-cfi) cfi=true
;;
- --disable-cfi) cfi="false"
+ --disable-cfi) cfi=false
;;
--disable-download) download="disabled"; git_submodules_action=validate;
;;
@@ -1845,6 +1843,7 @@ if test "$skip_meson" = no; then
# QEMU options
test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
+ test "$cfi" != false && meson_option_add "-Db_lto=$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"
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 05/17] hw/xen: cleanup sourcesets
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (3 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 04/17] configure: clean up handling of CFI option Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 06/17] hw/remote: move stub vfu_object_set_bus_irq out of stubs/ Paolo Bonzini
` (11 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
xen_ss is added unconditionally to arm_ss and i386_ss (the only
targets that can have CONFIG_XEN enabled) and its contents are gated by
CONFIG_XEN; xen_specific_ss has no condition for its constituent files
but is gated on CONFIG_XEN when its added to specific_ss.
So xen_ss is a duplicate of xen_specific_ss, though defined in a
different way. Merge the two by eliminating xen_ss.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/arm/meson.build | 1 -
hw/i386/meson.build | 1 -
hw/xen/meson.build | 11 ++++-------
3 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/hw/arm/meson.build b/hw/arm/meson.build
index 11eb9112f88..a6feaf1af95 100644
--- a/hw/arm/meson.build
+++ b/hw/arm/meson.build
@@ -64,7 +64,6 @@ arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c'))
arm_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true: files('fsl-imx6ul.c', 'mcimx6ul-evk.c'))
arm_ss.add(when: 'CONFIG_NRF51_SOC', if_true: files('nrf51_soc.c'))
arm_ss.add(when: 'CONFIG_XEN', if_true: files('xen_arm.c'))
-arm_ss.add_all(xen_ss)
system_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmu-common.c'))
system_ss.add(when: 'CONFIG_EXYNOS4', if_true: files('exynos4_boards.c'))
diff --git a/hw/i386/meson.build b/hw/i386/meson.build
index ff879069c98..369c6bf823b 100644
--- a/hw/i386/meson.build
+++ b/hw/i386/meson.build
@@ -32,6 +32,5 @@ subdir('kvm')
subdir('xen')
i386_ss.add_all(xenpv_ss)
-i386_ss.add_all(xen_ss)
hw_arch += {'i386': i386_ss}
diff --git a/hw/xen/meson.build b/hw/xen/meson.build
index 277f9f292b4..d887fa9ba43 100644
--- a/hw/xen/meson.build
+++ b/hw/xen/meson.build
@@ -12,6 +12,10 @@ system_ss.add(when: ['CONFIG_XEN', xen], if_true: files(
))
xen_specific_ss = ss.source_set()
+xen_specific_ss.add(files(
+ 'xen-mapcache.c',
+ 'xen-hvm-common.c',
+))
if have_xen_pci_passthrough
xen_specific_ss.add(files(
'xen-host-pci-device.c',
@@ -26,10 +30,3 @@ else
endif
specific_ss.add_all(when: ['CONFIG_XEN', xen], if_true: xen_specific_ss)
-
-xen_ss = ss.source_set()
-
-xen_ss.add(when: 'CONFIG_XEN', if_true: files(
- 'xen-mapcache.c',
- 'xen-hvm-common.c',
-))
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 06/17] hw/remote: move stub vfu_object_set_bus_irq out of stubs/
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (4 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 05/17] hw/xen: cleanup sourcesets Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 07/17] tests/tcg/arm: move non-SVE tests out of conditional Paolo Bonzini
` (10 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/remote/meson.build | 4 +++-
stubs/vfio-user-obj.c => hw/remote/vfio-user-obj-stub.c | 0
stubs/meson.build | 1 -
3 files changed, 3 insertions(+), 2 deletions(-)
rename stubs/vfio-user-obj.c => hw/remote/vfio-user-obj-stub.c (100%)
diff --git a/hw/remote/meson.build b/hw/remote/meson.build
index a1e8708c732..a3aa29aaf17 100644
--- a/hw/remote/meson.build
+++ b/hw/remote/meson.build
@@ -7,9 +7,11 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('remote-obj.c'))
remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c'))
remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c'))
remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iommu.c'))
-remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: files('vfio-user-obj.c'))
remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: libvfio_user_dep)
+remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: files('vfio-user-obj.c'),
+ if_false: files('vfio-user-obj-stub.c'))
+remote_ss.add(when: 'CONFIG_ALL', if_true: files('vfio-user-obj-stub.c'))
specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('memory.c'))
specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy-memory-listener.c'))
diff --git a/stubs/vfio-user-obj.c b/hw/remote/vfio-user-obj-stub.c
similarity index 100%
rename from stubs/vfio-user-obj.c
rename to hw/remote/vfio-user-obj-stub.c
diff --git a/stubs/meson.build b/stubs/meson.build
index ef6e39a64d8..025e7d2851f 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -65,4 +65,3 @@ else
stub_ss.add(files('qdev.c'))
endif
stub_ss.add(files('semihost-all.c'))
-stub_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_false: files('vfio-user-obj.c'))
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 07/17] tests/tcg/arm: move non-SVE tests out of conditional
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (5 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 06/17] hw/remote: move stub vfu_object_set_bus_irq out of stubs/ Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals Paolo Bonzini
` (9 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
test-aes, sha1-vector and sha512-vector need not be conditional on
$(CROSS_CC_HAS_SVE), reorganize the "if"s to move them outside.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/tcg/aarch64/Makefile.target | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index 2efacf9a5a3..d01b8ff47c8 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -73,11 +73,6 @@ endif
# System Registers Tests
AARCH64_TESTS += sysregs
-ifneq ($(CROSS_CC_HAS_SVE),)
-# SVE ioctl test
-AARCH64_TESTS += sve-ioctls
-sve-ioctls: CFLAGS+=-march=armv8.1-a+sve
-
AARCH64_TESTS += test-aes
test-aes: CFLAGS += -O -march=armv8-a+aes
test-aes: test-aes-main.c.inc
@@ -100,12 +95,15 @@ sha512-vector: sha512.c
TESTS += sha512-vector
ifneq ($(CROSS_CC_HAS_SVE),)
+# SVE ioctl test
+AARCH64_TESTS += sve-ioctls
+sve-ioctls: CFLAGS+=-march=armv8.1-a+sve
+
sha512-sve: CFLAGS=-O3 -march=armv8.1-a+sve
sha512-sve: sha512.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
TESTS += sha512-sve
-endif
ifeq ($(HOST_GDB_SUPPORTS_ARCH),y)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (6 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 07/17] tests/tcg/arm: move non-SVE tests out of conditional Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 9:12 ` Manos Pitsidianakis
2023-10-16 6:31 ` [PATCH 09/17] configure: clean up plugin option handling Paolo Bonzini
` (8 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Unify HAVE_GDB_BIN (currently in config-host.mak) and
HOST_GDB_SUPPORTS_ARCH into a single GDB variable in
config-target.mak.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 30 +++++++++----------
meson.build | 4 +--
tests/tcg/aarch64/Makefile.target | 6 ++--
tests/tcg/multiarch/Makefile.target | 18 ++++-------
.../multiarch/system/Makefile.softmmu-target | 15 ++++------
tests/tcg/s390x/Makefile.target | 6 ++--
6 files changed, 33 insertions(+), 46 deletions(-)
diff --git a/configure b/configure
index 3da46ed202d..732220fdd45 100755
--- a/configure
+++ b/configure
@@ -1136,6 +1136,18 @@ if test "$tcg" = "auto"; then
fi
fi
+#########################################
+# gdb test
+
+if test -n "$gdb_bin"; then
+ gdb_version=$($gdb_bin --version | head -n 1)
+ if version_ge ${gdb_version##* } 9.1; then
+ gdb_arches=$($python "$source_path/scripts/probe-gdb-support.py" $gdb_bin)
+ else
+ gdb_bin=""
+ fi
+fi
+
##########################################
# big/little endian test
cat > $TMPC << EOF
@@ -1656,17 +1668,7 @@ fi
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
-
-if test -n "$gdb_bin"; then
- gdb_version=$($gdb_bin --version | head -n 1)
- if version_ge ${gdb_version##* } 9.1; then
- echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
- gdb_arches=$($python "$source_path/scripts/probe-gdb-support.py" $gdb_bin)
- else
- gdb_bin=""
- fi
-fi
-
+echo "GDB=$gdb_bin" >> $config_host_mak
if test "$container" != no; then
echo "RUNC=$runc" >> $config_host_mak
fi
@@ -1711,10 +1713,6 @@ mkdir -p tests/tcg
echo "# Automatically generated by configure - do not modify" > $config_host_mak
echo "SRC_PATH=$source_path" >> $config_host_mak
-# versioned checked in the main config_host.mak above
-if test -n "$gdb_bin"; then
- echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
-fi
if test "$plugins" = "yes" ; then
echo "CONFIG_PLUGIN=y" >> $config_host_mak
fi
@@ -1751,7 +1749,7 @@ for target in $target_list; do
# will GDB work with these binaries?
if test "${gdb_arches#*$arch}" != "$gdb_arches"; then
- echo "HOST_GDB_SUPPORTS_ARCH=y" >> "$config_target_mak"
+ echo "GDB=$gdb_bin" >> $config_target_mak
fi
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> Makefile.prereqs
diff --git a/meson.build b/meson.build
index 251838f2609..87bb4e9243a 100644
--- a/meson.build
+++ b/meson.build
@@ -4021,8 +4021,8 @@ summary(summary_info, bool_yn: true, section: 'Directories')
summary_info = {}
summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
summary_info += {'sphinx-build': sphinx_build}
-if config_host.has_key('HAVE_GDB_BIN')
- summary_info += {'gdb': config_host['HAVE_GDB_BIN']}
+if config_host.has_key('GDB')
+ summary_info += {'gdb': config_host['GDB']}
endif
summary_info += {'iasl': iasl}
summary_info += {'genisoimage': config_host['GENISOIMAGE']}
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index d01b8ff47c8..62b38c792fb 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -105,19 +105,19 @@ sha512-sve: sha512.c
TESTS += sha512-sve
-ifeq ($(HOST_GDB_SUPPORTS_ARCH),y)
+ifneq ($(GDB),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
run-gdbstub-sysregs: sysregs
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(AARCH64_SRC)/gdbstub/test-sve.py, \
basic gdbstub SVE support)
run-gdbstub-sve-ioctls: sve-ioctls
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(AARCH64_SRC)/gdbstub/test-sve-ioctl.py, \
basic gdbstub SVE ZLEN support)
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 43bddeaf212..f3bfaf1a228 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -63,45 +63,39 @@ run-test-mmap: test-mmap
run-test-mmap-%: test-mmap
$(call run-test, test-mmap-$*, $(QEMU) -p $* $<, $< ($* byte pages))
-ifneq ($(HAVE_GDB_BIN),)
-ifeq ($(HOST_GDB_SUPPORTS_ARCH),y)
+ifneq ($(GDB),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
run-gdbstub-sha1: sha1
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(MULTIARCH_SRC)/gdbstub/sha1.py, \
basic gdbstub support)
run-gdbstub-qxfer-auxv-read: sha1
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-auxv-read.py, \
basic gdbstub qXfer:auxv:read support)
run-gdbstub-proc-mappings: sha1
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-proc-mappings.py, \
proc mappings support)
run-gdbstub-thread-breakpoint: testthread
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-thread-breakpoint.py, \
hitting a breakpoint on non-main thread)
-
else
run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "no guest arch support")
-endif
-else
-run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "need working gdb")
+ $(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
endif
EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint
diff --git a/tests/tcg/multiarch/system/Makefile.softmmu-target b/tests/tcg/multiarch/system/Makefile.softmmu-target
index 90810a32b2f..dee4f58dea1 100644
--- a/tests/tcg/multiarch/system/Makefile.softmmu-target
+++ b/tests/tcg/multiarch/system/Makefile.softmmu-target
@@ -14,13 +14,12 @@ VPATH+=$(MULTIARCH_SYSTEM_SRC)
MULTIARCH_TEST_SRCS=$(wildcard $(MULTIARCH_SYSTEM_SRC)/*.c)
MULTIARCH_TESTS = $(patsubst $(MULTIARCH_SYSTEM_SRC)/%.c, %, $(MULTIARCH_TEST_SRCS))
-ifneq ($(HAVE_GDB_BIN),)
-ifeq ($(HOST_GDB_SUPPORTS_ARCH),y)
+ifneq ($(GDB),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
run-gdbstub-memory: memory
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) \
--output $<.gdb.out \
--qargs \
@@ -29,7 +28,7 @@ run-gdbstub-memory: memory
softmmu gdbstub support)
run-gdbstub-interrupt: interrupt
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) \
--output $<.gdb.out \
--qargs \
@@ -38,7 +37,7 @@ run-gdbstub-interrupt: interrupt
softmmu gdbstub support)
run-gdbstub-untimely-packet: hello
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--gdb-args "-ex 'set debug remote 1'" \
--output untimely-packet.gdb.out \
--stderr untimely-packet.gdb.err \
@@ -51,11 +50,7 @@ run-gdbstub-untimely-packet: hello
"GREP", file untimely-packet.gdb.err)
else
run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "no guest arch support")
-endif
-else
-run-gdbstub-%:
- $(call skip-test, "gdbstub test $*", "need working gdb")
+ $(call skip-test, "gdbstub test $*", "need working gdb with $(patsubst -%,,$(TARGET_NAME)) support")
endif
MULTIARCH_RUNS += run-gdbstub-memory run-gdbstub-interrupt run-gdbstub-untimely-packet
diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target
index c650aefe5c1..826f0a18e43 100644
--- a/tests/tcg/s390x/Makefile.target
+++ b/tests/tcg/s390x/Makefile.target
@@ -81,12 +81,12 @@ $(Z15_TESTS): CFLAGS+=-march=z15 -O2
TESTS+=$(Z15_TESTS)
endif
-ifeq ($(HOST_GDB_SUPPORTS_ARCH),y)
+ifneq ($(GDB),)
GDB_SCRIPT=$(SRC_PATH)/tests/guest-debug/run-test.py
run-gdbstub-signals-s390x: signals-s390x
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(S390X_SRC)/gdbstub/test-signals-s390x.py, \
mixing signals and debugging)
@@ -95,7 +95,7 @@ hello-s390x-asm: CFLAGS+=-nostdlib
run-gdbstub-svc: hello-s390x-asm
$(call run-test, $@, $(GDB_SCRIPT) \
- --gdb $(HAVE_GDB_BIN) \
+ --gdb $(GDB) \
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
--bin $< --test $(S390X_SRC)/gdbstub/test-svc.py, \
single-stepping svc)
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 09/17] configure: clean up plugin option handling
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (7 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 10/17] configure: clean up PIE " Paolo Bonzini
` (7 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Keep together all the conditions that lead to disabling plugins, and
remove now-dead code.
Since the option was not in SKIP_OPTIONS, it was present twice in
the help message, both from configure and from meson-buildoptions.sh.
Remove the duplication and take the occasion to document the option as
autodetected, which it is.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 39 +++++++++++++++--------------------
scripts/meson-buildoptions.py | 17 ++++++++++-----
scripts/meson-buildoptions.sh | 2 +-
3 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/configure b/configure
index 732220fdd45..7dad78f329b 100755
--- a/configure
+++ b/configure
@@ -377,7 +377,6 @@ fi
case $targetos in
windows)
- plugins="no"
pie="no"
;;
haiku)
@@ -737,7 +736,6 @@ for opt do
default_cflags='-O0 -g'
;;
--disable-tcg) tcg="disabled"
- plugins="no"
;;
--enable-tcg) tcg="enabled"
;;
@@ -774,11 +772,7 @@ for opt do
;;
--enable-download) download="enabled"; git_submodules_action=update;
;;
- --enable-plugins) if test "$targetos" = "windows"; then
- error_exit "TCG plugins not currently supported on Windows platforms"
- else
- plugins="yes"
- fi
+ --enable-plugins) plugins="yes"
;;
--disable-plugins) plugins="no"
;;
@@ -804,11 +798,6 @@ then
git_submodules_action="validate"
fi
-# test for any invalid configuration combinations
-if test "$plugins" = "yes" -a "$tcg" = "disabled"; then
- error_exit "Can't enable plugins on non-TCG builds"
-fi
-
if ! test -f "$source_path/subprojects/keycodemapdb/README" \
&& test "$download" = disabled
then
@@ -919,8 +908,6 @@ Advanced options (experts only):
--enable-debug enable common debug build options
--disable-werror disable compilation abort on warning
--cpu=CPU Build for host CPU [$cpu]
- --enable-plugins
- enable plugins via shared library loading
--disable-containers don't use containers for cross-building
--container-engine=TYPE which container engine to use [$container_engine]
--gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
@@ -1062,15 +1049,27 @@ if test "$targetos" = "bogus"; then
error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
fi
+# test for any invalid configuration combinations
+if test "$targetos" = "windows"; then
+ if test "$plugins" = "yes"; then
+ error_exit "TCG plugins not currently supported on Windows platforms"
+ fi
+ plugins="no"
+fi
+if test "$tcg" = "disabled" ; then
+ if test "$plugins" = "yes"; then
+ error_exit "Can't enable plugins on non-TCG builds"
+ fi
+ plugins="no"
+fi
if test "$static" = "yes" ; then
if test "$plugins" = "yes"; then
error_exit "static and plugins are mutually incompatible"
- else
- plugins="no"
fi
+ plugins="no"
fi
-test "$plugins" = "" && plugins=yes
-if test "$plugins" = "yes"; then
+if test "$plugins" != "no"; then
+ plugins=yes
subdirs="$subdirs contrib/plugins"
fi
@@ -1713,10 +1712,6 @@ mkdir -p tests/tcg
echo "# Automatically generated by configure - do not modify" > $config_host_mak
echo "SRC_PATH=$source_path" >> $config_host_mak
-if test "$plugins" = "yes" ; then
- echo "CONFIG_PLUGIN=y" >> $config_host_mak
-fi
-
tcg_tests_targets=
for target in $target_list; do
arch=${target%%-*}
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index 8d2e526132a..b787c84e914 100644
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -44,6 +44,11 @@
"trace_file": "with-trace-file",
}
+# Options that configure autodetects, even though meson defines them as boolean
+AUTO_OPTIONS = {
+ "plugins",
+}
+
BUILTIN_OPTIONS = {
"b_coverage",
"b_lto",
@@ -168,6 +173,7 @@ def cli_metavar(opt):
def print_help(options):
print("meson_options_help() {")
+ feature_opts = []
for opt in sorted(options, key=cli_help_key):
key = cli_help_key(opt)
# The first section includes options that have an arguments,
@@ -176,7 +182,7 @@ def print_help(options):
metavar = cli_metavar(opt)
left = f"--{key}={metavar}"
help_line(left, opt, 27, True)
- elif opt["type"] == "boolean":
+ elif opt["type"] == "boolean" and opt["name"] not in AUTO_OPTIONS:
left = f"--{key}"
help_line(left, opt, 27, False)
elif allow_arg(opt):
@@ -185,16 +191,17 @@ def print_help(options):
else:
left = f"--{key}=CHOICE"
help_line(left, opt, 27, True)
+ else:
+ feature_opts.append(opt)
sh_print()
sh_print("Optional features, enabled with --enable-FEATURE and")
sh_print("disabled with --disable-FEATURE, default is enabled if available")
sh_print("(unless built with --without-default-features):")
sh_print()
- for opt in options:
- key = opt["name"].replace("_", "-")
- if opt["type"] != "boolean" and not allow_arg(opt):
- help_line(key, opt, 18, False)
+ for opt in sorted(feature_opts, key=cli_option):
+ key = cli_option(opt)
+ help_line(key, opt, 18, False)
print("}")
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index d4b89e6b443..22d69966606 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -40,7 +40,6 @@ 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'
@@ -149,6 +148,7 @@ meson_options_help() {
printf "%s\n" ' pa PulseAudio sound support'
printf "%s\n" ' parallels parallels image format support'
printf "%s\n" ' pipewire PipeWire sound support'
+ printf "%s\n" ' plugins TCG plugins via shared library loading'
printf "%s\n" ' png PNG support with libpng'
printf "%s\n" ' pvrdma Enable PVRDMA support'
printf "%s\n" ' qcow1 qcow1 image format support'
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 10/17] configure: clean up PIE option handling
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (8 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 09/17] configure: clean up plugin option handling Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 11/17] configure: remove some dead cruft Paolo Bonzini
` (6 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Keep together all the conditions that lead to disabling PIE.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 35 ++++++++++++++---------------------
1 file changed, 14 insertions(+), 21 deletions(-)
diff --git a/configure b/configure
index 7dad78f329b..a713493e9e2 100755
--- a/configure
+++ b/configure
@@ -373,17 +373,6 @@ else
targetos=bogus
fi
-# OS specific
-
-case $targetos in
-windows)
- pie="no"
-;;
-haiku)
- pie="no"
-;;
-esac
-
if test ! -z "$cpu" ; then
# command line argument
:
@@ -1084,19 +1073,23 @@ static THREAD int tls_var;
int main(void) { return tls_var; }
EOF
-if test "$static" = "yes"; then
- if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
+if test "$targetos" = windows || test "$targetos" = haiku; then
+ if test "$pie" = "yes"; then
+ error_exit "PIE not available due to missing OS support"
+ fi
+ pie=no
+fi
+
+if test "$pie" != "no"; then
+ if test "$static" = "yes"; then
+ pie_ldflags=-static-pie
+ else
+ pie_ldflags=-pie
+ fi
+ if compile_prog "-Werror -fPIE -DPIE" "$pie_ldflags"; then
pie="yes"
elif test "$pie" = "yes"; then
error_exit "-static-pie not available due to missing toolchain support"
- else
- pie="no"
- fi
-elif test "$pie" != "no"; then
- if compile_prog "-Werror -fPIE -DPIE" "-pie"; then
- pie="yes"
- elif test "$pie" = "yes"; then
- error_exit "PIE not available due to missing toolchain support"
else
echo "Disabling PIE due to missing toolchain support"
pie="no"
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 11/17] configure: remove some dead cruft
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (9 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 10/17] configure: clean up PIE " Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 9:32 ` Thomas Huth
2023-10-16 6:31 ` [PATCH 12/17] configure: move target-specific defaults to an external machine file Paolo Bonzini
` (5 subsequent siblings)
16 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
print_error is only invoked in one place, and $git is unused.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/configure b/configure
index a713493e9e2..211591911cc 100755
--- a/configure
+++ b/configure
@@ -94,7 +94,7 @@ quote_sh() {
printf "%s" "$1" | sed "s,','\\\\'',g; s,.*,'&',"
}
-print_error() {
+error_exit() {
(echo
echo "ERROR: $1"
while test -n "$2"; do
@@ -102,10 +102,6 @@ print_error() {
shift
done
echo) >&2
-}
-
-error_exit() {
- print_error "$@"
exit 1
}
@@ -248,7 +244,6 @@ done
default_cflags='-O2 -g'
git_submodules_action="update"
-git="git"
docs="auto"
EXESUF=""
prefix="/usr/local"
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 12/17] configure: move target-specific defaults to an external machine file
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (10 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 11/17] configure: remove some dead cruft Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 13/17] configure: move environment-specific defaults to config-meson.cross Paolo Bonzini
` (4 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Enable Windows-specific defaults with a machine file, so that related
options can be automatically parsed and included in the help message.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configs/meson/windows.txt | 9 +++++++++
configure | 38 +++++++++++++++--------------------
scripts/meson-buildoptions.py | 4 +++-
scripts/meson-buildoptions.sh | 7 +++++++
4 files changed, 35 insertions(+), 23 deletions(-)
create mode 100644 configs/meson/windows.txt
diff --git a/configs/meson/windows.txt b/configs/meson/windows.txt
new file mode 100644
index 00000000000..55b192e71b1
--- /dev/null
+++ b/configs/meson/windows.txt
@@ -0,0 +1,9 @@
+# target-specific defaults, can still be overridden on
+# the command line
+
+[built-in options]
+bindir = ''
+prefix = '/qemu'
+
+[project options]
+qemu_suffix = ''
diff --git a/configure b/configure
index 211591911cc..e6787dc4111 100755
--- a/configure
+++ b/configure
@@ -246,8 +246,6 @@ default_cflags='-O2 -g'
git_submodules_action="update"
docs="auto"
EXESUF=""
-prefix="/usr/local"
-qemu_suffix="qemu"
system="yes"
linux_user=""
bsd_user=""
@@ -256,7 +254,6 @@ subdirs=""
ninja=""
python=
download="enabled"
-bindir="bin"
skip_meson=no
use_containers="yes"
gdb_bin=$(command -v "gdb-multiarch" || command -v "gdb")
@@ -582,9 +579,6 @@ done
if test "$targetos" = "windows" ; then
EXESUF=".exe"
- prefix="/qemu"
- bindir=""
- qemu_suffix=""
fi
meson_option_build_array() {
@@ -618,6 +612,15 @@ meson_option_parse() {
fi
}
+meson_add_machine_file() {
+ if test "$cross_compile" = "yes"; then
+ meson_option_add --cross-file
+ else
+ meson_option_add --native-file
+ fi
+ meson_option_add "$1"
+}
+
for opt do
optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
case "$opt" in
@@ -625,8 +628,6 @@ for opt do
;;
--version|-V) exec cat "$source_path/VERSION"
;;
- --prefix=*) prefix="$optarg"
- ;;
--cross-prefix=*)
;;
--cc=*)
@@ -697,10 +698,6 @@ for opt do
;;
--static) static="yes"
;;
- --bindir=*) bindir="$optarg"
- ;;
- --with-suffix=*) qemu_suffix="$optarg"
- ;;
--host=*|--build=*|\
--disable-dependency-tracking|\
--sbindir=*|--sharedstatedir=*|\
@@ -857,7 +854,6 @@ Options: [defaults in brackets after descriptions]
Standard options:
--help print this message
- --prefix=PREFIX install in PREFIX [$prefix]
--target-list=LIST set target list (default: build all)
$(echo Available targets: $default_target_list | \
fold -s -w 53 | sed -e 's/^/ /')
@@ -882,8 +878,6 @@ Advanced options (experts only):
--ninja=NINJA use specified ninja [$ninja]
--smbd=SMBD use specified smbd [$smbd]
--static enable static build [$static]
- --bindir=PATH install binaries in PATH
- --with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
--without-default-features default all --enable-* options to "disabled"
--without-default-devices do not include any device that is not needed to
start the emulator (only use if you are including
@@ -1799,24 +1793,25 @@ 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"
+ meson_option_add --native-file
+ meson_option_add config-meson.native
fi
mv $cross config-meson.cross
+ meson_add_machine_file config-meson.cross
+ if test -f "$source_path/configs/meson/$targetos.txt"; then
+ meson_add_machine_file $source_path/configs/meson/$targetos.txt
+ fi
rm -rf meson-private meson-info meson-logs
# Built-in options
test "$download" = "disabled" && meson_option_add "--wrap-mode=nodownload"
- test "$bindir" != "bin" && meson_option_add "-Dbindir=$bindir"
test "$default_feature" = no && meson_option_add -Dauto_features=disabled
test "$static" = yes && meson_option_add -Dprefer_static=true
test "$pie" = no && meson_option_add -Db_pie=false
@@ -1828,11 +1823,10 @@ if test "$skip_meson" = no; then
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"
run_meson() {
- NINJA=$ninja $meson setup --prefix "$prefix" "$@" $cross_arg "$PWD" "$source_path"
+ NINJA=$ninja $meson setup "$@" "$PWD" "$source_path"
}
eval run_meson $meson_options
if test "$?" -ne 0 ; then
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index b787c84e914..0c24bdc1e8c 100644
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -28,7 +28,6 @@
SKIP_OPTIONS = {
"default_devices",
"fuzzing_engine",
- "qemu_suffix",
"smbd",
}
@@ -40,6 +39,7 @@
"malloc": "enable-malloc",
"pkgversion": "with-pkgversion",
"qemu_firmwarepath": "firmwarepath",
+ "qemu_suffix": "with-suffix",
"trace_backends": "enable-trace-backends",
"trace_file": "with-trace-file",
}
@@ -52,6 +52,7 @@
BUILTIN_OPTIONS = {
"b_coverage",
"b_lto",
+ "bindir",
"datadir",
"debug",
"includedir",
@@ -60,6 +61,7 @@
"localedir",
"localstatedir",
"mandir",
+ "prefix",
"strip",
"sysconfdir",
}
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 22d69966606..e1522030619 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -3,6 +3,7 @@ meson_options_help() {
printf "%s\n" ' --audio-drv-list=CHOICES Set audio driver list [default] (choices: alsa/co'
printf "%s\n" ' reaudio/default/dsound/jack/oss/pa/pipewire/sdl/s'
printf "%s\n" ' ndio)'
+ printf "%s\n" ' --bindir=VALUE Executable directory [bin]'
printf "%s\n" ' --block-drv-ro-whitelist=VALUE'
printf "%s\n" ' set block driver read-only whitelist (by default'
printf "%s\n" ' affects only QEMU, not tools like qemu-img)'
@@ -62,6 +63,7 @@ meson_options_help() {
printf "%s\n" ' --localedir=VALUE Locale data directory [share/locale]'
printf "%s\n" ' --localstatedir=VALUE Localstate data directory [/var/local]'
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
+ printf "%s\n" ' --prefix=VALUE Installation prefix [/usr/local]'
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
printf "%s\n" ' [NORMAL]'
@@ -69,6 +71,8 @@ meson_options_help() {
printf "%s\n" ' auto/sigaltstack/ucontext/windows)'
printf "%s\n" ' --with-pkgversion=VALUE use specified string as sub-version of the'
printf "%s\n" ' package'
+ printf "%s\n" ' --with-suffix=VALUE Suffix for QEMU data/modules/config directories'
+ printf "%s\n" ' (can be empty) [qemu]'
printf "%s\n" ' --with-trace-file=VALUE Trace file prefix for simple backend [trace]'
printf "%s\n" ''
printf "%s\n" 'Optional features, enabled with --enable-FEATURE and'
@@ -229,6 +233,7 @@ _meson_option_parse() {
--disable-gcov) printf "%s" -Db_coverage=false ;;
--enable-lto) printf "%s" -Db_lto=true ;;
--disable-lto) printf "%s" -Db_lto=false ;;
+ --bindir=*) quote_sh "-Dbindir=$2" ;;
--enable-blkio) printf "%s" -Dblkio=enabled ;;
--disable-blkio) printf "%s" -Dblkio=disabled ;;
--block-drv-ro-whitelist=*) quote_sh "-Dblock_drv_ro_whitelist=$2" ;;
@@ -407,6 +412,7 @@ _meson_option_parse() {
--disable-plugins) printf "%s" -Dplugins=false ;;
--enable-png) printf "%s" -Dpng=enabled ;;
--disable-png) printf "%s" -Dpng=disabled ;;
+ --prefix=*) quote_sh "-Dprefix=$2" ;;
--enable-pvrdma) printf "%s" -Dpvrdma=enabled ;;
--disable-pvrdma) printf "%s" -Dpvrdma=disabled ;;
--enable-qcow1) printf "%s" -Dqcow1=enabled ;;
@@ -414,6 +420,7 @@ _meson_option_parse() {
--enable-qed) printf "%s" -Dqed=enabled ;;
--disable-qed) printf "%s" -Dqed=disabled ;;
--firmwarepath=*) quote_sh "-Dqemu_firmwarepath=$(meson_option_build_array $2)" ;;
+ --with-suffix=*) quote_sh "-Dqemu_suffix=$2" ;;
--enable-qga-vss) printf "%s" -Dqga_vss=enabled ;;
--disable-qga-vss) printf "%s" -Dqga_vss=disabled ;;
--enable-qom-cast-debug) printf "%s" -Dqom_cast_debug=true ;;
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 13/17] configure: move environment-specific defaults to config-meson.cross
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (11 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 12/17] configure: move target-specific defaults to an external machine file Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 14/17] configure: unify handling of several Debian cross containers Paolo Bonzini
` (3 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Store the -Werror and SMBD defaults in the machine file, which still allows
them to be overridden on the command line and enables automatic parsing
of the related options.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 37 +++++++++++++----------------------
scripts/meson-buildoptions.py | 3 ++-
scripts/meson-buildoptions.sh | 5 +++++
3 files changed, 21 insertions(+), 24 deletions(-)
diff --git a/configure b/configure
index e6787dc4111..24f8866e141 100755
--- a/configure
+++ b/configure
@@ -258,7 +258,6 @@ skip_meson=no
use_containers="yes"
gdb_bin=$(command -v "gdb-multiarch" || command -v "gdb")
gdb_arches=""
-werror=""
# Don't accept a target_list environment variable.
unset target_list
@@ -314,7 +313,6 @@ objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
ranlib="${RANLIB-${cross_prefix}ranlib}"
nm="${NM-${cross_prefix}nm}"
-smbd="$SMBD"
strip="${STRIP-${cross_prefix}strip}"
widl="${WIDL-${cross_prefix}widl}"
windres="${WINDRES-${cross_prefix}windres}"
@@ -648,8 +646,6 @@ for opt do
;;
--ninja=*) ninja="$optarg"
;;
- --smbd=*) smbd="$optarg"
- ;;
--extra-cflags=*)
;;
--extra-cxxflags=*)
@@ -741,10 +737,6 @@ for opt do
;;
--disable-pie) pie="no"
;;
- --enable-werror) werror="yes"
- ;;
- --disable-werror) werror="no"
- ;;
--enable-cfi) cfi=true
;;
--disable-cfi) cfi=false
@@ -876,7 +868,6 @@ Advanced options (experts only):
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
--python=PYTHON use specified python [$python]
--ninja=NINJA use specified ninja [$ninja]
- --smbd=SMBD use specified smbd [$smbd]
--static enable static build [$static]
--without-default-features default all --enable-* options to "disabled"
--without-default-devices do not include any device that is not needed to
@@ -884,7 +875,6 @@ Advanced options (experts only):
desired devices in configs/devices/)
--with-devices-ARCH=NAME override default configs/devices
--enable-debug enable common debug build options
- --disable-werror disable compilation abort on warning
--cpu=CPU Build for host CPU [$cpu]
--disable-containers don't use containers for cross-building
--container-engine=TYPE which container engine to use [$container_engine]
@@ -1008,17 +998,6 @@ if test -z "$ninja"; then
fi
fi
-# Consult white-list to determine whether to enable werror
-# by default. Only enable by default for git builds
-if test -z "$werror" ; then
- if test -e "$source_path/.git" && \
- { test "$targetos" = linux || test "$targetos" = "windows"; }; then
- werror="yes"
- else
- werror="no"
- fi
-fi
-
if test "$targetos" = "bogus"; then
# Now that we know that we're not printing the help and that
# the compiler works (so the results of the check_defines we used
@@ -1761,6 +1740,20 @@ if test "$skip_meson" = no; then
test -n "$objcc" && echo "objc_args = [$(meson_quote $OBJCFLAGS $EXTRA_OBJCFLAGS)]" >> $cross
echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross
echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
+
+ # Only enable by default for git builds and on select OSes
+ echo "# environment defaults, can still be overridden on " >> $cross
+ echo "# the command line" >> $cross
+ if test -e "$source_path/.git" && \
+ { test "$targetos" = linux || test "$targetos" = "windows"; }; then
+ echo 'werror = true' >> $cross
+ fi
+ echo "[project options]" >> $cross
+ if test "$SMBD" != ''; then
+ echo "smbd = $(meson_quote "$SMBD")" >> $cross
+ fi
+
+ echo >> $cross
echo "[binaries]" >> $cross
echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
@@ -1815,7 +1808,6 @@ if test "$skip_meson" = no; then
test "$default_feature" = no && meson_option_add -Dauto_features=disabled
test "$static" = yes && meson_option_add -Dprefer_static=true
test "$pie" = no && meson_option_add -Db_pie=false
- test "$werror" = yes && meson_option_add -Dwerror=true
# QEMU options
test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
@@ -1823,7 +1815,6 @@ if test "$skip_meson" = no; then
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 "$smbd" != '' && meson_option_add "-Dsmbd=$smbd"
test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg"
run_meson() {
NINJA=$ninja $meson setup "$@" "$PWD" "$source_path"
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index 0c24bdc1e8c..2e88732a291 100644
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -28,7 +28,6 @@
SKIP_OPTIONS = {
"default_devices",
"fuzzing_engine",
- "smbd",
}
OPTION_NAMES = {
@@ -47,6 +46,7 @@
# Options that configure autodetects, even though meson defines them as boolean
AUTO_OPTIONS = {
"plugins",
+ "werror",
}
BUILTIN_OPTIONS = {
@@ -64,6 +64,7 @@
"prefix",
"strip",
"sysconfdir",
+ "werror",
}
LINE_WIDTH = 76
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index e1522030619..dec33820163 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -64,6 +64,7 @@ meson_options_help() {
printf "%s\n" ' --localstatedir=VALUE Localstate data directory [/var/local]'
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
printf "%s\n" ' --prefix=VALUE Installation prefix [/usr/local]'
+ printf "%s\n" ' --smbd=VALUE Path to smbd for slirp networking'
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
printf "%s\n" ' [NORMAL]'
@@ -205,6 +206,7 @@ meson_options_help() {
printf "%s\n" ' vpc vpc image format support'
printf "%s\n" ' vte vte support for the gtk UI'
printf "%s\n" ' vvfat vvfat image format support'
+ printf "%s\n" ' werror Treat warnings as errors'
printf "%s\n" ' whpx WHPX acceleration support'
printf "%s\n" ' xen Xen backend support'
printf "%s\n" ' xen-pci-passthrough'
@@ -453,6 +455,7 @@ _meson_option_parse() {
--disable-slirp-smbd) printf "%s" -Dslirp_smbd=disabled ;;
--enable-smartcard) printf "%s" -Dsmartcard=enabled ;;
--disable-smartcard) printf "%s" -Dsmartcard=disabled ;;
+ --smbd=*) quote_sh "-Dsmbd=$2" ;;
--enable-snappy) printf "%s" -Dsnappy=enabled ;;
--disable-snappy) printf "%s" -Dsnappy=disabled ;;
--enable-sndio) printf "%s" -Dsndio=enabled ;;
@@ -529,6 +532,8 @@ _meson_option_parse() {
--disable-vte) printf "%s" -Dvte=disabled ;;
--enable-vvfat) printf "%s" -Dvvfat=enabled ;;
--disable-vvfat) printf "%s" -Dvvfat=disabled ;;
+ --enable-werror) printf "%s" -Dwerror=true ;;
+ --disable-werror) printf "%s" -Dwerror=false ;;
--enable-whpx) printf "%s" -Dwhpx=enabled ;;
--disable-whpx) printf "%s" -Dwhpx=disabled ;;
--enable-xen) printf "%s" -Dxen=enabled ;;
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 14/17] configure: unify handling of several Debian cross containers
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (12 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 13/17] configure: move environment-specific defaults to config-meson.cross Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 15/17] configure, meson: use command line options to configure qemu-ga Paolo Bonzini
` (2 subsequent siblings)
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
The Debian and GNU architecture names match very often, even though
there are common cases (32-bit Arm or 64-bit x86) where they do not
and other cases in which the GNU triplet is actually a quadruplet.
But it is still possible to group the common case into a single
case inside probe_target_compiler.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 41 +++++------------------------------------
1 file changed, 5 insertions(+), 36 deletions(-)
diff --git a/configure b/configure
index 24f8866e141..18dcb0240ed 100755
--- a/configure
+++ b/configure
@@ -1278,10 +1278,6 @@ probe_target_compiler() {
container_cross_prefix=aarch64-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc
;;
- alpha)
- container_image=debian-alpha-cross
- container_cross_prefix=alpha-linux-gnu-
- ;;
arm)
# We don't have any bigendian build tools so we only use this for ARM
container_image=debian-armhf-cross
@@ -1296,10 +1292,6 @@ probe_target_compiler() {
container_cross_prefix=hexagon-unknown-linux-musl-
container_cross_cc=${container_cross_prefix}clang
;;
- hppa)
- container_image=debian-hppa-cross
- container_cross_prefix=hppa-linux-gnu-
- ;;
i386)
container_image=fedora-i386-cross
container_cross_prefix=
@@ -1308,10 +1300,6 @@ probe_target_compiler() {
container_image=debian-loongarch-cross
container_cross_prefix=loongarch64-unknown-linux-gnu-
;;
- m68k)
- container_image=debian-m68k-cross
- container_cross_prefix=m68k-linux-gnu-
- ;;
microblaze)
container_image=debian-microblaze-cross
container_cross_prefix=microblaze-linux-musl-
@@ -1324,14 +1312,6 @@ probe_target_compiler() {
container_image=debian-mips64-cross
container_cross_prefix=mips64-linux-gnuabi64-
;;
- mipsel)
- container_image=debian-mipsel-cross
- container_cross_prefix=mipsel-linux-gnu-
- ;;
- mips)
- container_image=debian-mips-cross
- container_cross_prefix=mips-linux-gnu-
- ;;
nios2)
container_image=debian-nios2-cross
container_cross_prefix=nios2-linux-gnu-
@@ -1346,22 +1326,6 @@ probe_target_compiler() {
container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu-
container_cross_cc=${container_cross_prefix}gcc-10
;;
- riscv64)
- container_image=debian-riscv64-test-cross
- container_cross_prefix=riscv64-linux-gnu-
- ;;
- s390x)
- container_image=debian-s390x-cross
- container_cross_prefix=s390x-linux-gnu-
- ;;
- sh4)
- container_image=debian-sh4-cross
- container_cross_prefix=sh4-linux-gnu-
- ;;
- sparc64)
- container_image=debian-sparc64-cross
- container_cross_prefix=sparc64-linux-gnu-
- ;;
tricore)
container_image=debian-tricore-cross
container_cross_prefix=tricore-
@@ -1376,6 +1340,11 @@ probe_target_compiler() {
# default to the dc232b cpu
container_cross_prefix=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-
;;
+ *)
+ # Debian and GNU architecture names usually match
+ container_image=debian-$target_arch-cross
+ container_cross_prefix=$target_arch-linux-gnu-
+ ;;
esac
: ${container_cross_cc:=${container_cross_prefix}gcc}
: ${container_cross_ar:=${container_cross_prefix}ar}
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 15/17] configure, meson: use command line options to configure qemu-ga
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (13 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 14/17] configure: unify handling of several Debian cross containers Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 16/17] meson-buildoptions: document the data at the top Paolo Bonzini
2023-10-16 6:31 ` [PATCH 17/17] meson: add a note on why we use config_host for program paths Paolo Bonzini
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Preserve the functionality of the environment variables, but
allow using the command line instead.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 16 +++++++++-------
meson_options.txt | 7 +++++++
qga/meson.build | 9 ++++++---
scripts/meson-buildoptions.sh | 9 +++++++++
4 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/configure b/configure
index 18dcb0240ed..06b27dd46f4 100755
--- a/configure
+++ b/configure
@@ -1589,12 +1589,6 @@ echo >> $config_host_mak
echo all: >> $config_host_mak
-if test "$targetos" = "windows"; then
- 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
-fi
-
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
echo "GDB=$gdb_bin" >> $config_host_mak
@@ -1721,6 +1715,15 @@ if test "$skip_meson" = no; then
if test "$SMBD" != ''; then
echo "smbd = $(meson_quote "$SMBD")" >> $cross
fi
+ if test "${QEMU_GA_MANUFACTURER}" != ''; then
+ echo "qemu_ga_manufacturer = $(meson_quote "${QEMU_GA_MANUFACTURER}")" >> $cross
+ fi
+ if test "${QEMU_GA_DISTRO}" != ''; then
+ echo "qemu_ga_distro = $(meson_quote "${QEMU_GA_DISTRO}")" >> $cross
+ fi
+ if test "${QEMU_GA_VERSION}" != ''; then
+ echo "qemu_ga_version = $(meson_quote "${QEMU_GA_VERSION}")" >> $cross
+ fi
echo >> $cross
echo "[binaries]" >> $cross
@@ -1772,7 +1775,6 @@ if test "$skip_meson" = no; then
rm -rf meson-private meson-info meson-logs
- # Built-in options
test "$download" = "disabled" && meson_option_add "--wrap-mode=nodownload"
test "$default_feature" = no && meson_option_add -Dauto_features=disabled
test "$static" = yes && meson_option_add -Dprefer_static=true
diff --git a/meson_options.txt b/meson_options.txt
index e237b268469..1b0c02b4a58 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -353,5 +353,12 @@ option('qom_cast_debug', type: 'boolean', value: true,
option('slirp_smbd', type : 'feature', value : 'auto',
description: 'use smbd (at path --smbd=*) in slirp networking')
+option('qemu_ga_manufacturer', type: 'string', value: 'QEMU',
+ description: '"manufacturer" name for qemu-ga registry entries')
+option('qemu_ga_distro', type: 'string', value: 'Linux',
+ description: 'second path element in qemu-ga registry entries')
+option('qemu_ga_version', type: 'string', value: '',
+ description: 'version number for qemu-ga installer')
+
option('hexagon_idef_parser', type : 'boolean', value : true,
description: 'use idef-parser to automatically generate TCG code for the Hexagon frontend')
diff --git a/qga/meson.build b/qga/meson.build
index 59cae0cc6ee..940a51d55db 100644
--- a/qga/meson.build
+++ b/qga/meson.build
@@ -145,6 +145,9 @@ if targetos == 'windows'
else
libpcre = 'libpcre2'
endif
+ qga_msi_version = get_option('qemu_ga_version') == '' \
+ ? project.version() \
+ : get_option('qemu_ga_version')
qga_msi = custom_target('QGA MSI',
input: files('installer/qemu-ga.wxs'),
output: 'qemu-ga-@0@.msi'.format(host_arch),
@@ -155,9 +158,9 @@ if targetos == 'windows'
qemu_ga_msi_vss,
'-D', 'BUILD_DIR=' + meson.project_build_root(),
'-D', 'BIN_DIR=' + glib_pc.get_variable('bindir'),
- '-D', 'QEMU_GA_VERSION=' + config_host['QEMU_GA_VERSION'],
- '-D', 'QEMU_GA_MANUFACTURER=' + config_host['QEMU_GA_MANUFACTURER'],
- '-D', 'QEMU_GA_DISTRO=' + config_host['QEMU_GA_DISTRO'],
+ '-D', 'QEMU_GA_VERSION=' + qga_msi_version,
+ '-D', 'QEMU_GA_MANUFACTURER=' + get_option('qemu_ga_manufacturer'),
+ '-D', 'QEMU_GA_DISTRO=' + get_option('qemu_ga_distro'),
'-D', 'LIBPCRE=' + libpcre,
])
all_qga += [qga_msi]
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index dec33820163..bda88993bd1 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -64,6 +64,12 @@ meson_options_help() {
printf "%s\n" ' --localstatedir=VALUE Localstate data directory [/var/local]'
printf "%s\n" ' --mandir=VALUE Manual page directory [share/man]'
printf "%s\n" ' --prefix=VALUE Installation prefix [/usr/local]'
+ printf "%s\n" ' --qemu-ga-distro=VALUE second path element in qemu-ga registry entries'
+ printf "%s\n" ' [Linux]'
+ printf "%s\n" ' --qemu-ga-manufacturer=VALUE'
+ printf "%s\n" ' "manufacturer" name for qemu-ga registry entries'
+ printf "%s\n" ' [QEMU]'
+ printf "%s\n" ' --qemu-ga-version=VALUE version number for qemu-ga installer'
printf "%s\n" ' --smbd=VALUE Path to smbd for slirp networking'
printf "%s\n" ' --sysconfdir=VALUE Sysconf data directory [etc]'
printf "%s\n" ' --tls-priority=VALUE Default TLS protocol/cipher priority string'
@@ -422,6 +428,9 @@ _meson_option_parse() {
--enable-qed) printf "%s" -Dqed=enabled ;;
--disable-qed) printf "%s" -Dqed=disabled ;;
--firmwarepath=*) quote_sh "-Dqemu_firmwarepath=$(meson_option_build_array $2)" ;;
+ --qemu-ga-distro=*) quote_sh "-Dqemu_ga_distro=$2" ;;
+ --qemu-ga-manufacturer=*) quote_sh "-Dqemu_ga_manufacturer=$2" ;;
+ --qemu-ga-version=*) quote_sh "-Dqemu_ga_version=$2" ;;
--with-suffix=*) quote_sh "-Dqemu_suffix=$2" ;;
--enable-qga-vss) printf "%s" -Dqga_vss=enabled ;;
--disable-qga-vss) printf "%s" -Dqga_vss=disabled ;;
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 16/17] meson-buildoptions: document the data at the top
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (14 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 15/17] configure, meson: use command line options to configure qemu-ga Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 17/17] meson: add a note on why we use config_host for program paths Paolo Bonzini
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
scripts/meson-buildoptions.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/scripts/meson-buildoptions.py b/scripts/meson-buildoptions.py
index 2e88732a291..4814a8ff61f 100644
--- a/scripts/meson-buildoptions.py
+++ b/scripts/meson-buildoptions.py
@@ -25,11 +25,15 @@
import shlex
import sys
+# Options with nonstandard names (e.g. --with/--without) or OS-dependent
+# defaults. Try not to add any.
SKIP_OPTIONS = {
"default_devices",
"fuzzing_engine",
}
+# Options whose name doesn't match the option for backwards compatibility
+# reasons, because Meson gives them a funny name, or both
OPTION_NAMES = {
"b_coverage": "gcov",
"b_lto": "lto",
@@ -49,6 +53,10 @@
"werror",
}
+# Builtin options that should be definable via configure. Some of the others
+# we really do not want (e.g. c_args is defined via the native file, not
+# via -D, because it's a mix of CFLAGS and --extra-cflags); for specific
+# cases "../configure -D" can be used as an escape hatch.
BUILTIN_OPTIONS = {
"b_coverage",
"b_lto",
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 17/17] meson: add a note on why we use config_host for program paths
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
` (15 preceding siblings ...)
2023-10-16 6:31 ` [PATCH 16/17] meson-buildoptions: document the data at the top Paolo Bonzini
@ 2023-10-16 6:31 ` Paolo Bonzini
16 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 6:31 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/meson.build b/meson.build
index 87bb4e9243a..c80882da6fd 100644
--- a/meson.build
+++ b/meson.build
@@ -4021,6 +4021,11 @@ summary(summary_info, bool_yn: true, section: 'Directories')
summary_info = {}
summary_info += {'python': '@0@ (version: @1@)'.format(python.full_path(), python.language_version())}
summary_info += {'sphinx-build': sphinx_build}
+
+# FIXME: the [binaries] section of machine files, which can be probed
+# with find_program(), would be great for passing gdb and genisoimage
+# paths from configure to Meson. However, there seems to be no way to
+# hide a program (for example if gdb is too old).
if config_host.has_key('GDB')
summary_info += {'gdb': config_host['GDB']}
endif
--
2.41.0
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 6:31 ` [PATCH 03/17] meson, cutils: allow non-relocatable installs Paolo Bonzini
@ 2023-10-16 7:12 ` Markus Armbruster
2023-10-16 21:29 ` Paolo Bonzini
2023-10-16 9:08 ` Manos Pitsidianakis
1 sibling, 1 reply; 30+ messages in thread
From: Markus Armbruster @ 2023-10-16 7:12 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Michael Tokarev
Out of curiosity: what's a non-relocatable install, and why should I
care?
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 01/17] meson: do not build shaders by default
2023-10-16 6:31 ` [PATCH 01/17] meson: do not build shaders by default Paolo Bonzini
@ 2023-10-16 9:04 ` Manos Pitsidianakis
0 siblings, 0 replies; 30+ messages in thread
From: Manos Pitsidianakis @ 2023-10-16 9:04 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini
On Mon, 16 Oct 2023 09:31, Paolo Bonzini <pbonzini@redhat.com> wrote:
>They are not needed when building user-mode emulators.
>
>Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 6:31 ` [PATCH 03/17] meson, cutils: allow non-relocatable installs Paolo Bonzini
2023-10-16 7:12 ` Markus Armbruster
@ 2023-10-16 9:08 ` Manos Pitsidianakis
2023-10-16 9:48 ` Paolo Bonzini
1 sibling, 1 reply; 30+ messages in thread
From: Manos Pitsidianakis @ 2023-10-16 9:08 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini; +Cc: Michael Tokarev
On Mon, 16 Oct 2023 09:31, Paolo Bonzini <pbonzini@redhat.com> wrote:
>diff --git a/meson.build b/meson.build
>index 010d2c649c2..251838f2609 100644
>--- a/meson.build
>+++ b/meson.build
>@@ -2111,6 +2111,7 @@ 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_RELOCATABLE', get_option('relocatable'))
> config_host_data.set('CONFIG_SAFESTACK', get_option('safe_stack'))
> config_host_data.set('CONFIG_SDL', sdl.found())
> config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
Is relocatable a good choice here? The term is used in linking and might
be confusing (when I read the subject that's what I thought it'd be
about). How about 'movable`?
Otherwise:
Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals
2023-10-16 6:31 ` [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals Paolo Bonzini
@ 2023-10-16 9:12 ` Manos Pitsidianakis
0 siblings, 0 replies; 30+ messages in thread
From: Manos Pitsidianakis @ 2023-10-16 9:12 UTC (permalink / raw)
To: qemu-devel, Paolo Bonzini
On Mon, 16 Oct 2023 09:31, Paolo Bonzini <pbonzini@redhat.com> wrote:
>Unify HAVE_GDB_BIN (currently in config-host.mak) and
>HOST_GDB_SUPPORTS_ARCH into a single GDB variable in
>config-target.mak.
>
>Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Emmanouil Pitsidianakis <manos.pitsidianakis@linaro.org>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 04/17] configure: clean up handling of CFI option
2023-10-16 6:31 ` [PATCH 04/17] configure: clean up handling of CFI option Paolo Bonzini
@ 2023-10-16 9:22 ` Philippe Mathieu-Daudé
2023-10-16 9:44 ` Paolo Bonzini
0 siblings, 1 reply; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-16 9:22 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 16/10/23 08:31, Paolo Bonzini wrote:
> Avoid that --enable-cfi --disable-cfi leaves b_lto set to true.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
> @@ -1845,6 +1843,7 @@ if test "$skip_meson" = no; then
>
> # QEMU options
> test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
> + test "$cfi" != false && meson_option_add "-Db_lto=$cfi"
Merge as "-Dcfi=$cfi -Db_lto=$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"
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 11/17] configure: remove some dead cruft
2023-10-16 6:31 ` [PATCH 11/17] configure: remove some dead cruft Paolo Bonzini
@ 2023-10-16 9:32 ` Thomas Huth
0 siblings, 0 replies; 30+ messages in thread
From: Thomas Huth @ 2023-10-16 9:32 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 16/10/2023 08.31, Paolo Bonzini wrote:
> print_error is only invoked in one place, and $git is unused.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> configure | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 04/17] configure: clean up handling of CFI option
2023-10-16 9:22 ` Philippe Mathieu-Daudé
@ 2023-10-16 9:44 ` Paolo Bonzini
2023-10-16 13:33 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 9:44 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
On 10/16/23 11:22, Philippe Mathieu-Daudé wrote:
> On 16/10/23 08:31, Paolo Bonzini wrote:
>> Avoid that --enable-cfi --disable-cfi leaves b_lto set to true.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>> configure | 7 +++----
>> 1 file changed, 3 insertions(+), 4 deletions(-)
>
>
>> @@ -1845,6 +1843,7 @@ if test "$skip_meson" = no; then
>> # QEMU options
>> test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
>> + test "$cfi" != false && meson_option_add "-Db_lto=$cfi"
>
> Merge as "-Dcfi=$cfi -Db_lto=$cfi"?
Sure, it also needs a little change to meson_option_add though:
diff --git a/configure b/configure
index 3da46ed202d..fd88ef3fec2 100755
--- a/configure
+++ b/configure
@@ -624,7 +624,10 @@ meson_option_build_array() {
meson_options=
meson_option_add() {
- meson_options="$meson_options $(quote_sh "$1")"
+ local arg
+ for arg; do
+ meson_options="$meson_options $(quote_sh "$arg")"
+ done
}
meson_option_parse() {
meson_options="$meson_options $(_meson_option_parse "$@")"
@@ -1842,8 +1845,7 @@ if test "$skip_meson" = no; then
test "$werror" = yes && meson_option_add -Dwerror=true
# QEMU options
- test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
- test "$cfi" != false && meson_option_add "-Db_lto=$cfi"
+ test "$cfi" != false && meson_option_add "-Dcfi=$cfi" "-Db_lto=$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"
Ok to squash that in?
Paolo
>
>> 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"
>
>
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 9:08 ` Manos Pitsidianakis
@ 2023-10-16 9:48 ` Paolo Bonzini
0 siblings, 0 replies; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 9:48 UTC (permalink / raw)
To: Manos Pitsidianakis, qemu-devel; +Cc: Michael Tokarev
On 10/16/23 11:08, Manos Pitsidianakis wrote:
> On Mon, 16 Oct 2023 09:31, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> diff --git a/meson.build b/meson.build
>> index 010d2c649c2..251838f2609 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -2111,6 +2111,7 @@ 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_RELOCATABLE', get_option('relocatable'))
>> config_host_data.set('CONFIG_SAFESTACK', get_option('safe_stack'))
>> config_host_data.set('CONFIG_SDL', sdl.found())
>> config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
>
> Is relocatable a good choice here? The term is used in linking and might
> be confusing (when I read the subject that's what I thought it'd be
> about). How about 'movable`?
I think it's a relatively common usage. Google finds many uses for RPM
but also in a lot of random forums (CMake, Julia, FreeBSD). See also
https://nehckl0.medium.com/creating-relocatable-linux-executables-by-setting-rpath-with-origin-45de573a2e98
or
https://www.gnu.org/software/gnulib/manual/html_node/Supporting-Relocation.html.
Paolo
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 04/17] configure: clean up handling of CFI option
2023-10-16 9:44 ` Paolo Bonzini
@ 2023-10-16 13:33 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 30+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-10-16 13:33 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 16/10/23 11:44, Paolo Bonzini wrote:
> On 10/16/23 11:22, Philippe Mathieu-Daudé wrote:
>> On 16/10/23 08:31, Paolo Bonzini wrote:
>>> Avoid that --enable-cfi --disable-cfi leaves b_lto set to true.
>>>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>> ---
>>> configure | 7 +++----
>>> 1 file changed, 3 insertions(+), 4 deletions(-)
>>
>>
>>> @@ -1845,6 +1843,7 @@ if test "$skip_meson" = no; then
>>> # QEMU options
>>> test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
>>> + test "$cfi" != false && meson_option_add "-Db_lto=$cfi"
>>
>> Merge as "-Dcfi=$cfi -Db_lto=$cfi"?
>
> Sure, it also needs a little change to meson_option_add though:
>
> diff --git a/configure b/configure
> index 3da46ed202d..fd88ef3fec2 100755
> --- a/configure
> +++ b/configure
> @@ -624,7 +624,10 @@ meson_option_build_array() {
>
> meson_options=
> meson_option_add() {
> - meson_options="$meson_options $(quote_sh "$1")"
> + local arg
> + for arg; do
> + meson_options="$meson_options $(quote_sh "$arg")"
> + done
Oh I didn't notice. If you had said I wouldn't had insisted,
but since you did the change,
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> }
> meson_option_parse() {
> meson_options="$meson_options $(_meson_option_parse "$@")"
> @@ -1842,8 +1845,7 @@ if test "$skip_meson" = no; then
> test "$werror" = yes && meson_option_add -Dwerror=true
>
> # QEMU options
> - test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
> - test "$cfi" != false && meson_option_add "-Db_lto=$cfi"
> + test "$cfi" != false && meson_option_add "-Dcfi=$cfi" "-Db_lto=$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"
>
> Ok to squash that in?
Certainly.
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 7:12 ` Markus Armbruster
@ 2023-10-16 21:29 ` Paolo Bonzini
2023-10-17 5:46 ` Markus Armbruster
0 siblings, 1 reply; 30+ messages in thread
From: Paolo Bonzini @ 2023-10-16 21:29 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel, Michael Tokarev
On Mon, Oct 16, 2023 at 1:55 PM Markus Armbruster <armbru@redhat.com> wrote:
> Out of curiosity: what's a non-relocatable install, and why should I
> care?
In a relocatable install if you move qemu-system-x86_64 from /usr/bin
to /home/armbru/bin, it will start looking for firmware in
/home/armbru/share/qemu.
In a non-relocatable install, it will keep looking for firmware in
/usr/share/qemu.
Whether that's something desirable or not... it depends.
On POSIX systems you almost never notice. Non-relocatability can help
if you want to do experiments with old firmware and new QEMU or vice
versa (because you can just upgrade/downgrade the firmware package,
and use rpm2cpio to extract the QEMU binaries outside /usr).
On the other hand Windows almost always wants relocatable installs,
which is why the whole idea was introduced in QEMU in fact. Newfangled
distribution mechanisms such as AppImage
(https://docs.appimage.org/reference/best-practices.html) and I think
NixOS (which installs each package in its own prefix, so you can
install multiple versions and switch at will the one that is symlinked
to /usr) also dislike using at runtime the absolute paths that were
established at build time.
Finally, the same code that handles relocation also lets you run QEMU
from the build tree and pick e.g. firmware files from the source tree
transparently. Even with this patch, that part of the code remains
active even if you configure with --disable-relocatable.
IOW: you probably have relied on the code, but if you have never
noticed in the past 3 years, it means that you probably need not care.
Paolo
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 03/17] meson, cutils: allow non-relocatable installs
2023-10-16 21:29 ` Paolo Bonzini
@ 2023-10-17 5:46 ` Markus Armbruster
0 siblings, 0 replies; 30+ messages in thread
From: Markus Armbruster @ 2023-10-17 5:46 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Michael Tokarev
Paolo Bonzini <pbonzini@redhat.com> writes:
> On Mon, Oct 16, 2023 at 1:55 PM Markus Armbruster <armbru@redhat.com> wrote:
>> Out of curiosity: what's a non-relocatable install, and why should I
>> care?
>
> In a relocatable install if you move qemu-system-x86_64 from /usr/bin
> to /home/armbru/bin, it will start looking for firmware in
> /home/armbru/share/qemu.
>
> In a non-relocatable install, it will keep looking for firmware in
> /usr/share/qemu.
>
> Whether that's something desirable or not... it depends.
>
> On POSIX systems you almost never notice. Non-relocatability can help
> if you want to do experiments with old firmware and new QEMU or vice
> versa (because you can just upgrade/downgrade the firmware package,
> and use rpm2cpio to extract the QEMU binaries outside /usr).
>
> On the other hand Windows almost always wants relocatable installs,
> which is why the whole idea was introduced in QEMU in fact. Newfangled
> distribution mechanisms such as AppImage
> (https://docs.appimage.org/reference/best-practices.html) and I think
> NixOS (which installs each package in its own prefix, so you can
> install multiple versions and switch at will the one that is symlinked
> to /usr) also dislike using at runtime the absolute paths that were
> established at build time.
>
> Finally, the same code that handles relocation also lets you run QEMU
> from the build tree and pick e.g. firmware files from the source tree
> transparently. Even with this patch, that part of the code remains
> active even if you configure with --disable-relocatable.
>
> IOW: you probably have relied on the code, but if you have never
> noticed in the past 3 years, it means that you probably need not care.
I think this would make a fine commit message body :)
Thanks!
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 02/17] meson: do not use set10
2023-10-16 6:31 ` [PATCH 02/17] meson: do not use set10 Paolo Bonzini
@ 2023-10-19 0:06 ` Richard Henderson
0 siblings, 0 replies; 30+ messages in thread
From: Richard Henderson @ 2023-10-19 0:06 UTC (permalink / raw)
To: Paolo Bonzini, qemu-devel
On 10/15/23 23:31, Paolo Bonzini wrote:
> Make all items of config-host.h consistent. To keep the --disable-coroutine-pool
> code visible to the compiler, mutuate the IS_ENABLED() macro from Linux.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> include/qemu/compiler.h | 15 +++++++++++++++
> meson.build | 2 +-
> tests/unit/test-coroutine.c | 2 +-
> util/qemu-coroutine.c | 4 ++--
> 4 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
> index 1109482a000..c797f0d4572 100644
> --- a/include/qemu/compiler.h
> +++ b/include/qemu/compiler.h
> @@ -212,4 +212,19 @@
> # define QEMU_USED
> #endif
>
> +/*
> + * Ugly CPP trick that is like "defined FOO", but also works in C
> + * code. Useful to replace #ifdef with "if" statements; assumes
> + * the symbol was defined with Meson's "config.set()", so it is empty
> + * if defined.
> + */
> +#define IS_ENABLED(x) IS_EMPTY(x)
> +
> +#define IS_EMPTY_JUNK_ junk,
> +#define IS_EMPTY(value) IS_EMPTY_(IS_EMPTY_JUNK_##value)
> +
> +/* Expands to either SECOND_ARG(junk, 1, 0) or SECOND_ARG(IS_EMPTY_JUNK_CONFIG_FOO 1, 0) */
> +#define SECOND_ARG(first, second, ...) second
> +#define IS_EMPTY_(junk_maybecomma) SECOND_ARG(junk_maybecomma 1, 0)
Clever that.
However, if I had a preference I would go the other way and model after glibc:
Convert everything away from ifdef and always use set01.
Then enable -Wundef so that you catch typos in the usage of these macros.
But this is an improvement of a sort so,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2023-10-19 0:07 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-16 6:31 [PATCH 00/17] More build system cleanups, optional non-relocatable installs Paolo Bonzini
2023-10-16 6:31 ` [PATCH 01/17] meson: do not build shaders by default Paolo Bonzini
2023-10-16 9:04 ` Manos Pitsidianakis
2023-10-16 6:31 ` [PATCH 02/17] meson: do not use set10 Paolo Bonzini
2023-10-19 0:06 ` Richard Henderson
2023-10-16 6:31 ` [PATCH 03/17] meson, cutils: allow non-relocatable installs Paolo Bonzini
2023-10-16 7:12 ` Markus Armbruster
2023-10-16 21:29 ` Paolo Bonzini
2023-10-17 5:46 ` Markus Armbruster
2023-10-16 9:08 ` Manos Pitsidianakis
2023-10-16 9:48 ` Paolo Bonzini
2023-10-16 6:31 ` [PATCH 04/17] configure: clean up handling of CFI option Paolo Bonzini
2023-10-16 9:22 ` Philippe Mathieu-Daudé
2023-10-16 9:44 ` Paolo Bonzini
2023-10-16 13:33 ` Philippe Mathieu-Daudé
2023-10-16 6:31 ` [PATCH 05/17] hw/xen: cleanup sourcesets Paolo Bonzini
2023-10-16 6:31 ` [PATCH 06/17] hw/remote: move stub vfu_object_set_bus_irq out of stubs/ Paolo Bonzini
2023-10-16 6:31 ` [PATCH 07/17] tests/tcg/arm: move non-SVE tests out of conditional Paolo Bonzini
2023-10-16 6:31 ` [PATCH 08/17] configure, tests/tcg: simplify GDB conditionals Paolo Bonzini
2023-10-16 9:12 ` Manos Pitsidianakis
2023-10-16 6:31 ` [PATCH 09/17] configure: clean up plugin option handling Paolo Bonzini
2023-10-16 6:31 ` [PATCH 10/17] configure: clean up PIE " Paolo Bonzini
2023-10-16 6:31 ` [PATCH 11/17] configure: remove some dead cruft Paolo Bonzini
2023-10-16 9:32 ` Thomas Huth
2023-10-16 6:31 ` [PATCH 12/17] configure: move target-specific defaults to an external machine file Paolo Bonzini
2023-10-16 6:31 ` [PATCH 13/17] configure: move environment-specific defaults to config-meson.cross Paolo Bonzini
2023-10-16 6:31 ` [PATCH 14/17] configure: unify handling of several Debian cross containers Paolo Bonzini
2023-10-16 6:31 ` [PATCH 15/17] configure, meson: use command line options to configure qemu-ga Paolo Bonzini
2023-10-16 6:31 ` [PATCH 16/17] meson-buildoptions: document the data at the top Paolo Bonzini
2023-10-16 6:31 ` [PATCH 17/17] meson: add a note on why we use config_host for program paths 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).