mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging
* More Meson conversions (0.59.x now required rather than suggested) * UMIP support for TCG x86 * Fix migration crash * Restore error output for check-block # gpg: Signature made Mon 21 Feb 2022 09:35:59 GMT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # 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 * remotes/bonzini-gitlab/tags/for-upstream: (29 commits) configure, meson: move CONFIG_IASL to a Meson option meson, configure: move ntddscsi API check to meson meson: require dynamic linking for VSS support qga/vss-win32: require widl/midl, remove pre-built TLB file meson: do not make qga/vss-win32/meson.build conditional on C++ presence configure, meson: replace VSS SDK checks and options with --enable-vss-sdk qga/vss: use standard windows headers location qga/vss-win32: use widl if available meson: drop --with-win-sdk qga/vss-win32: fix midl arguments meson: refine check for whether to look for virglrenderer configure, meson: move guest-agent, tools to meson configure, meson: move smbd options to meson_options.txt configure, meson: move coroutine options to meson_options.txt configure, meson: move some default-disabled options to meson_options.txt meson: define qemu_cflags/qemu_ldflags configure, meson: move block layer options to meson_options.txt configure, meson: move image format options to meson_options.txt configure, meson: cleanup qemu-ga libraries configure, meson: move TPM check to meson ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
tpm_ss = ss.source_set()
|
||||
|
||||
tpm_ss.add(files('tpm_backend.c'))
|
||||
tpm_ss.add(files('tpm_util.c'))
|
||||
tpm_ss.add(when: 'CONFIG_TPM_PASSTHROUGH', if_true: files('tpm_passthrough.c'))
|
||||
tpm_ss.add(when: 'CONFIG_TPM_EMULATOR', if_true: files('tpm_emulator.c'))
|
||||
|
||||
softmmu_ss.add_all(when: 'CONFIG_TPM', if_true: tpm_ss)
|
||||
if have_tpm
|
||||
softmmu_ss.add(files('tpm_backend.c'))
|
||||
softmmu_ss.add(files('tpm_util.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_TPM_PASSTHROUGH', if_true: files('tpm_passthrough.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_TPM_EMULATOR', if_true: files('tpm_emulator.c'))
|
||||
endif
|
||||
|
||||
+35
-16
@@ -45,25 +45,44 @@ block_ss.add(files(
|
||||
|
||||
softmmu_ss.add(when: 'CONFIG_TCG', if_true: files('blkreplay.c'))
|
||||
|
||||
block_ss.add(when: 'CONFIG_QCOW1', if_true: files('qcow.c'))
|
||||
block_ss.add(when: 'CONFIG_VDI', if_true: files('vdi.c'))
|
||||
block_ss.add(when: 'CONFIG_CLOOP', if_true: files('cloop.c'))
|
||||
block_ss.add(when: 'CONFIG_BOCHS', if_true: files('bochs.c'))
|
||||
block_ss.add(when: 'CONFIG_VVFAT', if_true: files('vvfat.c'))
|
||||
block_ss.add(when: 'CONFIG_DMG', if_true: files('dmg.c'))
|
||||
block_ss.add(when: 'CONFIG_QED', if_true: files(
|
||||
'qed-check.c',
|
||||
'qed-cluster.c',
|
||||
'qed-l2-cache.c',
|
||||
'qed-table.c',
|
||||
'qed.c',
|
||||
))
|
||||
block_ss.add(when: 'CONFIG_PARALLELS', if_true: files('parallels.c', 'parallels-ext.c'))
|
||||
if get_option('qcow1').allowed()
|
||||
block_ss.add(files('qcow.c'))
|
||||
endif
|
||||
if get_option('vdi').allowed()
|
||||
block_ss.add(files('vdi.c'))
|
||||
endif
|
||||
if get_option('cloop').allowed()
|
||||
block_ss.add(files('cloop.c'))
|
||||
endif
|
||||
if get_option('bochs').allowed()
|
||||
block_ss.add(files('bochs.c'))
|
||||
endif
|
||||
if get_option('vvfat').allowed()
|
||||
block_ss.add(files('vvfat.c'))
|
||||
endif
|
||||
if get_option('dmg').allowed()
|
||||
block_ss.add(files('dmg.c'))
|
||||
endif
|
||||
if get_option('qed').allowed()
|
||||
block_ss.add(files(
|
||||
'qed-check.c',
|
||||
'qed-cluster.c',
|
||||
'qed-l2-cache.c',
|
||||
'qed-table.c',
|
||||
'qed.c',
|
||||
))
|
||||
endif
|
||||
if get_option('parallels').allowed()
|
||||
block_ss.add(files('parallels.c', 'parallels-ext.c'))
|
||||
endif
|
||||
|
||||
block_ss.add(when: 'CONFIG_WIN32', if_true: files('file-win32.c', 'win32-aio.c'))
|
||||
block_ss.add(when: 'CONFIG_POSIX', if_true: [files('file-posix.c'), coref, iokit])
|
||||
block_ss.add(when: libiscsi, if_true: files('iscsi-opts.c'))
|
||||
block_ss.add(when: 'CONFIG_LINUX', if_true: files('nvme.c'))
|
||||
block_ss.add(when: 'CONFIG_REPLICATION', if_true: files('replication.c'))
|
||||
if not get_option('replication').disabled()
|
||||
block_ss.add(files('replication.c'))
|
||||
endif
|
||||
block_ss.add(when: libaio, if_true: files('linux-aio.c'))
|
||||
block_ss.add(when: linux_io_uring, if_true: files('io_uring.c'))
|
||||
|
||||
@@ -89,7 +108,7 @@ foreach m : [
|
||||
endforeach
|
||||
|
||||
# those are not exactly regular block modules, so treat them apart
|
||||
if 'CONFIG_DMG' in config_host
|
||||
if get_option('dmg').allowed()
|
||||
foreach m : [
|
||||
[liblzfse, 'dmg-lzfse', liblzfse, 'dmg-lzfse.c'],
|
||||
[libbzip2, 'dmg-bz2', [glib, libbzip2], 'dmg-bz2.c']
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
if 'CONFIG_TOOLS' in config_host and virgl.found() and gbm.found() \
|
||||
and 'CONFIG_LINUX' in config_host and pixman.found()
|
||||
if have_vhost_user_gpu
|
||||
executable('vhost-user-gpu', files('vhost-user-gpu.c', 'virgl.c', 'vugbm.c'),
|
||||
dependencies: [qemuutil, pixman, gbm, virgl, vhost_user, opengl],
|
||||
install: true,
|
||||
|
||||
+4
-2
@@ -35,7 +35,9 @@ else
|
||||
endif
|
||||
|
||||
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c'))
|
||||
crypto_ss.add(when: 'CONFIG_AF_ALG', if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
||||
if have_afalg
|
||||
crypto_ss.add(if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c'))
|
||||
endif
|
||||
crypto_ss.add(when: gnutls, if_true: files('tls-cipher-suites.c'))
|
||||
|
||||
util_ss.add(files('aes.c'))
|
||||
@@ -48,7 +50,7 @@ if gcrypt.found()
|
||||
util_ss.add(gcrypt, files('random-gcrypt.c'))
|
||||
elif gnutls.found()
|
||||
util_ss.add(gnutls, files('random-gnutls.c'))
|
||||
elif 'CONFIG_RNG_NONE' in config_host
|
||||
elif get_option('rng_none')
|
||||
util_ss.add(files('random-none.c'))
|
||||
else
|
||||
util_ss.add(files('random-platform.c'))
|
||||
|
||||
@@ -305,7 +305,7 @@ and also listed as follows in the top-level meson.build's host_kconfig
|
||||
variable::
|
||||
|
||||
host_kconfig = \
|
||||
('CONFIG_TPM' in config_host ? ['CONFIG_TPM=y'] : []) + \
|
||||
(have_tpm ? ['CONFIG_TPM=y'] : []) + \
|
||||
('CONFIG_SPICE' in config_host ? ['CONFIG_SPICE=y'] : []) + \
|
||||
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
|
||||
...
|
||||
|
||||
@@ -37,8 +37,6 @@ endif
|
||||
if build_docs
|
||||
SPHINX_ARGS += ['-Dversion=' + meson.project_version(), '-Drelease=' + config_host['PKGVERSION']]
|
||||
|
||||
have_ga = have_tools and config_host.has_key('CONFIG_GUEST_AGENT')
|
||||
|
||||
man_pages = {
|
||||
'qemu-ga.8': (have_ga ? 'man8' : ''),
|
||||
'qemu-ga-ref.7': (have_ga ? 'man7' : ''),
|
||||
|
||||
+3
-1
@@ -25,7 +25,9 @@ acpi_ss.add(when: 'CONFIG_ACPI_X86_ICH', if_true: files('ich9.c', 'tco.c'))
|
||||
acpi_ss.add(when: 'CONFIG_ACPI_ERST', if_true: files('erst.c'))
|
||||
acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c'), if_false: files('ipmi-stub.c'))
|
||||
acpi_ss.add(when: 'CONFIG_PC', if_false: files('acpi-x86-stub.c'))
|
||||
acpi_ss.add(when: 'CONFIG_TPM', if_true: files('tpm.c'))
|
||||
if have_tpm
|
||||
acpi_ss.add(files('tpm.c'))
|
||||
endif
|
||||
softmmu_ss.add(when: 'CONFIG_ACPI', if_false: files('acpi-stub.c', 'aml-build-stub.c', 'ghes-stub.c'))
|
||||
softmmu_ss.add_all(when: 'CONFIG_ACPI', if_true: acpi_ss)
|
||||
softmmu_ss.add(when: 'CONFIG_ALL', if_true: files('acpi-stub.c', 'aml-build-stub.c',
|
||||
|
||||
+290
-139
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,12 @@ option('docdir', type : 'string', value : 'doc',
|
||||
description: 'Base directory for documentation installation (can be empty)')
|
||||
option('qemu_firmwarepath', type : 'string', value : '',
|
||||
description: 'search PATH for firmware files')
|
||||
option('smbd', type : 'string', value : '',
|
||||
description: 'Path to smbd for slirp networking')
|
||||
option('sphinx_build', type : 'string', value : '',
|
||||
description: 'Use specified sphinx-build [$sphinx_build] for building document (default to be empty)')
|
||||
option('iasl', type : 'string', value : '',
|
||||
description: 'Path to ACPI disassembler')
|
||||
option('default_devices', type : 'boolean', value : true,
|
||||
description: 'Include a default selection of devices in emulators')
|
||||
option('audio_drv_list', type: 'array', value: ['default'],
|
||||
@@ -34,8 +38,14 @@ option('install_blobs', type : 'boolean', value : true,
|
||||
description: 'install provided firmware blobs')
|
||||
option('sparse', type : 'feature', value : 'auto',
|
||||
description: 'sparse checker')
|
||||
option('guest_agent', type : 'feature', value : 'auto',
|
||||
description: 'Build QEMU Guest Agent')
|
||||
option('guest_agent_msi', type : 'feature', value : 'auto',
|
||||
description: 'Build MSI package for the QEMU Guest Agent')
|
||||
option('tools', type : 'feature', value : 'auto',
|
||||
description: 'build support utilities that come with QEMU')
|
||||
option('qga_vss', type : 'feature', value: 'auto',
|
||||
description: 'build QGA VSS support (broken with MinGW)')
|
||||
|
||||
option('malloc_trim', type : 'feature', value : 'auto',
|
||||
description: 'enable libc malloc_trim() for memory optimization')
|
||||
@@ -68,6 +78,18 @@ option('multiprocess', type: 'feature', value: 'auto',
|
||||
description: 'Out of process device emulation support')
|
||||
option('dbus_display', type: 'feature', value: 'auto',
|
||||
description: '-display dbus support')
|
||||
option('tpm', type : 'feature', value : 'auto',
|
||||
description: 'TPM support')
|
||||
|
||||
# Do not enable it by default even for Mingw32, because it doesn't
|
||||
# work on Wine.
|
||||
option('membarrier', type: 'feature', value: 'disabled',
|
||||
description: 'membarrier system call (for Linux 4.14+ or Windows')
|
||||
|
||||
option('avx2', type: 'feature', value: 'auto',
|
||||
description: 'AVX2 optimizations')
|
||||
option('avx512f', type: 'feature', value: 'disabled',
|
||||
description: 'AVX512F optimizations')
|
||||
|
||||
option('attr', type : 'feature', value : 'auto',
|
||||
description: 'attr/xattr support')
|
||||
@@ -93,6 +115,8 @@ option('libnfs', type : 'feature', value : 'auto',
|
||||
description: 'libnfs block device driver')
|
||||
option('mpath', type : 'feature', value : 'auto',
|
||||
description: 'Multipath persistent reservation passthrough')
|
||||
option('numa', type : 'feature', value : 'auto',
|
||||
description: 'libnuma support')
|
||||
option('iconv', type : 'feature', value : 'auto',
|
||||
description: 'Font glyph conversion support')
|
||||
option('curses', type : 'feature', value : 'auto',
|
||||
@@ -103,6 +127,8 @@ option('nettle', type : 'feature', value : 'auto',
|
||||
description: 'nettle cryptography support')
|
||||
option('gcrypt', type : 'feature', value : 'auto',
|
||||
description: 'libgcrypt cryptography support')
|
||||
option('crypto_afalg', type : 'feature', value : 'disabled',
|
||||
description: 'Linux AF_ALG crypto backend driver')
|
||||
option('libdaxctl', type : 'feature', value : 'auto',
|
||||
description: 'libdaxctl support')
|
||||
option('libpmem', type : 'feature', value : 'auto',
|
||||
@@ -206,3 +232,41 @@ option('fdt', type: 'combo', value: 'auto',
|
||||
|
||||
option('selinux', type: 'feature', value: 'auto',
|
||||
description: 'SELinux support in qemu-nbd')
|
||||
option('live_block_migration', type: 'feature', value: 'auto',
|
||||
description: 'block migration in the main migration stream')
|
||||
option('replication', type: 'feature', value: 'auto',
|
||||
description: 'replication support')
|
||||
option('bochs', type: 'feature', value: 'auto',
|
||||
description: 'bochs image format support')
|
||||
option('cloop', type: 'feature', value: 'auto',
|
||||
description: 'cloop image format support')
|
||||
option('dmg', type: 'feature', value: 'auto',
|
||||
description: 'dmg image format support')
|
||||
option('qcow1', type: 'feature', value: 'auto',
|
||||
description: 'qcow1 image format support')
|
||||
option('vdi', type: 'feature', value: 'auto',
|
||||
description: 'vdi image format support')
|
||||
option('vvfat', type: 'feature', value: 'auto',
|
||||
description: 'vvfat image format support')
|
||||
option('qed', type: 'feature', value: 'auto',
|
||||
description: 'qed image format support')
|
||||
option('parallels', type: 'feature', value: 'auto',
|
||||
description: 'parallels image format support')
|
||||
option('block_drv_whitelist_in_tools', type: 'boolean', value: false,
|
||||
description: 'use block whitelist also in tools instead of only QEMU')
|
||||
option('rng_none', type: 'boolean', value: false,
|
||||
description: 'dummy RNG, avoid using /dev/(u)random and getrandom()')
|
||||
option('coroutine_pool', type: 'boolean', value: true,
|
||||
description: 'coroutine freelist (better performance)')
|
||||
option('debug_mutex', type: 'boolean', value: false,
|
||||
description: 'mutex debugging support')
|
||||
option('debug_stack_usage', type: 'boolean', value: false,
|
||||
description: 'measure coroutine stack usage')
|
||||
option('qom_cast_debug', type: 'boolean', value: false,
|
||||
description: 'cast debugging support')
|
||||
option('gprof', type: 'boolean', value: false,
|
||||
description: 'QEMU profiling with gprof')
|
||||
option('profiler', type: 'boolean', value: false,
|
||||
description: 'profiler support')
|
||||
option('slirp_smbd', type : 'feature', value : 'auto',
|
||||
description: 'use smbd (at path --smbd=*) in slirp networking')
|
||||
|
||||
@@ -28,7 +28,9 @@ softmmu_ss.add(files(
|
||||
), gnutls)
|
||||
|
||||
softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
|
||||
softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true: files('block.c'))
|
||||
if get_option('live_block_migration').allowed()
|
||||
softmmu_ss.add(files('block.c'))
|
||||
endif
|
||||
softmmu_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
|
||||
|
||||
specific_ss.add(when: 'CONFIG_SOFTMMU',
|
||||
|
||||
+8
-8
@@ -27,7 +27,7 @@
|
||||
#include "net/slirp.h"
|
||||
|
||||
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
#include <pwd.h>
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
@@ -91,7 +91,7 @@ typedef struct SlirpState {
|
||||
Slirp *slirp;
|
||||
Notifier poll_notifier;
|
||||
Notifier exit_notifier;
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
gchar *smb_dir;
|
||||
#endif
|
||||
GSList *fwd;
|
||||
@@ -104,7 +104,7 @@ static QTAILQ_HEAD(, SlirpState) slirp_stacks =
|
||||
static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp);
|
||||
static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp);
|
||||
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
static int slirp_smb(SlirpState *s, const char *exported_dir,
|
||||
struct in_addr vserver_addr, Error **errp);
|
||||
static void slirp_smb_cleanup(SlirpState *s);
|
||||
@@ -377,7 +377,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||
struct in6_addr ip6_prefix;
|
||||
struct in6_addr ip6_host;
|
||||
struct in6_addr ip6_dns;
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
struct in_addr smbsrv = { .s_addr = 0 };
|
||||
#endif
|
||||
NetClientState *nc;
|
||||
@@ -487,7 +487,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
if (vsmbserver && !inet_aton(vsmbserver, &smbsrv)) {
|
||||
error_setg(errp, "Failed to parse SMB address");
|
||||
return -1;
|
||||
@@ -602,7 +602,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||
}
|
||||
}
|
||||
}
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
if (smb_export) {
|
||||
if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
|
||||
goto error;
|
||||
@@ -794,7 +794,7 @@ void hmp_hostfwd_add(Monitor *mon, const QDict *qdict)
|
||||
|
||||
}
|
||||
|
||||
#if defined(CONFIG_SLIRP_SMBD)
|
||||
#if defined(CONFIG_SMBD_COMMAND)
|
||||
|
||||
/* automatic user mode samba server configuration */
|
||||
static void slirp_smb_cleanup(SlirpState *s)
|
||||
@@ -909,7 +909,7 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* defined(CONFIG_SLIRP_SMBD) */
|
||||
#endif /* defined(CONFIG_SMBD_COMMAND) */
|
||||
|
||||
static int guestfwd_can_read(void *opaque)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <ws2tcpip.h>
|
||||
#include <iptypes.h>
|
||||
#include <iphlpapi.h>
|
||||
#ifdef CONFIG_QGA_NTDDSCSI
|
||||
#ifdef HAVE_NTDDSCSI
|
||||
#include <winioctl.h>
|
||||
#include <ntddscsi.h>
|
||||
#endif
|
||||
@@ -474,7 +474,7 @@ void qmp_guest_file_flush(int64_t handle, Error **errp)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_QGA_NTDDSCSI
|
||||
#ifdef HAVE_NTDDSCSI
|
||||
|
||||
static GuestDiskBusType win2qemu[] = {
|
||||
[BusTypeUnknown] = GUEST_DISK_BUS_TYPE_UNKNOWN,
|
||||
@@ -1111,7 +1111,7 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_QGA_NTDDSCSI */
|
||||
#endif /* HAVE_NTDDSCSI */
|
||||
|
||||
static GuestFilesystemInfo *build_guest_fsinfo(char *guid, Error **errp)
|
||||
{
|
||||
|
||||
+46
-9
@@ -1,3 +1,33 @@
|
||||
if not have_ga
|
||||
if get_option('guest_agent_msi').enabled()
|
||||
error('Guest agent MSI requested, but the guest agent is not being built')
|
||||
endif
|
||||
have_qga_vss = false
|
||||
subdir_done()
|
||||
endif
|
||||
|
||||
have_qga_vss = get_option('qga_vss') \
|
||||
.require(targetos == 'windows',
|
||||
error_message: 'VSS support requires Windows') \
|
||||
.require(link_language == 'cpp',
|
||||
error_message: 'VSS support requires a C++ compiler') \
|
||||
.require(have_vss, error_message: '''VSS support requires VSS headers.
|
||||
If your Visual Studio installation doesn't have the VSS headers,
|
||||
Please download and install Microsoft VSS SDK:
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=23490
|
||||
On POSIX-systems, MinGW doesn't yet provide working headers.
|
||||
you can extract the SDK headers by:
|
||||
$ scripts/extract-vsssdk-headers setup.exe
|
||||
The headers are extracted in the directory 'inc/win2003'.
|
||||
Then run configure with: --extra-cxxflags="-isystem /path/to/vss/inc/win2003"''') \
|
||||
.require(midl.found() or widl.found(),
|
||||
error_message: 'VSS support requires midl or widl') \
|
||||
.require(not enable_static,
|
||||
error_message: 'VSS support requires dynamic linking with GLib') \
|
||||
.allowed()
|
||||
|
||||
all_qga = []
|
||||
|
||||
qga_qapi_outputs = [
|
||||
'qga-qapi-commands.c',
|
||||
'qga-qapi-commands.h',
|
||||
@@ -50,19 +80,26 @@ qga_ss.add(when: 'CONFIG_WIN32', if_true: files(
|
||||
|
||||
qga_ss = qga_ss.apply(config_host, strict: false)
|
||||
|
||||
gen_tlb = []
|
||||
qga_libs = []
|
||||
if targetos == 'windows'
|
||||
qga_libs += ['-lws2_32', '-lwinmm', '-lpowrprof', '-lwtsapi32', '-lwininet', '-liphlpapi', '-lnetapi32']
|
||||
if have_qga_vss
|
||||
qga_libs += ['-lole32', '-loleaut32', '-lshlwapi', '-lstdc++', '-Wl,--enable-stdcall-fixup']
|
||||
subdir('vss-win32')
|
||||
endif
|
||||
if have_ntddscsi
|
||||
qga_libs += ['-lsetupapi', '-lcfgmgr32']
|
||||
endif
|
||||
endif
|
||||
|
||||
qga = executable('qemu-ga', qga_ss.sources(),
|
||||
link_args: config_host['LIBS_QGA'].split(),
|
||||
link_args: qga_libs,
|
||||
dependencies: [qemuutil, libudev],
|
||||
install: true)
|
||||
all_qga = [qga]
|
||||
all_qga += qga
|
||||
|
||||
if targetos == 'windows'
|
||||
if 'CONFIG_QGA_VSS' in config_host
|
||||
subdir('vss-win32')
|
||||
else
|
||||
gen_tlb = []
|
||||
endif
|
||||
|
||||
qemu_ga_msi_arch = {
|
||||
'x86': ['-D', 'Arch=32'],
|
||||
'x86_64': ['-a', 'x64', '-D', 'Arch=64']
|
||||
@@ -77,7 +114,7 @@ if targetos == 'windows'
|
||||
if wixl.found()
|
||||
deps = [gen_tlb, qga]
|
||||
qemu_ga_msi_vss = []
|
||||
if 'CONFIG_QGA_VSS' in config_host
|
||||
if have_qga_vss
|
||||
qemu_ga_msi_vss = ['-D', 'InstallVss']
|
||||
deps += qga_vss
|
||||
endif
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
#include "vss-common.h"
|
||||
#include <inc/win2003/vscoordint.h>
|
||||
#include <vscoordint.h>
|
||||
#include "install.h"
|
||||
#include <wbemidl.h>
|
||||
#include <comdef.h>
|
||||
|
||||
+27
-25
@@ -1,36 +1,38 @@
|
||||
if add_languages('cpp', required: false)
|
||||
glib_dynamic = dependency('glib-2.0', static: false)
|
||||
link_args = cc.get_supported_link_arguments(['-fstack-protector-all', '-fstack-protector-strong',
|
||||
'-Wl,--add-stdcall-alias', '-Wl,--enable-stdcall-fixup'])
|
||||
link_args = cc.get_supported_link_arguments([
|
||||
'-fstack-protector-all',
|
||||
'-fstack-protector-strong',
|
||||
'-Wl,--add-stdcall-alias',
|
||||
'-Wl,--enable-stdcall-fixup'
|
||||
])
|
||||
|
||||
qga_vss = shared_module('qga-vss', ['requester.cpp', 'provider.cpp', 'install.cpp'],
|
||||
name_prefix: '',
|
||||
cpp_args: ['-Wno-unknown-pragmas', '-Wno-delete-non-virtual-dtor', '-Wno-non-virtual-dtor'],
|
||||
link_args: link_args,
|
||||
vs_module_defs: 'qga-vss.def',
|
||||
dependencies: [glib_dynamic, socket,
|
||||
cc.find_library('ole32'),
|
||||
cc.find_library('oleaut32'),
|
||||
cc.find_library('shlwapi'),
|
||||
cc.find_library('uuid'),
|
||||
cc.find_library('intl')])
|
||||
qga_vss = shared_module(
|
||||
'qga-vss',
|
||||
['requester.cpp', 'provider.cpp', 'install.cpp'],
|
||||
name_prefix: '',
|
||||
cpp_args: ['-Wno-unknown-pragmas', '-Wno-delete-non-virtual-dtor', '-Wno-non-virtual-dtor'],
|
||||
link_args: link_args,
|
||||
vs_module_defs: 'qga-vss.def',
|
||||
dependencies: [
|
||||
glib,
|
||||
socket,
|
||||
cc.find_library('ole32'),
|
||||
cc.find_library('oleaut32'),
|
||||
cc.find_library('shlwapi'),
|
||||
cc.find_library('uuid'),
|
||||
cc.find_library('intl')
|
||||
]
|
||||
)
|
||||
|
||||
all_qga += qga_vss
|
||||
endif
|
||||
all_qga += qga_vss
|
||||
|
||||
# rules to build qga-vss.tlb
|
||||
# Currently, only native build is supported because building .tlb
|
||||
# (TypeLibrary) from .idl requires WindowsSDK and MIDL (and cl.exe in VC++).
|
||||
midl = find_program('midl', required: false)
|
||||
if midl.found()
|
||||
gen_tlb = custom_target('gen-tlb',
|
||||
input: 'qga-vss.idl',
|
||||
output: 'qga-vss.tlb',
|
||||
command: [midl, '-tlb', '-I' + config_host['WIN_SDK'],
|
||||
'@INPUT@', '@OUTPUT@'])
|
||||
command: [midl, '@INPUT@', '/tlb', '@OUTPUT@'])
|
||||
else
|
||||
gen_tlb = custom_target('gen-tlb',
|
||||
input: 'qga-vss.tlb',
|
||||
input: 'qga-vss.idl',
|
||||
output: 'qga-vss.tlb',
|
||||
command: ['cp', '@INPUT@', '@OUTPUT@'])
|
||||
command: [widl, '-t', '@INPUT@', '-o', '@OUTPUT@'])
|
||||
endif
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "vss-common.h"
|
||||
#include <inc/win2003/vscoordint.h>
|
||||
#include <inc/win2003/vsprov.h>
|
||||
#include <vscoordint.h>
|
||||
#include <vsprov.h>
|
||||
|
||||
#define VSS_TIMEOUT_MSEC (60*1000)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -14,8 +14,8 @@
|
||||
#include "vss-common.h"
|
||||
#include "requester.h"
|
||||
#include "install.h"
|
||||
#include <inc/win2003/vswriter.h>
|
||||
#include <inc/win2003/vsbackup.h>
|
||||
#include <vswriter.h>
|
||||
#include <vsbackup.h>
|
||||
|
||||
/* Max wait time for frozen event (VSS can only hold writes for 10 seconds) */
|
||||
#define VSS_TIMEOUT_FREEZE_MSEC 60000
|
||||
|
||||
@@ -46,11 +46,7 @@
|
||||
#undef VSS_E_MAXIMUM_NUMBER_OF_VOLUMES_REACHED
|
||||
#undef VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED
|
||||
|
||||
/*
|
||||
* VSS headers must be installed from Microsoft VSS SDK 7.2 available at:
|
||||
* http://www.microsoft.com/en-us/download/details.aspx?id=23490
|
||||
*/
|
||||
#include <inc/win2003/vss.h>
|
||||
#include <vss.h>
|
||||
#include "vss-handles.h"
|
||||
|
||||
/* Macros to convert char definitions to wchar */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user