mirror of https://github.com/xemu-project/xemu.git
* Bugfixes
* Meson conversions -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmJqObcUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroPwFgf9GgktU8JPTr/PENuYJkJkcoDriPSk KC5w5XWMzHHtSQLDLYhA9boLVo4flsAmE+CBJ3dQlKNhR2uezEvFM3ndtQ7koQ3z 9svjBZ/z5HKooSxPgOrRE43JpRxUHEhcRFGIfu8AIfRz8xQZ5fD9I5sGCUcNlRRi gWBjh849pSGW0ukL+ADz86UzTCSQGVY5ia6vnyYhvE7vT/uvcDTSLTBXmj2EpDEg vJzQYvcApgCd8U+Aj5iNvryt4fnjdj0xaDdyIIkrKK0WA8wJw5u7YFl7RWrkmVQG 1K/rrkULJUlCpx/bHkgI88Wrd3t7G8EGFL0OkzKYfFHWv+XUfndtmxkkfg== =JLRA -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * Bugfixes * Meson conversions # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmJqObcUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroPwFgf9GgktU8JPTr/PENuYJkJkcoDriPSk # KC5w5XWMzHHtSQLDLYhA9boLVo4flsAmE+CBJ3dQlKNhR2uezEvFM3ndtQ7koQ3z # 9svjBZ/z5HKooSxPgOrRE43JpRxUHEhcRFGIfu8AIfRz8xQZ5fD9I5sGCUcNlRRi # gWBjh849pSGW0ukL+ADz86UzTCSQGVY5ia6vnyYhvE7vT/uvcDTSLTBXmj2EpDEg # vJzQYvcApgCd8U+Aj5iNvryt4fnjdj0xaDdyIIkrKK0WA8wJw5u7YFl7RWrkmVQG # 1K/rrkULJUlCpx/bHkgI88Wrd3t7G8EGFL0OkzKYfFHWv+XUfndtmxkkfg== # =JLRA # -----END PGP SIGNATURE----- # gpg: Signature made Wed 27 Apr 2022 11:52:39 PM PDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: qemu-options: Limit the -enable-kvm option to the targets that support it meson, configure: move --enable-module-upgrades to meson meson: remove CONFIG_XEN_PCI_PASSTHROUGH from config-target.h meson, configure: move libgio test to meson meson, configure: move usbfs test to meson meson, configure: move keyctl test to meson meson, configure: move RDMA options to meson configure, meson: move OpenGL check to meson configure: move --enable/--disable-debug-info to second option parsing pass configure: gcov should not exclude fortify-source configure: pc-bios/qemu-icon.bmp does not exist qga: wixl: get path to sysroot from pkg-config as intended configure: remove dead code meson: show final set of compiler flags i386: pcmpestr 64-bit sign extension bug remove -writeconfig configure: make fortify_source=yes by default error-report: fix g_date_time_format assertion Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
6071ff6087
|
@ -15,7 +15,7 @@ softmmu_ss.add(when: 'CONFIG_LINUX', if_true: files('hostmem-memfd.c'))
|
||||||
softmmu_ss.add(when: ['CONFIG_VHOST_USER', 'CONFIG_VIRTIO'], if_true: files('vhost-user.c'))
|
softmmu_ss.add(when: ['CONFIG_VHOST_USER', 'CONFIG_VIRTIO'], if_true: files('vhost-user.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
|
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
|
||||||
softmmu_ss.add(when: ['CONFIG_VIRTIO_CRYPTO', 'CONFIG_VHOST_CRYPTO'], if_true: files('cryptodev-vhost-user.c'))
|
softmmu_ss.add(when: ['CONFIG_VIRTIO_CRYPTO', 'CONFIG_VHOST_CRYPTO'], if_true: files('cryptodev-vhost-user.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_GIO', if_true: [files('dbus-vmstate.c'), gio])
|
softmmu_ss.add(when: gio, if_true: files('dbus-vmstate.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))
|
softmmu_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))
|
||||||
|
|
||||||
subdir('tpm')
|
subdir('tpm')
|
||||||
|
|
|
@ -244,7 +244,6 @@ audio_drv_list="default"
|
||||||
block_drv_rw_whitelist=""
|
block_drv_rw_whitelist=""
|
||||||
block_drv_ro_whitelist=""
|
block_drv_ro_whitelist=""
|
||||||
host_cc="cc"
|
host_cc="cc"
|
||||||
debug_info="yes"
|
|
||||||
lto="false"
|
lto="false"
|
||||||
stack_protector=""
|
stack_protector=""
|
||||||
safe_stack=""
|
safe_stack=""
|
||||||
|
@ -302,17 +301,15 @@ vhost_vsock="$default_feature"
|
||||||
vhost_user="no"
|
vhost_user="no"
|
||||||
vhost_user_fs="$default_feature"
|
vhost_user_fs="$default_feature"
|
||||||
vhost_vdpa="$default_feature"
|
vhost_vdpa="$default_feature"
|
||||||
rdma="$default_feature"
|
debug_info="yes"
|
||||||
pvrdma="$default_feature"
|
|
||||||
debug_tcg="no"
|
debug_tcg="no"
|
||||||
debug="no"
|
debug="no"
|
||||||
sanitizers="no"
|
sanitizers="no"
|
||||||
tsan="no"
|
tsan="no"
|
||||||
fortify_source="$default_feature"
|
fortify_source="yes"
|
||||||
gcov="no"
|
gcov="no"
|
||||||
EXESUF=""
|
EXESUF=""
|
||||||
modules="no"
|
modules="no"
|
||||||
module_upgrades="no"
|
|
||||||
prefix="/usr/local"
|
prefix="/usr/local"
|
||||||
qemu_suffix="qemu"
|
qemu_suffix="qemu"
|
||||||
softmmu="yes"
|
softmmu="yes"
|
||||||
|
@ -320,17 +317,13 @@ linux_user=""
|
||||||
bsd_user=""
|
bsd_user=""
|
||||||
pkgversion=""
|
pkgversion=""
|
||||||
pie=""
|
pie=""
|
||||||
trace_backends="log"
|
|
||||||
trace_file="trace"
|
trace_file="trace"
|
||||||
opengl="$default_feature"
|
|
||||||
coroutine=""
|
coroutine=""
|
||||||
tls_priority="NORMAL"
|
tls_priority="NORMAL"
|
||||||
plugins="$default_feature"
|
plugins="$default_feature"
|
||||||
secret_keyring="$default_feature"
|
|
||||||
meson=""
|
meson=""
|
||||||
meson_args=""
|
meson_args=""
|
||||||
ninja=""
|
ninja=""
|
||||||
gio="$default_feature"
|
|
||||||
skip_meson=no
|
skip_meson=no
|
||||||
|
|
||||||
# The following Meson options are handled manually (still they
|
# The following Meson options are handled manually (still they
|
||||||
|
@ -380,10 +373,6 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS $optarg"
|
--extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS $optarg"
|
||||||
;;
|
;;
|
||||||
--enable-debug-info) debug_info="yes"
|
|
||||||
;;
|
|
||||||
--disable-debug-info) debug_info="no"
|
|
||||||
;;
|
|
||||||
--cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option"
|
--cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option"
|
||||||
;;
|
;;
|
||||||
--cross-cc-cflags-*) cc_arch=${opt#--cross-cc-cflags-}; cc_arch=${cc_arch%%=*}
|
--cross-cc-cflags-*) cc_arch=${opt#--cross-cc-cflags-}; cc_arch=${cc_arch%%=*}
|
||||||
|
@ -391,7 +380,6 @@ for opt do
|
||||||
cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}"
|
cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}"
|
||||||
;;
|
;;
|
||||||
--cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*}
|
--cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*}
|
||||||
cc_archs="$cc_archs $cc_arch"
|
|
||||||
eval "cross_cc_${cc_arch}=\$optarg"
|
eval "cross_cc_${cc_arch}=\$optarg"
|
||||||
cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}"
|
cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}"
|
||||||
;;
|
;;
|
||||||
|
@ -761,22 +749,18 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--extra-ldflags=*)
|
--extra-ldflags=*)
|
||||||
;;
|
;;
|
||||||
--enable-debug-info)
|
|
||||||
;;
|
|
||||||
--disable-debug-info)
|
|
||||||
;;
|
|
||||||
--cross-cc-*)
|
--cross-cc-*)
|
||||||
;;
|
;;
|
||||||
|
--enable-debug-info) debug_info="yes"
|
||||||
|
;;
|
||||||
|
--disable-debug-info) debug_info="no"
|
||||||
|
;;
|
||||||
--enable-modules)
|
--enable-modules)
|
||||||
modules="yes"
|
modules="yes"
|
||||||
;;
|
;;
|
||||||
--disable-modules)
|
--disable-modules)
|
||||||
modules="no"
|
modules="no"
|
||||||
;;
|
;;
|
||||||
--disable-module-upgrades) module_upgrades="no"
|
|
||||||
;;
|
|
||||||
--enable-module-upgrades) module_upgrades="yes"
|
|
||||||
;;
|
|
||||||
--cpu=*)
|
--cpu=*)
|
||||||
;;
|
;;
|
||||||
--target-list=*) target_list="$optarg"
|
--target-list=*) target_list="$optarg"
|
||||||
|
@ -966,10 +950,6 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--enable-vhost-user-fs) vhost_user_fs="yes"
|
--enable-vhost-user-fs) vhost_user_fs="yes"
|
||||||
;;
|
;;
|
||||||
--disable-opengl) opengl="no"
|
|
||||||
;;
|
|
||||||
--enable-opengl) opengl="yes"
|
|
||||||
;;
|
|
||||||
--disable-zlib-test)
|
--disable-zlib-test)
|
||||||
;;
|
;;
|
||||||
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
|
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
|
||||||
|
@ -983,14 +963,6 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--tls-priority=*) tls_priority="$optarg"
|
--tls-priority=*) tls_priority="$optarg"
|
||||||
;;
|
;;
|
||||||
--enable-rdma) rdma="yes"
|
|
||||||
;;
|
|
||||||
--disable-rdma) rdma="no"
|
|
||||||
;;
|
|
||||||
--enable-pvrdma) pvrdma="yes"
|
|
||||||
;;
|
|
||||||
--disable-pvrdma) pvrdma="no"
|
|
||||||
;;
|
|
||||||
--disable-vhost-user) vhost_user="no"
|
--disable-vhost-user) vhost_user="no"
|
||||||
;;
|
;;
|
||||||
--enable-vhost-user) vhost_user="yes"
|
--enable-vhost-user) vhost_user="yes"
|
||||||
|
@ -1030,14 +1002,6 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--gdb=*) gdb_bin="$optarg"
|
--gdb=*) gdb_bin="$optarg"
|
||||||
;;
|
;;
|
||||||
--enable-keyring) secret_keyring="yes"
|
|
||||||
;;
|
|
||||||
--disable-keyring) secret_keyring="no"
|
|
||||||
;;
|
|
||||||
--enable-gio) gio=yes
|
|
||||||
;;
|
|
||||||
--disable-gio) gio=no
|
|
||||||
;;
|
|
||||||
# backwards compatibility options
|
# backwards compatibility options
|
||||||
--enable-trace-backend=*) meson_option_parse "--enable-trace-backends=$optarg" "$optarg"
|
--enable-trace-backend=*) meson_option_parse "--enable-trace-backends=$optarg" "$optarg"
|
||||||
;;
|
;;
|
||||||
|
@ -1249,14 +1213,11 @@ cat << EOF
|
||||||
bsd-user all BSD usermode emulation targets
|
bsd-user all BSD usermode emulation targets
|
||||||
pie Position Independent Executables
|
pie Position Independent Executables
|
||||||
modules modules support (non-Windows)
|
modules modules support (non-Windows)
|
||||||
module-upgrades try to load modules from alternate paths for upgrades
|
|
||||||
debug-tcg TCG debugging (default is disabled)
|
debug-tcg TCG debugging (default is disabled)
|
||||||
debug-info debugging information
|
debug-info debugging information
|
||||||
lto Enable Link-Time Optimization.
|
lto Enable Link-Time Optimization.
|
||||||
safe-stack SafeStack Stack Smash Protection. Depends on
|
safe-stack SafeStack Stack Smash Protection. Depends on
|
||||||
clang/llvm >= 3.7 and requires coroutine backend ucontext.
|
clang/llvm >= 3.7 and requires coroutine backend ucontext.
|
||||||
rdma Enable RDMA-based migration
|
|
||||||
pvrdma Enable PVRDMA support
|
|
||||||
vhost-net vhost-net kernel acceleration support
|
vhost-net vhost-net kernel acceleration support
|
||||||
vhost-vsock virtio sockets device support
|
vhost-vsock virtio sockets device support
|
||||||
vhost-scsi vhost-scsi kernel target support
|
vhost-scsi vhost-scsi kernel target support
|
||||||
|
@ -1264,8 +1225,6 @@ cat << EOF
|
||||||
vhost-kernel vhost kernel backend support
|
vhost-kernel vhost kernel backend support
|
||||||
vhost-user vhost-user backend support
|
vhost-user vhost-user backend support
|
||||||
vhost-vdpa vhost-vdpa kernel backend support
|
vhost-vdpa vhost-vdpa kernel backend support
|
||||||
opengl opengl support
|
|
||||||
gio libgio support
|
|
||||||
|
|
||||||
NOTE: The object files are built at the place where configure is launched
|
NOTE: The object files are built at the place where configure is launched
|
||||||
EOF
|
EOF
|
||||||
|
@ -1522,11 +1481,6 @@ if test "$modules" = "yes" && test "$mingw32" = "yes" ; then
|
||||||
error_exit "Modules are not available for Windows"
|
error_exit "Modules are not available for Windows"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# module_upgrades is only reasonable if modules are enabled
|
|
||||||
if test "$modules" = "no" && test "$module_upgrades" = "yes" ; then
|
|
||||||
error_exit "Can't enable module-upgrades as Modules are not enabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Static linking is not possible with plugins, modules or PIE
|
# Static linking is not possible with plugins, modules or PIE
|
||||||
if test "$static" = "yes" ; then
|
if test "$static" = "yes" ; then
|
||||||
if test "$modules" = "yes" ; then
|
if test "$modules" = "yes" ; then
|
||||||
|
@ -2049,100 +2003,6 @@ EOF
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##########################################
|
|
||||||
# RDMA needs OpenFabrics libraries
|
|
||||||
if test "$rdma" != "no" ; then
|
|
||||||
cat > $TMPC <<EOF
|
|
||||||
#include <rdma/rdma_cma.h>
|
|
||||||
int main(void) { return 0; }
|
|
||||||
EOF
|
|
||||||
rdma_libs="-lrdmacm -libverbs -libumad"
|
|
||||||
if compile_prog "" "$rdma_libs" ; then
|
|
||||||
rdma="yes"
|
|
||||||
else
|
|
||||||
if test "$rdma" = "yes" ; then
|
|
||||||
error_exit \
|
|
||||||
" OpenFabrics librdmacm/libibverbs/libibumad not present." \
|
|
||||||
" Your options:" \
|
|
||||||
" (1) Fast: Install infiniband packages (devel) from your distro." \
|
|
||||||
" (2) Cleanest: Install libraries from www.openfabrics.org" \
|
|
||||||
" (3) Also: Install softiwarp if you don't have RDMA hardware"
|
|
||||||
fi
|
|
||||||
rdma="no"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
|
||||||
# PVRDMA detection
|
|
||||||
|
|
||||||
cat > $TMPC <<EOF &&
|
|
||||||
#include <sys/mman.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
char buf = 0;
|
|
||||||
void *addr = &buf;
|
|
||||||
addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if test "$rdma" = "yes" ; then
|
|
||||||
case "$pvrdma" in
|
|
||||||
"")
|
|
||||||
if compile_prog "" ""; then
|
|
||||||
pvrdma="yes"
|
|
||||||
else
|
|
||||||
pvrdma="no"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"yes")
|
|
||||||
if ! compile_prog "" ""; then
|
|
||||||
error_exit "PVRDMA is not supported since mremap is not implemented"
|
|
||||||
fi
|
|
||||||
pvrdma="yes"
|
|
||||||
;;
|
|
||||||
"no")
|
|
||||||
pvrdma="no"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
if test "$pvrdma" = "yes" ; then
|
|
||||||
error_exit "PVRDMA requires rdma suppport"
|
|
||||||
fi
|
|
||||||
pvrdma="no"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Let's see if enhanced reg_mr is supported
|
|
||||||
if test "$pvrdma" = "yes" ; then
|
|
||||||
|
|
||||||
cat > $TMPC <<EOF &&
|
|
||||||
#include <infiniband/verbs.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
main(void)
|
|
||||||
{
|
|
||||||
struct ibv_mr *mr;
|
|
||||||
struct ibv_pd *pd = NULL;
|
|
||||||
size_t length = 10;
|
|
||||||
uint64_t iova = 0;
|
|
||||||
int access = 0;
|
|
||||||
void *addr = NULL;
|
|
||||||
|
|
||||||
mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
|
|
||||||
|
|
||||||
ibv_dereg_mr(mr);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if ! compile_prog "" "-libverbs"; then
|
|
||||||
QEMU_CFLAGS="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# glib support probe
|
# glib support probe
|
||||||
|
|
||||||
|
@ -2170,50 +2030,6 @@ if test "$static" = yes && test "$mingw32" = yes; then
|
||||||
glib_cflags="-DGLIB_STATIC_COMPILATION $glib_cflags"
|
glib_cflags="-DGLIB_STATIC_COMPILATION $glib_cflags"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! test "$gio" = "no"; then
|
|
||||||
pass=no
|
|
||||||
if $pkg_config --atleast-version=$glib_req_ver gio-2.0; then
|
|
||||||
gio_cflags=$($pkg_config --cflags gio-2.0)
|
|
||||||
gio_libs=$($pkg_config --libs gio-2.0)
|
|
||||||
gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0)
|
|
||||||
if ! has "$gdbus_codegen"; then
|
|
||||||
gdbus_codegen=
|
|
||||||
fi
|
|
||||||
# Check that the libraries actually work -- Ubuntu 18.04 ships
|
|
||||||
# with pkg-config --static --libs data for gio-2.0 that is missing
|
|
||||||
# -lblkid and will give a link error.
|
|
||||||
cat > $TMPC <<EOF
|
|
||||||
#include <gio/gio.h>
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if compile_prog "$gio_cflags" "$gio_libs" ; then
|
|
||||||
pass=yes
|
|
||||||
else
|
|
||||||
pass=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$pass" = "yes" &&
|
|
||||||
$pkg_config --atleast-version=$glib_req_ver gio-unix-2.0; then
|
|
||||||
gio_cflags="$gio_cflags $($pkg_config --cflags gio-unix-2.0)"
|
|
||||||
gio_libs="$gio_libs $($pkg_config --libs gio-unix-2.0)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$pass" = "no"; then
|
|
||||||
if test "$gio" = "yes"; then
|
|
||||||
feature_not_found "gio" "Install libgio >= 2.0"
|
|
||||||
else
|
|
||||||
gio=no
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
gio=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Sanity check that the current size_t matches the
|
# Sanity check that the current size_t matches the
|
||||||
# size that glib thinks it should be. This catches
|
# size that glib thinks it should be. This catches
|
||||||
# problems on multi-arch where people try to build
|
# problems on multi-arch where people try to build
|
||||||
|
@ -2283,59 +2099,6 @@ case "$fdt" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
##########################################
|
|
||||||
# opengl probe (for sdl2, gtk)
|
|
||||||
|
|
||||||
if test "$opengl" != "no" ; then
|
|
||||||
epoxy=no
|
|
||||||
if $pkg_config epoxy; then
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <epoxy/egl.h>
|
|
||||||
int main(void) { return 0; }
|
|
||||||
EOF
|
|
||||||
if compile_prog "" "" ; then
|
|
||||||
epoxy=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$epoxy" = "yes" ; then
|
|
||||||
opengl_cflags="$($pkg_config --cflags epoxy)"
|
|
||||||
opengl_libs="$($pkg_config --libs epoxy)"
|
|
||||||
opengl=yes
|
|
||||||
else
|
|
||||||
if test "$opengl" = "yes" ; then
|
|
||||||
feature_not_found "opengl" "Please install epoxy with EGL"
|
|
||||||
fi
|
|
||||||
opengl_cflags=""
|
|
||||||
opengl_libs=""
|
|
||||||
opengl=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check for usbfs
|
|
||||||
have_usbfs=no
|
|
||||||
if test "$linux_user" = "yes"; then
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <linux/usbdevice_fs.h>
|
|
||||||
|
|
||||||
#ifndef USBDEVFS_GET_CAPABILITIES
|
|
||||||
#error "USBDEVFS_GET_CAPABILITIES undefined"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef USBDEVFS_DISCONNECT_CLAIM
|
|
||||||
#error "USBDEVFS_DISCONNECT_CLAIM undefined"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if compile_prog "" ""; then
|
|
||||||
have_usbfs=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# capstone
|
# capstone
|
||||||
|
|
||||||
|
@ -2586,50 +2349,13 @@ case "$slirp" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
##########################################
|
|
||||||
# check for usable __NR_keyctl syscall
|
|
||||||
|
|
||||||
if test "$linux" = "yes" ; then
|
|
||||||
|
|
||||||
have_keyring=no
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <errno.h>
|
|
||||||
#include <asm/unistd.h>
|
|
||||||
#include <linux/keyctl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
int main(void) {
|
|
||||||
return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
if compile_prog "" "" ; then
|
|
||||||
have_keyring=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "$secret_keyring" != "no"
|
|
||||||
then
|
|
||||||
if test "$have_keyring" = "yes"
|
|
||||||
then
|
|
||||||
secret_keyring=yes
|
|
||||||
else
|
|
||||||
if test "$secret_keyring" = "yes"
|
|
||||||
then
|
|
||||||
error_exit "syscall __NR_keyctl requested, \
|
|
||||||
but not implemented on your system"
|
|
||||||
else
|
|
||||||
secret_keyring=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# End of CC checks
|
# End of CC checks
|
||||||
# After here, no more $cc or $ld runs
|
# After here, no more $cc or $ld runs
|
||||||
|
|
||||||
write_c_skeleton
|
write_c_skeleton
|
||||||
|
|
||||||
if test "$gcov" = "yes" ; then
|
if test "$fortify_source" = "yes" ; then
|
||||||
:
|
|
||||||
elif test "$fortify_source" = "yes" ; then
|
|
||||||
QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
|
QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
|
||||||
debug=no
|
debug=no
|
||||||
fi
|
fi
|
||||||
|
@ -2704,7 +2430,7 @@ if test "$QEMU_GA_VERSION" = ""; then
|
||||||
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
QEMU_GA_MSI_MINGW_DLL_PATH="$($pkg_config --variable=prefix glib-2.0)/bin"
|
QEMU_GA_MSI_MINGW_BIN_PATH="$($pkg_config --variable=prefix glib-2.0)/bin"
|
||||||
|
|
||||||
# Mac OS X ships with a broken assembler
|
# Mac OS X ships with a broken assembler
|
||||||
roms=
|
roms=
|
||||||
|
@ -2792,7 +2518,7 @@ if test "$debug_tcg" = "yes" ; then
|
||||||
fi
|
fi
|
||||||
if test "$mingw32" = "yes" ; then
|
if test "$mingw32" = "yes" ; then
|
||||||
echo "CONFIG_WIN32=y" >> $config_host_mak
|
echo "CONFIG_WIN32=y" >> $config_host_mak
|
||||||
echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
|
echo "QEMU_GA_MSI_MINGW_BIN_PATH=${QEMU_GA_MSI_MINGW_BIN_PATH}" >> $config_host_mak
|
||||||
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
|
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
|
||||||
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
|
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
|
||||||
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
|
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
|
||||||
|
@ -2826,20 +2552,6 @@ if test "$modules" = "yes"; then
|
||||||
echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
|
echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
|
||||||
echo "CONFIG_MODULES=y" >> $config_host_mak
|
echo "CONFIG_MODULES=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$module_upgrades" = "yes"; then
|
|
||||||
echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$have_usbfs" = "yes" ; then
|
|
||||||
echo "CONFIG_USBFS=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$gio" = "yes" ; then
|
|
||||||
echo "CONFIG_GIO=y" >> $config_host_mak
|
|
||||||
echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
|
|
||||||
echo "GIO_LIBS=$gio_libs" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$gdbus_codegen" != "" ; then
|
|
||||||
echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
|
echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
|
||||||
|
|
||||||
if test "$xen" = "enabled" ; then
|
if test "$xen" = "enabled" ; then
|
||||||
|
@ -2881,15 +2593,6 @@ fi
|
||||||
if test "$vhost_user_fs" = "yes" ; then
|
if test "$vhost_user_fs" = "yes" ; then
|
||||||
echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
|
echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$tcg" = "enabled" -a "$tcg_interpreter" = "true" ; then
|
|
||||||
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$opengl" = "yes" ; then
|
|
||||||
echo "CONFIG_OPENGL=y" >> $config_host_mak
|
|
||||||
echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
|
|
||||||
echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
# XXX: suppress that
|
# XXX: suppress that
|
||||||
if [ "$bsd" = "yes" ] ; then
|
if [ "$bsd" = "yes" ] ; then
|
||||||
|
@ -2906,15 +2609,6 @@ if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
|
||||||
echo "CONFIG_TSAN=y" >> $config_host_mak
|
echo "CONFIG_TSAN=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$rdma" = "yes" ; then
|
|
||||||
echo "CONFIG_RDMA=y" >> $config_host_mak
|
|
||||||
echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$pvrdma" = "yes" ; then
|
|
||||||
echo "CONFIG_PVRDMA=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$plugins" = "yes" ; then
|
if test "$plugins" = "yes" ; then
|
||||||
echo "CONFIG_PLUGIN=y" >> $config_host_mak
|
echo "CONFIG_PLUGIN=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
@ -2926,10 +2620,6 @@ if test -n "$gdb_bin"; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$secret_keyring" = "yes" ; then
|
|
||||||
echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "ROMS=$roms" >> $config_host_mak
|
echo "ROMS=$roms" >> $config_host_mak
|
||||||
echo "MAKE=$make" >> $config_host_mak
|
echo "MAKE=$make" >> $config_host_mak
|
||||||
echo "PYTHON=$python" >> $config_host_mak
|
echo "PYTHON=$python" >> $config_host_mak
|
||||||
|
@ -3024,8 +2714,6 @@ LINKS="Makefile"
|
||||||
LINKS="$LINKS tests/tcg/Makefile.target"
|
LINKS="$LINKS tests/tcg/Makefile.target"
|
||||||
LINKS="$LINKS pc-bios/optionrom/Makefile"
|
LINKS="$LINKS pc-bios/optionrom/Makefile"
|
||||||
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
||||||
LINKS="$LINKS roms/seabios/Makefile"
|
|
||||||
LINKS="$LINKS pc-bios/qemu-icon.bmp"
|
|
||||||
LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
||||||
LINKS="$LINKS tests/avocado tests/data"
|
LINKS="$LINKS tests/avocado tests/data"
|
||||||
LINKS="$LINKS tests/qemu-iotests/check"
|
LINKS="$LINKS tests/qemu-iotests/check"
|
||||||
|
@ -3059,24 +2747,6 @@ done
|
||||||
export target_list source_path use_containers cpu host_cc
|
export target_list source_path use_containers cpu host_cc
|
||||||
$source_path/tests/tcg/configure.sh)
|
$source_path/tests/tcg/configure.sh)
|
||||||
|
|
||||||
# temporary config to build submodules
|
|
||||||
if test -f $source_path/roms/seabios/Makefile; then
|
|
||||||
for rom in seabios; do
|
|
||||||
config_mak=roms/$rom/config.mak
|
|
||||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
|
||||||
echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
|
|
||||||
echo "AS=$as" >> $config_mak
|
|
||||||
echo "CCAS=$ccas" >> $config_mak
|
|
||||||
echo "CC=$cc" >> $config_mak
|
|
||||||
echo "BCC=bcc" >> $config_mak
|
|
||||||
echo "CPP=$cpp" >> $config_mak
|
|
||||||
echo "OBJCOPY=objcopy" >> $config_mak
|
|
||||||
echo "IASL=$iasl" >> $config_mak
|
|
||||||
echo "LD=$ld" >> $config_mak
|
|
||||||
echo "RANLIB=$ranlib" >> $config_mak
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
config_mak=pc-bios/optionrom/config.mak
|
config_mak=pc-bios/optionrom/config.mak
|
||||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||||
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
if 'CONFIG_PVRDMA' in config_host
|
if have_pvrdma
|
||||||
# if not found, CONFIG_PVRDMA should not be set
|
|
||||||
# FIXME: broken on big endian architectures
|
# FIXME: broken on big endian architectures
|
||||||
libumad = cc.find_library('ibumad', required: true)
|
|
||||||
executable('rdmacm-mux', files('main.c'), genh,
|
executable('rdmacm-mux', files('main.c'), genh,
|
||||||
dependencies: [glib, libumad],
|
dependencies: [glib, libumad],
|
||||||
build_by_default: false,
|
build_by_default: false,
|
||||||
|
|
|
@ -34,7 +34,9 @@ else
|
||||||
crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
|
crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c'))
|
if have_keyring
|
||||||
|
crypto_ss.add(files('secret_keyring.c'))
|
||||||
|
endif
|
||||||
if have_afalg
|
if have_afalg
|
||||||
crypto_ss.add(if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
crypto_ss.add(if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -67,13 +67,6 @@ and will cause a warning.
|
||||||
The replacement for the ``nodelay`` short-form boolean option is ``nodelay=on``
|
The replacement for the ``nodelay`` short-form boolean option is ``nodelay=on``
|
||||||
rather than ``delay=off``.
|
rather than ``delay=off``.
|
||||||
|
|
||||||
``-writeconfig`` (since 6.0)
|
|
||||||
'''''''''''''''''''''''''''''
|
|
||||||
|
|
||||||
The ``-writeconfig`` option is not able to serialize the entire contents
|
|
||||||
of the QEMU command line. It is thus considered a failed experiment
|
|
||||||
and deprecated, with no current replacement.
|
|
||||||
|
|
||||||
Userspace local APIC with KVM (x86, since 6.0)
|
Userspace local APIC with KVM (x86, since 6.0)
|
||||||
''''''''''''''''''''''''''''''''''''''''''''''
|
''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
|
|
@ -348,6 +348,13 @@ or ``gnutls`` library enabled as a cryptography provider.
|
||||||
Neither the ``nettle`` library, or the built-in cryptography provider are
|
Neither the ``nettle`` library, or the built-in cryptography provider are
|
||||||
supported on FIPS enabled hosts.
|
supported on FIPS enabled hosts.
|
||||||
|
|
||||||
|
``-writeconfig`` (removed in 7.1)
|
||||||
|
'''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
The ``-writeconfig`` option was not able to serialize the entire contents
|
||||||
|
of the QEMU command line. It is thus considered a failed experiment
|
||||||
|
and removed without a replacement.
|
||||||
|
|
||||||
QEMU Machine Protocol (QMP) commands
|
QEMU Machine Protocol (QMP) commands
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,17 @@ softmmu_ss.add(when: ['CONFIG_XEN', xen], if_true: files(
|
||||||
))
|
))
|
||||||
|
|
||||||
xen_specific_ss = ss.source_set()
|
xen_specific_ss = ss.source_set()
|
||||||
xen_specific_ss.add(when: 'CONFIG_XEN_PCI_PASSTHROUGH', if_true: files(
|
if have_xen_pci_passthrough
|
||||||
'xen-host-pci-device.c',
|
xen_specific_ss.add(files(
|
||||||
'xen_pt.c',
|
'xen-host-pci-device.c',
|
||||||
'xen_pt_config_init.c',
|
'xen_pt.c',
|
||||||
'xen_pt_graphics.c',
|
'xen_pt_config_init.c',
|
||||||
'xen_pt_load_rom.c',
|
'xen_pt_graphics.c',
|
||||||
'xen_pt_msi.c',
|
'xen_pt_load_rom.c',
|
||||||
), if_false: files('xen_pt_stub.c'))
|
'xen_pt_msi.c',
|
||||||
|
))
|
||||||
|
else
|
||||||
|
xen_specific_ss.add('xen_pt_stub.c')
|
||||||
|
endif
|
||||||
|
|
||||||
specific_ss.add_all(when: ['CONFIG_XEN', xen], if_true: xen_specific_ss)
|
specific_ss.add_all(when: ['CONFIG_XEN', xen], if_true: xen_specific_ss)
|
||||||
|
|
|
@ -12,7 +12,6 @@ void qemu_add_opts(QemuOptsList *list);
|
||||||
void qemu_add_drive_opts(QemuOptsList *list);
|
void qemu_add_drive_opts(QemuOptsList *list);
|
||||||
int qemu_global_option(const char *str);
|
int qemu_global_option(const char *str);
|
||||||
|
|
||||||
void qemu_config_write(FILE *fp);
|
|
||||||
int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname,
|
int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
|
|
149
meson.build
149
meson.build
|
@ -448,11 +448,32 @@ glib = declare_dependency(compile_args: config_host['GLIB_CFLAGS'].split(),
|
||||||
meson.override_dependency('glib-2.0', glib)
|
meson.override_dependency('glib-2.0', glib)
|
||||||
|
|
||||||
gio = not_found
|
gio = not_found
|
||||||
if 'CONFIG_GIO' in config_host
|
gdbus_codegen = not_found
|
||||||
gio = declare_dependency(compile_args: config_host['GIO_CFLAGS'].split(),
|
if not get_option('gio').auto() or have_system
|
||||||
link_args: config_host['GIO_LIBS'].split(),
|
gio = dependency('gio-2.0', required: get_option('gio'),
|
||||||
version: config_host['GLIB_VERSION'])
|
method: 'pkg-config', kwargs: static_kwargs)
|
||||||
|
if gio.found() and not cc.links('''
|
||||||
|
#include <gio/gio.h>
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
|
return 0;
|
||||||
|
}''', dependencies: [glib, gio])
|
||||||
|
if get_option('gio').enabled()
|
||||||
|
error('The installed libgio is broken for static linking')
|
||||||
|
endif
|
||||||
|
gio = not_found
|
||||||
|
endif
|
||||||
|
if gio.found()
|
||||||
|
gdbus_codegen = find_program(gio.get_variable('gdbus_codegen'),
|
||||||
|
required: get_option('gio'))
|
||||||
|
gio_unix = dependency('gio-unix-2.0', required: get_option('gio'),
|
||||||
|
method: 'pkg-config', kwargs: static_kwargs)
|
||||||
|
gio = declare_dependency(dependencies: [gio, gio_unix],
|
||||||
|
version: gio.version())
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
lttng = not_found
|
lttng = not_found
|
||||||
if 'ust' in get_option('trace_backends')
|
if 'ust' in get_option('trace_backends')
|
||||||
lttng = dependency('lttng-ust', required: true, version: '>= 2.1',
|
lttng = dependency('lttng-ust', required: true, version: '>= 2.1',
|
||||||
|
@ -1000,9 +1021,14 @@ if not get_option('coreaudio').auto() or (targetos == 'darwin' and have_system)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
opengl = not_found
|
opengl = not_found
|
||||||
if 'CONFIG_OPENGL' in config_host
|
if not get_option('opengl').auto() or have_system or have_vhost_user_gpu
|
||||||
opengl = declare_dependency(compile_args: config_host['OPENGL_CFLAGS'].split(),
|
epoxy = dependency('epoxy', method: 'pkg-config',
|
||||||
link_args: config_host['OPENGL_LIBS'].split())
|
required: get_option('opengl'), kwargs: static_kwargs)
|
||||||
|
if cc.has_header('epoxy/egl.h', dependencies: epoxy)
|
||||||
|
opengl = epoxy
|
||||||
|
elif get_option('opengl').enabled()
|
||||||
|
error('epoxy/egl.h not found')
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
gbm = not_found
|
gbm = not_found
|
||||||
if (have_system or have_tools) and (virgl.found() or opengl.found())
|
if (have_system or have_tools) and (virgl.found() or opengl.found())
|
||||||
|
@ -1214,9 +1240,22 @@ if numa.found() and not cc.links('''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
rdma = not_found
|
rdma = not_found
|
||||||
if 'CONFIG_RDMA' in config_host
|
if not get_option('rdma').auto() or have_system
|
||||||
rdma = declare_dependency(link_args: config_host['RDMA_LIBS'].split())
|
libumad = cc.find_library('ibumad', required: get_option('rdma'))
|
||||||
|
rdma_libs = [cc.find_library('rdmacm', has_headers: ['rdma/rdma_cma.h'],
|
||||||
|
required: get_option('rdma'),
|
||||||
|
kwargs: static_kwargs),
|
||||||
|
cc.find_library('ibverbs', required: get_option('rdma'),
|
||||||
|
kwargs: static_kwargs),
|
||||||
|
libumad]
|
||||||
|
rdma = declare_dependency(dependencies: rdma_libs)
|
||||||
|
foreach lib: rdma_libs
|
||||||
|
if not lib.found()
|
||||||
|
rdma = not_found
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
|
||||||
xen = not_found
|
xen = not_found
|
||||||
if 'CONFIG_XEN_BACKEND' in config_host
|
if 'CONFIG_XEN_BACKEND' in config_host
|
||||||
xen = declare_dependency(compile_args: config_host['XEN_CFLAGS'].split(),
|
xen = declare_dependency(compile_args: config_host['XEN_CFLAGS'].split(),
|
||||||
|
@ -1462,7 +1501,7 @@ dbus_display = get_option('dbus_display') \
|
||||||
error_message: '-display dbus requires glib>=2.64') \
|
error_message: '-display dbus requires glib>=2.64') \
|
||||||
.require(enable_modules,
|
.require(enable_modules,
|
||||||
error_message: '-display dbus requires --enable-modules') \
|
error_message: '-display dbus requires --enable-modules') \
|
||||||
.require(config_host.has_key('GDBUS_CODEGEN'),
|
.require(gdbus_codegen.found(),
|
||||||
error_message: '-display dbus requires gdbus-codegen') \
|
error_message: '-display dbus requires gdbus-codegen') \
|
||||||
.allowed()
|
.allowed()
|
||||||
|
|
||||||
|
@ -1511,6 +1550,11 @@ endif
|
||||||
|
|
||||||
config_host_data.set('HOST_' + host_arch.to_upper(), 1)
|
config_host_data.set('HOST_' + host_arch.to_upper(), 1)
|
||||||
|
|
||||||
|
if get_option('module_upgrades') and not enable_modules
|
||||||
|
error('Cannot enable module-upgrades as modules are not enabled')
|
||||||
|
endif
|
||||||
|
config_host_data.set('CONFIG_MODULE_UPGRADES', get_option('module_upgrades'))
|
||||||
|
|
||||||
config_host_data.set('CONFIG_ATTR', libattr.found())
|
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_BDRV_WHITELIST_TOOLS', get_option('block_drv_whitelist_in_tools'))
|
||||||
config_host_data.set('CONFIG_BRLAPI', brlapi.found())
|
config_host_data.set('CONFIG_BRLAPI', brlapi.found())
|
||||||
|
@ -1524,6 +1568,7 @@ config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
|
||||||
config_host_data.set('CONFIG_CURL', curl.found())
|
config_host_data.set('CONFIG_CURL', curl.found())
|
||||||
config_host_data.set('CONFIG_CURSES', curses.found())
|
config_host_data.set('CONFIG_CURSES', curses.found())
|
||||||
config_host_data.set('CONFIG_GBM', gbm.found())
|
config_host_data.set('CONFIG_GBM', gbm.found())
|
||||||
|
config_host_data.set('CONFIG_GIO', gio.found())
|
||||||
config_host_data.set('CONFIG_GLUSTERFS', glusterfs.found())
|
config_host_data.set('CONFIG_GLUSTERFS', glusterfs.found())
|
||||||
if glusterfs.found()
|
if glusterfs.found()
|
||||||
config_host_data.set('CONFIG_GLUSTERFS_XLATOR_OPT', glusterfs.version().version_compare('>=4'))
|
config_host_data.set('CONFIG_GLUSTERFS_XLATOR_OPT', glusterfs.version().version_compare('>=4'))
|
||||||
|
@ -1546,8 +1591,10 @@ config_host_data.set('CONFIG_LINUX_AIO', libaio.found())
|
||||||
config_host_data.set('CONFIG_LINUX_IO_URING', linux_io_uring.found())
|
config_host_data.set('CONFIG_LINUX_IO_URING', linux_io_uring.found())
|
||||||
config_host_data.set('CONFIG_LIBPMEM', libpmem.found())
|
config_host_data.set('CONFIG_LIBPMEM', libpmem.found())
|
||||||
config_host_data.set('CONFIG_NUMA', numa.found())
|
config_host_data.set('CONFIG_NUMA', numa.found())
|
||||||
|
config_host_data.set('CONFIG_OPENGL', opengl.found())
|
||||||
config_host_data.set('CONFIG_PROFILER', get_option('profiler'))
|
config_host_data.set('CONFIG_PROFILER', get_option('profiler'))
|
||||||
config_host_data.set('CONFIG_RBD', rbd.found())
|
config_host_data.set('CONFIG_RBD', rbd.found())
|
||||||
|
config_host_data.set('CONFIG_RDMA', rdma.found())
|
||||||
config_host_data.set('CONFIG_SDL', sdl.found())
|
config_host_data.set('CONFIG_SDL', sdl.found())
|
||||||
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
||||||
config_host_data.set('CONFIG_SECCOMP', seccomp.found())
|
config_host_data.set('CONFIG_SECCOMP', seccomp.found())
|
||||||
|
@ -1646,7 +1693,7 @@ config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', prefix: '
|
||||||
if rdma.found()
|
if rdma.found()
|
||||||
config_host_data.set('HAVE_IBV_ADVISE_MR',
|
config_host_data.set('HAVE_IBV_ADVISE_MR',
|
||||||
cc.has_function('ibv_advise_mr',
|
cc.has_function('ibv_advise_mr',
|
||||||
args: config_host['RDMA_LIBS'].split(),
|
dependencies: rdma,
|
||||||
prefix: '#include <infiniband/verbs.h>'))
|
prefix: '#include <infiniband/verbs.h>'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1920,6 +1967,32 @@ config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_source_prefix + '''
|
||||||
return getauxval(AT_HWCAP) == 0;
|
return getauxval(AT_HWCAP) == 0;
|
||||||
}'''))
|
}'''))
|
||||||
|
|
||||||
|
config_host_data.set('CONFIG_USBFS', have_linux_user and cc.compiles('''
|
||||||
|
#include <linux/usbdevice_fs.h>
|
||||||
|
|
||||||
|
#ifndef USBDEVFS_GET_CAPABILITIES
|
||||||
|
#error "USBDEVFS_GET_CAPABILITIES undefined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USBDEVFS_DISCONNECT_CLAIM
|
||||||
|
#error "USBDEVFS_DISCONNECT_CLAIM undefined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main(void) { return 0; }'''))
|
||||||
|
|
||||||
|
have_keyring = get_option('keyring') \
|
||||||
|
.require(targetos == 'linux', error_message: 'keyring is only available on Linux') \
|
||||||
|
.require(cc.compiles('''
|
||||||
|
#include <errno.h>
|
||||||
|
#include <asm/unistd.h>
|
||||||
|
#include <linux/keyctl.h>
|
||||||
|
#include <sys/syscall.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
int main(void) {
|
||||||
|
return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
|
||||||
|
}'''), error_message: 'keyctl syscall not available on this system').allowed()
|
||||||
|
config_host_data.set('CONFIG_SECRET_KEYRING', have_keyring)
|
||||||
|
|
||||||
have_cpuid_h = cc.links('''
|
have_cpuid_h = cc.links('''
|
||||||
#include <cpuid.h>
|
#include <cpuid.h>
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
@ -1966,6 +2039,36 @@ config_host_data.set('CONFIG_AVX512F_OPT', get_option('avx512f') \
|
||||||
int main(int argc, char *argv[]) { return bar(argv[0]); }
|
int main(int argc, char *argv[]) { return bar(argv[0]); }
|
||||||
'''), error_message: 'AVX512F not available').allowed())
|
'''), error_message: 'AVX512F not available').allowed())
|
||||||
|
|
||||||
|
have_pvrdma = get_option('pvrdma') \
|
||||||
|
.require(rdma.found(), error_message: 'PVRDMA requires OpenFabrics libraries') \
|
||||||
|
.require(cc.compiles('''
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char buf = 0;
|
||||||
|
void *addr = &buf;
|
||||||
|
addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}'''), error_message: 'PVRDMA requires mremap').allowed()
|
||||||
|
|
||||||
|
if have_pvrdma
|
||||||
|
config_host_data.set('LEGACY_RDMA_REG_MR', not cc.compiles('''
|
||||||
|
#include <infiniband/verbs.h>
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
struct ibv_mr *mr;
|
||||||
|
struct ibv_pd *pd = NULL;
|
||||||
|
size_t length = 10;
|
||||||
|
uint64_t iova = 0;
|
||||||
|
int access = 0;
|
||||||
|
void *addr = NULL;
|
||||||
|
|
||||||
|
mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
|
||||||
|
ibv_dereg_mr(mr);
|
||||||
|
return 0;
|
||||||
|
}'''))
|
||||||
|
endif
|
||||||
|
|
||||||
if get_option('membarrier').disabled()
|
if get_option('membarrier').disabled()
|
||||||
have_membarrier = false
|
have_membarrier = false
|
||||||
elif targetos == 'windows'
|
elif targetos == 'windows'
|
||||||
|
@ -2093,14 +2196,14 @@ host_kconfig = \
|
||||||
(have_tpm ? ['CONFIG_TPM=y'] : []) + \
|
(have_tpm ? ['CONFIG_TPM=y'] : []) + \
|
||||||
(spice.found() ? ['CONFIG_SPICE=y'] : []) + \
|
(spice.found() ? ['CONFIG_SPICE=y'] : []) + \
|
||||||
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
|
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
|
||||||
('CONFIG_OPENGL' in config_host ? ['CONFIG_OPENGL=y'] : []) + \
|
(opengl.found() ? ['CONFIG_OPENGL=y'] : []) + \
|
||||||
(x11.found() ? ['CONFIG_X11=y'] : []) + \
|
(x11.found() ? ['CONFIG_X11=y'] : []) + \
|
||||||
('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
|
('CONFIG_VHOST_USER' in config_host ? ['CONFIG_VHOST_USER=y'] : []) + \
|
||||||
('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
|
('CONFIG_VHOST_VDPA' in config_host ? ['CONFIG_VHOST_VDPA=y'] : []) + \
|
||||||
('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
|
('CONFIG_VHOST_KERNEL' in config_host ? ['CONFIG_VHOST_KERNEL=y'] : []) + \
|
||||||
(have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
|
(have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \
|
||||||
('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
|
('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
|
||||||
('CONFIG_PVRDMA' in config_host ? ['CONFIG_PVRDMA=y'] : []) + \
|
(have_pvrdma ? ['CONFIG_PVRDMA=y'] : []) + \
|
||||||
(multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : [])
|
(multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : [])
|
||||||
|
|
||||||
ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ]
|
ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ]
|
||||||
|
@ -2144,8 +2247,6 @@ foreach target : target_dirs
|
||||||
config_all += { sym: 'y' }
|
config_all += { sym: 'y' }
|
||||||
if sym == 'CONFIG_TCG' and tcg_arch == 'tci'
|
if sym == 'CONFIG_TCG' and tcg_arch == 'tci'
|
||||||
config_target += { 'CONFIG_TCG_INTERPRETER': 'y' }
|
config_target += { 'CONFIG_TCG_INTERPRETER': 'y' }
|
||||||
elif sym == 'CONFIG_XEN' and have_xen_pci_passthrough
|
|
||||||
config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
|
|
||||||
endif
|
endif
|
||||||
if target in modular_tcg
|
if target in modular_tcg
|
||||||
config_target += { 'CONFIG_TCG_MODULAR': 'y' }
|
config_target += { 'CONFIG_TCG_MODULAR': 'y' }
|
||||||
|
@ -3480,7 +3581,7 @@ summary_info += {'block layer': have_block}
|
||||||
summary_info += {'Install blobs': get_option('install_blobs')}
|
summary_info += {'Install blobs': get_option('install_blobs')}
|
||||||
summary_info += {'module support': config_host.has_key('CONFIG_MODULES')}
|
summary_info += {'module support': config_host.has_key('CONFIG_MODULES')}
|
||||||
if config_host.has_key('CONFIG_MODULES')
|
if config_host.has_key('CONFIG_MODULES')
|
||||||
summary_info += {'alternative module path': config_host.has_key('CONFIG_MODULE_UPGRADES')}
|
summary_info += {'alternative module path': get_option('module_upgrades')}
|
||||||
endif
|
endif
|
||||||
summary_info += {'fuzzing support': get_option('fuzzing')}
|
summary_info += {'fuzzing support': get_option('fuzzing')}
|
||||||
if have_system
|
if have_system
|
||||||
|
@ -3535,10 +3636,10 @@ link_args = get_option(link_language + '_link_args')
|
||||||
if link_args.length() > 0
|
if link_args.length() > 0
|
||||||
summary_info += {'LDFLAGS': ' '.join(link_args)}
|
summary_info += {'LDFLAGS': ' '.join(link_args)}
|
||||||
endif
|
endif
|
||||||
summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
|
summary_info += {'QEMU_CFLAGS': ' '.join(qemu_cflags)}
|
||||||
summary_info += {'QEMU_CXXFLAGS': config_host['QEMU_CXXFLAGS']}
|
summary_info += {'QEMU_CXXFLAGS': ' '.join(qemu_cxxflags)}
|
||||||
summary_info += {'QEMU_OBJCFLAGS': config_host['QEMU_OBJCFLAGS']}
|
summary_info += {'QEMU_OBJCFLAGS': ' '.join(qemu_objcflags)}
|
||||||
summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
|
summary_info += {'QEMU_LDFLAGS': ' '.join(qemu_ldflags)}
|
||||||
summary_info += {'profiler': get_option('profiler')}
|
summary_info += {'profiler': get_option('profiler')}
|
||||||
summary_info += {'link-time optimization (LTO)': get_option('b_lto')}
|
summary_info += {'link-time optimization (LTO)': get_option('b_lto')}
|
||||||
summary_info += {'PIE': get_option('b_pie')}
|
summary_info += {'PIE': get_option('b_pie')}
|
||||||
|
@ -3648,7 +3749,7 @@ if nettle.found()
|
||||||
endif
|
endif
|
||||||
summary_info += {'AF_ALG support': have_afalg}
|
summary_info += {'AF_ALG support': have_afalg}
|
||||||
summary_info += {'rng-none': get_option('rng_none')}
|
summary_info += {'rng-none': get_option('rng_none')}
|
||||||
summary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')}
|
summary_info += {'Linux keyring': have_keyring}
|
||||||
summary(summary_info, bool_yn: true, section: 'Crypto')
|
summary(summary_info, bool_yn: true, section: 'Crypto')
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
|
@ -3694,8 +3795,8 @@ summary_info += {'l2tpv3 support': have_l2tpv3}
|
||||||
summary_info += {'Linux AIO support': libaio}
|
summary_info += {'Linux AIO support': libaio}
|
||||||
summary_info += {'Linux io_uring support': linux_io_uring}
|
summary_info += {'Linux io_uring support': linux_io_uring}
|
||||||
summary_info += {'ATTR/XATTR support': libattr}
|
summary_info += {'ATTR/XATTR support': libattr}
|
||||||
summary_info += {'RDMA support': config_host.has_key('CONFIG_RDMA')}
|
summary_info += {'RDMA support': rdma}
|
||||||
summary_info += {'PVRDMA support': config_host.has_key('CONFIG_PVRDMA')}
|
summary_info += {'PVRDMA support': have_pvrdma}
|
||||||
summary_info += {'fdt support': fdt_opt == 'disabled' ? false : fdt_opt}
|
summary_info += {'fdt support': fdt_opt == 'disabled' ? false : fdt_opt}
|
||||||
summary_info += {'libcap-ng support': libcap_ng}
|
summary_info += {'libcap-ng support': libcap_ng}
|
||||||
summary_info += {'bpf support': libbpf}
|
summary_info += {'bpf support': libbpf}
|
||||||
|
@ -3708,7 +3809,7 @@ summary_info += {'smartcard support': cacard}
|
||||||
summary_info += {'U2F support': u2f}
|
summary_info += {'U2F support': u2f}
|
||||||
summary_info += {'libusb': libusb}
|
summary_info += {'libusb': libusb}
|
||||||
summary_info += {'usb net redir': usbredir}
|
summary_info += {'usb net redir': usbredir}
|
||||||
summary_info += {'OpenGL support': config_host.has_key('CONFIG_OPENGL')}
|
summary_info += {'OpenGL support (epoxy)': opengl}
|
||||||
summary_info += {'GBM': gbm}
|
summary_info += {'GBM': gbm}
|
||||||
summary_info += {'libiscsi support': libiscsi}
|
summary_info += {'libiscsi support': libiscsi}
|
||||||
summary_info += {'libnfs support': libnfs}
|
summary_info += {'libnfs support': libnfs}
|
||||||
|
|
|
@ -34,6 +34,8 @@ option('fuzzing', type : 'boolean', value: false,
|
||||||
description: 'build fuzzing targets')
|
description: 'build fuzzing targets')
|
||||||
option('gettext', type : 'feature', value : 'auto',
|
option('gettext', type : 'feature', value : 'auto',
|
||||||
description: 'Localization of the GTK+ user interface')
|
description: 'Localization of the GTK+ user interface')
|
||||||
|
option('module_upgrades', type : 'boolean', value : false,
|
||||||
|
description: 'try to load modules from alternate paths for upgrades')
|
||||||
option('install_blobs', type : 'boolean', value : true,
|
option('install_blobs', type : 'boolean', value : true,
|
||||||
description: 'install provided firmware blobs')
|
description: 'install provided firmware blobs')
|
||||||
option('sparse', type : 'feature', value : 'auto',
|
option('sparse', type : 'feature', value : 'auto',
|
||||||
|
@ -90,6 +92,8 @@ option('avx2', type: 'feature', value: 'auto',
|
||||||
description: 'AVX2 optimizations')
|
description: 'AVX2 optimizations')
|
||||||
option('avx512f', type: 'feature', value: 'disabled',
|
option('avx512f', type: 'feature', value: 'disabled',
|
||||||
description: 'AVX512F optimizations')
|
description: 'AVX512F optimizations')
|
||||||
|
option('keyring', type: 'feature', value: 'auto',
|
||||||
|
description: 'Linux keyring support')
|
||||||
|
|
||||||
option('attr', type : 'feature', value : 'auto',
|
option('attr', type : 'feature', value : 'auto',
|
||||||
description: 'attr/xattr support')
|
description: 'attr/xattr support')
|
||||||
|
@ -107,6 +111,8 @@ option('cocoa', type : 'feature', value : 'auto',
|
||||||
description: 'Cocoa user interface (macOS only)')
|
description: 'Cocoa user interface (macOS only)')
|
||||||
option('curl', type : 'feature', value : 'auto',
|
option('curl', type : 'feature', value : 'auto',
|
||||||
description: 'CURL block device driver')
|
description: 'CURL block device driver')
|
||||||
|
option('gio', type : 'feature', value : 'auto',
|
||||||
|
description: 'use libgio for D-Bus support')
|
||||||
option('glusterfs', type : 'feature', value : 'auto',
|
option('glusterfs', type : 'feature', value : 'auto',
|
||||||
description: 'Glusterfs block device driver')
|
description: 'Glusterfs block device driver')
|
||||||
option('libiscsi', type : 'feature', value : 'auto',
|
option('libiscsi', type : 'feature', value : 'auto',
|
||||||
|
@ -149,6 +155,12 @@ option('lzo', type : 'feature', value : 'auto',
|
||||||
description: 'lzo compression support')
|
description: 'lzo compression support')
|
||||||
option('rbd', type : 'feature', value : 'auto',
|
option('rbd', type : 'feature', value : 'auto',
|
||||||
description: 'Ceph block device driver')
|
description: 'Ceph block device driver')
|
||||||
|
option('opengl', type : 'feature', value : 'auto',
|
||||||
|
description: 'OpenGL support')
|
||||||
|
option('rdma', type : 'feature', value : 'auto',
|
||||||
|
description: 'Enable RDMA-based migration')
|
||||||
|
option('pvrdma', type : 'feature', value : 'auto',
|
||||||
|
description: 'Enable PVRDMA support')
|
||||||
option('gtk', type : 'feature', value : 'auto',
|
option('gtk', type : 'feature', value : 'auto',
|
||||||
description: 'GTK+ user interface')
|
description: 'GTK+ user interface')
|
||||||
option('sdl', type : 'feature', value : 'auto',
|
option('sdl', type : 'feature', value : 'auto',
|
||||||
|
|
|
@ -27,7 +27,7 @@ softmmu_ss.add(files(
|
||||||
'tls.c',
|
'tls.c',
|
||||||
), gnutls)
|
), gnutls)
|
||||||
|
|
||||||
softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
|
softmmu_ss.add(when: rdma, if_true: files('rdma.c'))
|
||||||
if get_option('live_block_migration').allowed()
|
if get_option('live_block_migration').allowed()
|
||||||
softmmu_ss.add(files('block.c'))
|
softmmu_ss.add(files('block.c'))
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -4176,7 +4176,9 @@ SRST
|
||||||
ERST
|
ERST
|
||||||
|
|
||||||
DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
|
DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
|
||||||
"-enable-kvm enable KVM full virtualization support\n", QEMU_ARCH_ALL)
|
"-enable-kvm enable KVM full virtualization support\n",
|
||||||
|
QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
|
||||||
|
QEMU_ARCH_RISCV | QEMU_ARCH_S390X)
|
||||||
SRST
|
SRST
|
||||||
``-enable-kvm``
|
``-enable-kvm``
|
||||||
Enable KVM full virtualization support. This option is only
|
Enable KVM full virtualization support. This option is only
|
||||||
|
@ -4622,18 +4624,14 @@ SRST
|
||||||
ERST
|
ERST
|
||||||
|
|
||||||
DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
|
DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
|
||||||
"-readconfig <file>\n", QEMU_ARCH_ALL)
|
"-readconfig <file>\n"
|
||||||
|
" read config file\n", QEMU_ARCH_ALL)
|
||||||
SRST
|
SRST
|
||||||
``-readconfig file``
|
``-readconfig file``
|
||||||
Read device configuration from file. This approach is useful when
|
Read device configuration from file. This approach is useful when
|
||||||
you want to spawn QEMU process with many command line options but
|
you want to spawn QEMU process with many command line options but
|
||||||
you don't want to exceed the command line character limit.
|
you don't want to exceed the command line character limit.
|
||||||
ERST
|
ERST
|
||||||
DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig,
|
|
||||||
"-writeconfig <file>\n"
|
|
||||||
" read/write config file (deprecated)\n", QEMU_ARCH_ALL)
|
|
||||||
SRST
|
|
||||||
ERST
|
|
||||||
|
|
||||||
DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
|
DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
|
||||||
"-no-user-config\n"
|
"-no-user-config\n"
|
||||||
|
|
|
@ -129,7 +129,7 @@ if targetos == 'windows'
|
||||||
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
|
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
|
||||||
qemu_ga_msi_arch[cpu],
|
qemu_ga_msi_arch[cpu],
|
||||||
qemu_ga_msi_vss,
|
qemu_ga_msi_vss,
|
||||||
'-D', 'Mingw_dlls=' + config_host['QEMU_GA_MSI_MINGW_DLL_PATH'],
|
'-D', 'Mingw_bin=' + config_host['QEMU_GA_MSI_MINGW_BIN_PATH'],
|
||||||
])
|
])
|
||||||
all_qga += [qga_msi]
|
all_qga += [qga_msi]
|
||||||
alias_target('msi', qga_msi)
|
alias_target('msi', qga_msi)
|
||||||
|
|
|
@ -19,6 +19,8 @@ meson_options_help() {
|
||||||
printf "%s\n" ' --disable-install-blobs install provided firmware blobs'
|
printf "%s\n" ' --disable-install-blobs install provided firmware blobs'
|
||||||
printf "%s\n" ' --enable-malloc=CHOICE choose memory allocator to use [system] (choices:'
|
printf "%s\n" ' --enable-malloc=CHOICE choose memory allocator to use [system] (choices:'
|
||||||
printf "%s\n" ' jemalloc/system/tcmalloc)'
|
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-profiler profiler support'
|
printf "%s\n" ' --enable-profiler profiler support'
|
||||||
printf "%s\n" ' --enable-qom-cast-debug cast debugging support'
|
printf "%s\n" ' --enable-qom-cast-debug cast debugging support'
|
||||||
printf "%s\n" ' --enable-rng-none dummy RNG, avoid using /dev/(u)random and'
|
printf "%s\n" ' --enable-rng-none dummy RNG, avoid using /dev/(u)random and'
|
||||||
|
@ -59,6 +61,7 @@ meson_options_help() {
|
||||||
printf "%s\n" ' fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports'
|
printf "%s\n" ' fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports'
|
||||||
printf "%s\n" ' gcrypt libgcrypt cryptography support'
|
printf "%s\n" ' gcrypt libgcrypt cryptography support'
|
||||||
printf "%s\n" ' gettext Localization of the GTK+ user interface'
|
printf "%s\n" ' gettext Localization of the GTK+ user interface'
|
||||||
|
printf "%s\n" ' gio use libgio for D-Bus support'
|
||||||
printf "%s\n" ' glusterfs Glusterfs block device driver'
|
printf "%s\n" ' glusterfs Glusterfs block device driver'
|
||||||
printf "%s\n" ' gnutls GNUTLS cryptography support'
|
printf "%s\n" ' gnutls GNUTLS cryptography support'
|
||||||
printf "%s\n" ' gtk GTK+ user interface'
|
printf "%s\n" ' gtk GTK+ user interface'
|
||||||
|
@ -68,6 +71,7 @@ meson_options_help() {
|
||||||
printf "%s\n" ' hvf HVF acceleration support'
|
printf "%s\n" ' hvf HVF acceleration support'
|
||||||
printf "%s\n" ' iconv Font glyph conversion support'
|
printf "%s\n" ' iconv Font glyph conversion support'
|
||||||
printf "%s\n" ' jack JACK sound support'
|
printf "%s\n" ' jack JACK sound support'
|
||||||
|
printf "%s\n" ' keyring Linux keyring support'
|
||||||
printf "%s\n" ' kvm KVM acceleration support'
|
printf "%s\n" ' kvm KVM acceleration support'
|
||||||
printf "%s\n" ' l2tpv3 l2tpv3 network backend support'
|
printf "%s\n" ' l2tpv3 l2tpv3 network backend support'
|
||||||
printf "%s\n" ' libdaxctl libdaxctl support'
|
printf "%s\n" ' libdaxctl libdaxctl support'
|
||||||
|
@ -91,14 +95,17 @@ meson_options_help() {
|
||||||
printf "%s\n" ' nettle nettle cryptography support'
|
printf "%s\n" ' nettle nettle cryptography support'
|
||||||
printf "%s\n" ' numa libnuma support'
|
printf "%s\n" ' numa libnuma support'
|
||||||
printf "%s\n" ' nvmm NVMM acceleration support'
|
printf "%s\n" ' nvmm NVMM acceleration support'
|
||||||
|
printf "%s\n" ' opengl OpenGL support'
|
||||||
printf "%s\n" ' oss OSS sound support'
|
printf "%s\n" ' oss OSS sound support'
|
||||||
printf "%s\n" ' pa PulseAudio sound support'
|
printf "%s\n" ' pa PulseAudio sound support'
|
||||||
printf "%s\n" ' parallels parallels image format support'
|
printf "%s\n" ' parallels parallels image format support'
|
||||||
printf "%s\n" ' png PNG support with libpng'
|
printf "%s\n" ' png PNG support with libpng'
|
||||||
|
printf "%s\n" ' pvrdma Enable PVRDMA support'
|
||||||
printf "%s\n" ' qcow1 qcow1 image format support'
|
printf "%s\n" ' qcow1 qcow1 image format support'
|
||||||
printf "%s\n" ' qed qed image format support'
|
printf "%s\n" ' qed qed image format support'
|
||||||
printf "%s\n" ' qga-vss build QGA VSS support (broken with MinGW)'
|
printf "%s\n" ' qga-vss build QGA VSS support (broken with MinGW)'
|
||||||
printf "%s\n" ' rbd Ceph block device driver'
|
printf "%s\n" ' rbd Ceph block device driver'
|
||||||
|
printf "%s\n" ' rdma Enable RDMA-based migration'
|
||||||
printf "%s\n" ' replication replication support'
|
printf "%s\n" ' replication replication support'
|
||||||
printf "%s\n" ' sdl SDL user interface'
|
printf "%s\n" ' sdl SDL user interface'
|
||||||
printf "%s\n" ' sdl-image SDL Image support for icons'
|
printf "%s\n" ' sdl-image SDL Image support for icons'
|
||||||
|
@ -204,6 +211,8 @@ _meson_option_parse() {
|
||||||
--disable-gcrypt) printf "%s" -Dgcrypt=disabled ;;
|
--disable-gcrypt) printf "%s" -Dgcrypt=disabled ;;
|
||||||
--enable-gettext) printf "%s" -Dgettext=enabled ;;
|
--enable-gettext) printf "%s" -Dgettext=enabled ;;
|
||||||
--disable-gettext) printf "%s" -Dgettext=disabled ;;
|
--disable-gettext) printf "%s" -Dgettext=disabled ;;
|
||||||
|
--enable-gio) printf "%s" -Dgio=enabled ;;
|
||||||
|
--disable-gio) printf "%s" -Dgio=disabled ;;
|
||||||
--enable-glusterfs) printf "%s" -Dglusterfs=enabled ;;
|
--enable-glusterfs) printf "%s" -Dglusterfs=enabled ;;
|
||||||
--disable-glusterfs) printf "%s" -Dglusterfs=disabled ;;
|
--disable-glusterfs) printf "%s" -Dglusterfs=disabled ;;
|
||||||
--enable-gnutls) printf "%s" -Dgnutls=enabled ;;
|
--enable-gnutls) printf "%s" -Dgnutls=enabled ;;
|
||||||
|
@ -226,6 +235,8 @@ _meson_option_parse() {
|
||||||
--disable-install-blobs) printf "%s" -Dinstall_blobs=false ;;
|
--disable-install-blobs) printf "%s" -Dinstall_blobs=false ;;
|
||||||
--enable-jack) printf "%s" -Djack=enabled ;;
|
--enable-jack) printf "%s" -Djack=enabled ;;
|
||||||
--disable-jack) printf "%s" -Djack=disabled ;;
|
--disable-jack) printf "%s" -Djack=disabled ;;
|
||||||
|
--enable-keyring) printf "%s" -Dkeyring=enabled ;;
|
||||||
|
--disable-keyring) printf "%s" -Dkeyring=disabled ;;
|
||||||
--enable-kvm) printf "%s" -Dkvm=enabled ;;
|
--enable-kvm) printf "%s" -Dkvm=enabled ;;
|
||||||
--disable-kvm) printf "%s" -Dkvm=disabled ;;
|
--disable-kvm) printf "%s" -Dkvm=disabled ;;
|
||||||
--enable-l2tpv3) printf "%s" -Dl2tpv3=enabled ;;
|
--enable-l2tpv3) printf "%s" -Dl2tpv3=enabled ;;
|
||||||
|
@ -259,6 +270,8 @@ _meson_option_parse() {
|
||||||
--disable-malloc-trim) printf "%s" -Dmalloc_trim=disabled ;;
|
--disable-malloc-trim) printf "%s" -Dmalloc_trim=disabled ;;
|
||||||
--enable-membarrier) printf "%s" -Dmembarrier=enabled ;;
|
--enable-membarrier) printf "%s" -Dmembarrier=enabled ;;
|
||||||
--disable-membarrier) printf "%s" -Dmembarrier=disabled ;;
|
--disable-membarrier) printf "%s" -Dmembarrier=disabled ;;
|
||||||
|
--enable-module-upgrades) printf "%s" -Dmodule_upgrades=true ;;
|
||||||
|
--disable-module-upgrades) printf "%s" -Dmodule_upgrades=false ;;
|
||||||
--enable-mpath) printf "%s" -Dmpath=enabled ;;
|
--enable-mpath) printf "%s" -Dmpath=enabled ;;
|
||||||
--disable-mpath) printf "%s" -Dmpath=disabled ;;
|
--disable-mpath) printf "%s" -Dmpath=disabled ;;
|
||||||
--enable-multiprocess) printf "%s" -Dmultiprocess=enabled ;;
|
--enable-multiprocess) printf "%s" -Dmultiprocess=enabled ;;
|
||||||
|
@ -271,6 +284,8 @@ _meson_option_parse() {
|
||||||
--disable-numa) printf "%s" -Dnuma=disabled ;;
|
--disable-numa) printf "%s" -Dnuma=disabled ;;
|
||||||
--enable-nvmm) printf "%s" -Dnvmm=enabled ;;
|
--enable-nvmm) printf "%s" -Dnvmm=enabled ;;
|
||||||
--disable-nvmm) printf "%s" -Dnvmm=disabled ;;
|
--disable-nvmm) printf "%s" -Dnvmm=disabled ;;
|
||||||
|
--enable-opengl) printf "%s" -Dopengl=enabled ;;
|
||||||
|
--disable-opengl) printf "%s" -Dopengl=disabled ;;
|
||||||
--enable-oss) printf "%s" -Doss=enabled ;;
|
--enable-oss) printf "%s" -Doss=enabled ;;
|
||||||
--disable-oss) printf "%s" -Doss=disabled ;;
|
--disable-oss) printf "%s" -Doss=disabled ;;
|
||||||
--enable-pa) printf "%s" -Dpa=enabled ;;
|
--enable-pa) printf "%s" -Dpa=enabled ;;
|
||||||
|
@ -281,6 +296,8 @@ _meson_option_parse() {
|
||||||
--disable-png) printf "%s" -Dpng=disabled ;;
|
--disable-png) printf "%s" -Dpng=disabled ;;
|
||||||
--enable-profiler) printf "%s" -Dprofiler=true ;;
|
--enable-profiler) printf "%s" -Dprofiler=true ;;
|
||||||
--disable-profiler) printf "%s" -Dprofiler=false ;;
|
--disable-profiler) printf "%s" -Dprofiler=false ;;
|
||||||
|
--enable-pvrdma) printf "%s" -Dpvrdma=enabled ;;
|
||||||
|
--disable-pvrdma) printf "%s" -Dpvrdma=disabled ;;
|
||||||
--enable-qcow1) printf "%s" -Dqcow1=enabled ;;
|
--enable-qcow1) printf "%s" -Dqcow1=enabled ;;
|
||||||
--disable-qcow1) printf "%s" -Dqcow1=disabled ;;
|
--disable-qcow1) printf "%s" -Dqcow1=disabled ;;
|
||||||
--enable-qed) printf "%s" -Dqed=enabled ;;
|
--enable-qed) printf "%s" -Dqed=enabled ;;
|
||||||
|
@ -291,6 +308,8 @@ _meson_option_parse() {
|
||||||
--disable-qom-cast-debug) printf "%s" -Dqom_cast_debug=false ;;
|
--disable-qom-cast-debug) printf "%s" -Dqom_cast_debug=false ;;
|
||||||
--enable-rbd) printf "%s" -Drbd=enabled ;;
|
--enable-rbd) printf "%s" -Drbd=enabled ;;
|
||||||
--disable-rbd) printf "%s" -Drbd=disabled ;;
|
--disable-rbd) printf "%s" -Drbd=disabled ;;
|
||||||
|
--enable-rdma) printf "%s" -Drdma=enabled ;;
|
||||||
|
--disable-rdma) printf "%s" -Drdma=disabled ;;
|
||||||
--enable-replication) printf "%s" -Dreplication=enabled ;;
|
--enable-replication) printf "%s" -Dreplication=enabled ;;
|
||||||
--disable-replication) printf "%s" -Dreplication=disabled ;;
|
--disable-replication) printf "%s" -Dreplication=disabled ;;
|
||||||
--enable-rng-none) printf "%s" -Drng_none=true ;;
|
--enable-rng-none) printf "%s" -Drng_none=true ;;
|
||||||
|
|
20
softmmu/vl.c
20
softmmu/vl.c
|
@ -3551,26 +3551,6 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||||
display_remote++;
|
display_remote++;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case QEMU_OPTION_writeconfig:
|
|
||||||
{
|
|
||||||
FILE *fp;
|
|
||||||
warn_report("-writeconfig is deprecated and will go away without a replacement");
|
|
||||||
if (strcmp(optarg, "-") == 0) {
|
|
||||||
fp = stdout;
|
|
||||||
} else {
|
|
||||||
fp = fopen(optarg, "w");
|
|
||||||
if (fp == NULL) {
|
|
||||||
error_report("open %s: %s", optarg,
|
|
||||||
strerror(errno));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
qemu_config_write(fp);
|
|
||||||
if (fp != stdout) {
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case QEMU_OPTION_qtest:
|
case QEMU_OPTION_qtest:
|
||||||
qtest_chrdev = optarg;
|
qtest_chrdev = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -2011,25 +2011,23 @@ SSE_HELPER_Q(helper_pcmpgtq, FCMPGTQ)
|
||||||
|
|
||||||
static inline int pcmp_elen(CPUX86State *env, int reg, uint32_t ctrl)
|
static inline int pcmp_elen(CPUX86State *env, int reg, uint32_t ctrl)
|
||||||
{
|
{
|
||||||
int val;
|
target_long val, limit;
|
||||||
|
|
||||||
/* Presence of REX.W is indicated by a bit higher than 7 set */
|
/* Presence of REX.W is indicated by a bit higher than 7 set */
|
||||||
if (ctrl >> 8) {
|
if (ctrl >> 8) {
|
||||||
val = abs1((int64_t)env->regs[reg]);
|
val = (target_long)env->regs[reg];
|
||||||
} else {
|
} else {
|
||||||
val = abs1((int32_t)env->regs[reg]);
|
val = (int32_t)env->regs[reg];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctrl & 1) {
|
if (ctrl & 1) {
|
||||||
if (val > 8) {
|
limit = 8;
|
||||||
return 8;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (val > 16) {
|
limit = 16;
|
||||||
return 16;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return val;
|
if ((val > limit) || (val < -limit)) {
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
return abs1(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int pcmp_ilen(Reg *r, uint8_t ctrl)
|
static inline int pcmp_ilen(Reg *r, uint8_t ctrl)
|
||||||
|
|
|
@ -98,14 +98,13 @@ if dbus_display
|
||||||
endif
|
endif
|
||||||
|
|
||||||
dbus_daemon = find_program('dbus-daemon', required: false)
|
dbus_daemon = find_program('dbus-daemon', required: false)
|
||||||
if dbus_daemon.found() and config_host.has_key('GDBUS_CODEGEN')
|
if dbus_daemon.found() and gdbus_codegen.found()
|
||||||
# Temporarily disabled due to Patchew failures:
|
# Temporarily disabled due to Patchew failures:
|
||||||
#qtests_i386 += ['dbus-vmstate-test']
|
#qtests_i386 += ['dbus-vmstate-test']
|
||||||
dbus_vmstate1 = custom_target('dbus-vmstate description',
|
dbus_vmstate1 = custom_target('dbus-vmstate description',
|
||||||
output: ['dbus-vmstate1.h', 'dbus-vmstate1.c'],
|
output: ['dbus-vmstate1.h', 'dbus-vmstate1.c'],
|
||||||
input: meson.project_source_root() / 'backends/dbus-vmstate1.xml',
|
input: meson.project_source_root() / 'backends/dbus-vmstate1.xml',
|
||||||
command: [config_host['GDBUS_CODEGEN'],
|
command: [gdbus_codegen, '@INPUT@',
|
||||||
'@INPUT@',
|
|
||||||
'--interface-prefix', 'org.qemu',
|
'--interface-prefix', 'org.qemu',
|
||||||
'--generate-c-code', '@BASENAME@']).to_list()
|
'--generate-c-code', '@BASENAME@']).to_list()
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
softmmu_ss.add(pixman)
|
softmmu_ss.add(pixman)
|
||||||
specific_ss.add(when: ['CONFIG_SOFTMMU'], if_true: pixman) # for the include path
|
specific_ss.add(when: ['CONFIG_SOFTMMU'], if_true: pixman) # for the include path
|
||||||
|
specific_ss.add(when: ['CONFIG_SOFTMMU'], if_true: opengl) # for the include path
|
||||||
|
|
||||||
softmmu_ss.add(files(
|
softmmu_ss.add(files(
|
||||||
'clipboard.c',
|
'clipboard.c',
|
||||||
|
@ -43,7 +44,6 @@ vnc_ss.add(zlib, png, jpeg, gnutls)
|
||||||
vnc_ss.add(when: sasl, if_true: files('vnc-auth-sasl.c'))
|
vnc_ss.add(when: sasl, if_true: files('vnc-auth-sasl.c'))
|
||||||
softmmu_ss.add_all(when: vnc, if_true: vnc_ss)
|
softmmu_ss.add_all(when: vnc, if_true: vnc_ss)
|
||||||
softmmu_ss.add(when: vnc, if_false: files('vnc-stubs.c'))
|
softmmu_ss.add(when: vnc, if_false: files('vnc-stubs.c'))
|
||||||
specific_ss.add(when: ['CONFIG_SOFTMMU'], if_true: opengl)
|
|
||||||
|
|
||||||
ui_modules = {}
|
ui_modules = {}
|
||||||
|
|
||||||
|
@ -53,17 +53,18 @@ if curses.found()
|
||||||
ui_modules += {'curses' : curses_ss}
|
ui_modules += {'curses' : curses_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_OPENGL')
|
softmmu_ss.add(opengl)
|
||||||
|
if opengl.found()
|
||||||
opengl_ss = ss.source_set()
|
opengl_ss = ss.source_set()
|
||||||
opengl_ss.add(gbm)
|
opengl_ss.add(gbm)
|
||||||
opengl_ss.add(when: [opengl, pixman, 'CONFIG_OPENGL'],
|
opengl_ss.add(when: [opengl, pixman],
|
||||||
if_true: files('shader.c', 'console-gl.c', 'egl-helpers.c', 'egl-context.c'))
|
if_true: files('shader.c', 'console-gl.c', 'egl-helpers.c', 'egl-context.c'))
|
||||||
ui_modules += {'opengl' : opengl_ss}
|
ui_modules += {'opengl' : opengl_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_OPENGL') and gbm.found()
|
if opengl.found() and gbm.found()
|
||||||
egl_headless_ss = ss.source_set()
|
egl_headless_ss = ss.source_set()
|
||||||
egl_headless_ss.add(when: [opengl, gbm, pixman, 'CONFIG_OPENGL'],
|
egl_headless_ss.add(when: [opengl, gbm, pixman],
|
||||||
if_true: files('egl-headless.c'))
|
if_true: files('egl-headless.c'))
|
||||||
ui_modules += {'egl-headless' : egl_headless_ss}
|
ui_modules += {'egl-headless' : egl_headless_ss}
|
||||||
endif
|
endif
|
||||||
|
@ -73,14 +74,13 @@ if dbus_display
|
||||||
dbus_display1 = custom_target('dbus-display gdbus-codegen',
|
dbus_display1 = custom_target('dbus-display gdbus-codegen',
|
||||||
output: ['dbus-display1.h', 'dbus-display1.c'],
|
output: ['dbus-display1.h', 'dbus-display1.c'],
|
||||||
input: files('dbus-display1.xml'),
|
input: files('dbus-display1.xml'),
|
||||||
command: [config_host['GDBUS_CODEGEN'],
|
command: [gdbus_codegen, '@INPUT@',
|
||||||
'@INPUT@',
|
|
||||||
'--glib-min-required', '2.64',
|
'--glib-min-required', '2.64',
|
||||||
'--output-directory', meson.current_build_dir(),
|
'--output-directory', meson.current_build_dir(),
|
||||||
'--interface-prefix', 'org.qemu.',
|
'--interface-prefix', 'org.qemu.',
|
||||||
'--c-namespace', 'QemuDBus',
|
'--c-namespace', 'QemuDBus',
|
||||||
'--generate-c-code', '@BASENAME@'])
|
'--generate-c-code', '@BASENAME@'])
|
||||||
dbus_ss.add(when: [gio, pixman, opengl, 'CONFIG_GIO'],
|
dbus_ss.add(when: [gio, pixman, opengl],
|
||||||
if_true: [files(
|
if_true: [files(
|
||||||
'dbus-chardev.c',
|
'dbus-chardev.c',
|
||||||
'dbus-clipboard.c',
|
'dbus-clipboard.c',
|
||||||
|
@ -98,8 +98,8 @@ if gtk.found()
|
||||||
gtk_ss = ss.source_set()
|
gtk_ss = ss.source_set()
|
||||||
gtk_ss.add(gtk, vte, pixman, files('gtk.c', 'gtk-clipboard.c'))
|
gtk_ss.add(gtk, vte, pixman, files('gtk.c', 'gtk-clipboard.c'))
|
||||||
gtk_ss.add(when: x11, if_true: files('x_keymap.c'))
|
gtk_ss.add(when: x11, if_true: files('x_keymap.c'))
|
||||||
gtk_ss.add(when: [opengl, 'CONFIG_OPENGL'], if_true: files('gtk-gl-area.c'))
|
gtk_ss.add(when: opengl, if_true: files('gtk-gl-area.c'))
|
||||||
gtk_ss.add(when: [x11, opengl, 'CONFIG_OPENGL'], if_true: files('gtk-egl.c'))
|
gtk_ss.add(when: [x11, opengl], if_true: files('gtk-egl.c'))
|
||||||
ui_modules += {'gtk' : gtk_ss}
|
ui_modules += {'gtk' : gtk_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ if sdl.found()
|
||||||
'sdl2-input.c',
|
'sdl2-input.c',
|
||||||
'sdl2.c',
|
'sdl2.c',
|
||||||
))
|
))
|
||||||
sdl_ss.add(when: [opengl, 'CONFIG_OPENGL'], if_true: files('sdl2-gl.c'))
|
sdl_ss.add(when: opengl, if_true: files('sdl2-gl.c'))
|
||||||
sdl_ss.add(when: x11, if_true: files('x_keymap.c'))
|
sdl_ss.add(when: x11, if_true: files('x_keymap.c'))
|
||||||
ui_modules += {'sdl' : sdl_ss}
|
ui_modules += {'sdl' : sdl_ss}
|
||||||
endif
|
endif
|
||||||
|
@ -127,7 +127,7 @@ if spice.found()
|
||||||
ui_modules += {'spice-core' : spice_core_ss}
|
ui_modules += {'spice-core' : spice_core_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if spice.found() and config_host.has_key('CONFIG_GIO')
|
if spice.found() and gio.found()
|
||||||
spice_ss = ss.source_set()
|
spice_ss = ss.source_set()
|
||||||
spice_ss.add(spice, gio, pixman, files('spice-app.c'))
|
spice_ss.add(spice, gio, pixman, files('spice-app.c'))
|
||||||
ui_modules += {'spice-app': spice_ss}
|
ui_modules += {'spice-app': spice_ss}
|
||||||
|
|
|
@ -173,7 +173,7 @@ static char *
|
||||||
real_time_iso8601(void)
|
real_time_iso8601(void)
|
||||||
{
|
{
|
||||||
#if GLIB_CHECK_VERSION(2,62,0)
|
#if GLIB_CHECK_VERSION(2,62,0)
|
||||||
g_autoptr(GDateTime) dt = g_date_time_new_from_unix_utc(g_get_real_time());
|
g_autoptr(GDateTime) dt = g_date_time_new_now_utc();
|
||||||
/* ignore deprecation warning, since GLIB_VERSION_MAX_ALLOWED is 2.56 */
|
/* ignore deprecation warning, since GLIB_VERSION_MAX_ALLOWED is 2.56 */
|
||||||
#pragma GCC diagnostic push
|
#pragma GCC diagnostic push
|
||||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
|
|
@ -61,7 +61,7 @@ endif
|
||||||
|
|
||||||
if have_system
|
if have_system
|
||||||
util_ss.add(files('crc-ccitt.c'))
|
util_ss.add(files('crc-ccitt.c'))
|
||||||
util_ss.add(when: 'CONFIG_GIO', if_true: [files('dbus.c'), gio])
|
util_ss.add(when: gio, if_true: files('dbus.c'))
|
||||||
util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
|
util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -314,48 +314,6 @@ void qemu_add_opts(QemuOptsList *list)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ConfigWriteData {
|
|
||||||
QemuOptsList *list;
|
|
||||||
FILE *fp;
|
|
||||||
};
|
|
||||||
|
|
||||||
static int config_write_opt(void *opaque, const char *name, const char *value,
|
|
||||||
Error **errp)
|
|
||||||
{
|
|
||||||
struct ConfigWriteData *data = opaque;
|
|
||||||
|
|
||||||
fprintf(data->fp, " %s = \"%s\"\n", name, value);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int config_write_opts(void *opaque, QemuOpts *opts, Error **errp)
|
|
||||||
{
|
|
||||||
struct ConfigWriteData *data = opaque;
|
|
||||||
const char *id = qemu_opts_id(opts);
|
|
||||||
|
|
||||||
if (id) {
|
|
||||||
fprintf(data->fp, "[%s \"%s\"]\n", data->list->name, id);
|
|
||||||
} else {
|
|
||||||
fprintf(data->fp, "[%s]\n", data->list->name);
|
|
||||||
}
|
|
||||||
qemu_opt_foreach(opts, config_write_opt, data, NULL);
|
|
||||||
fprintf(data->fp, "\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void qemu_config_write(FILE *fp)
|
|
||||||
{
|
|
||||||
struct ConfigWriteData data = { .fp = fp };
|
|
||||||
QemuOptsList **lists = vm_config_groups;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
fprintf(fp, "# qemu config file\n\n");
|
|
||||||
for (i = 0; lists[i] != NULL; i++) {
|
|
||||||
data.list = lists[i];
|
|
||||||
qemu_opts_foreach(data.list, config_write_opts, &data, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns number of config groups on success, -errno on error */
|
/* Returns number of config groups on success, -errno on error */
|
||||||
static int qemu_config_foreach(FILE *fp, QEMUConfigCB *cb, void *opaque,
|
static int qemu_config_foreach(FILE *fp, QEMUConfigCB *cb, void *opaque,
|
||||||
const char *fname, Error **errp)
|
const char *fname, Error **errp)
|
||||||
|
|
Loading…
Reference in New Issue