[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 03/10] qemu-ga: Add an configure option to speci
From: |
Tomoki Sekiyama |
Subject: |
[Qemu-devel] [RFC PATCH 03/10] qemu-ga: Add an configure option to specify path to Windows VSS SDK |
Date: |
Thu, 14 Feb 2013 15:10:39 +0900 |
User-agent: |
StGit/0.16 |
To enable VSS support in qemu-ga for Windows, header files included in
VSS SDK is required.
The VSS support is enabled when the option like below:
./configure --with-vss-sdk="/pass/to/VSS SDK"
VSS SDK is available from:
http://www.microsoft.com/en-us/download/details.aspx?id=23490
To cross-compilie using mingw32 for Linux, you need to setup the SDK on
Windows environments to extract headers. You can also use wine to run the
setup of SDK on Linux etc.
Signed-off-by: Tomoki Sekiyama <address@hidden>
---
.gitignore | 1 +
Makefile | 1 +
configure | 41 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+)
diff --git a/.gitignore b/.gitignore
index 53fe9c3..3f450e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,6 +77,7 @@ fsdev/virtfs-proxy-helper.pod
*.la
*.pc
.libs
+.sdk
*.swp
*.orig
.pc
diff --git a/Makefile b/Makefile
index 0d9099a..fab664f 100644
--- a/Makefile
+++ b/Makefile
@@ -252,6 +252,7 @@ distclean: clean
for d in $(TARGET_DIRS); do \
rm -rf $$d || exit 1 ; \
done
+ rm -Rf .sdk
if test -f pixman/config.log; then make -C pixman distclean; fi
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
diff --git a/configure b/configure
index e279263..da49c52 100755
--- a/configure
+++ b/configure
@@ -220,6 +220,8 @@ usb_redir=""
opengl=""
zlib="yes"
guest_agent="yes"
+guest_agent_with_vss="no"
+vss_win32_sdk=""
want_tools="yes"
libiscsi=""
coroutine=""
@@ -884,6 +886,8 @@ for opt do
;;
--disable-guest-agent) guest_agent="no"
;;
+ --with-vss-sdk=*) vss_win32_sdk="$optarg"
+ ;;
--enable-tools) want_tools="yes"
;;
--disable-tools) want_tools="no"
@@ -1142,6 +1146,7 @@ echo " --disable-usb-redir disable usb network
redirection support"
echo " --enable-usb-redir enable usb network redirection support"
echo " --disable-guest-agent disable building of the QEMU Guest Agent"
echo " --enable-guest-agent enable building of the QEMU Guest Agent"
+echo " --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest
Agent"
echo " --disable-seccomp disable seccomp support"
echo " --enable-seccomp enables seccomp support"
echo " --with-coroutine=BACKEND coroutine backend. Supported options:"
@@ -2897,6 +2902,38 @@ if test "$usb_redir" != "no" ; then
fi
##########################################
+# check if we have VSS SDK headers for win
+
+if test "$mingw32" = "yes" -a "$guest_agent" = "yes" ; then
+ case "$vss_win32_sdk" in
+ "") vss_win32_include="" ;;
+ *\ *) # The SDK is installed in "Program Files" by default, but we cannot
+ # handle path with spaces. So we copy the headers into ".sdk/sdk".
+ vss_win32_include="-I$source_path/.sdk/vss"
+ symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
+ ;;
+ *) vss_win32_include="-I$vss_win32_sdk"
+ esac
+ cat > $TMPC << EOF
+#define __MIDL_user_allocate_free_DEFINED__
+#include <inc/win2003/vss.h>
+int main(void) { return VSS_CTX_BACKUP; }
+EOF
+ if compile_prog "$vss_win32_include" "" ; then
+ guest_agent_with_vss="yes"
+ QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
+ libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++
-Wl,--enable-stdcall-fixup $libs_qga"
+ else
+ if test "$vss_win32_sdk" != "" ; then
+ echo "ERROR: Please download and install Microsoft VSS SDK from"
+ echo "ERROR:
http://www.microsoft.com/en-us/download/details.aspx?id=23490"
+ feature_not_found "VSS support"
+ fi
+ guest_agent_with_vss="no"
+ fi
+fi
+
+##########################################
##########################################
# check if we have fdatasync
@@ -3343,6 +3380,7 @@ echo "usb net redir $usb_redir"
echo "OpenGL support $opengl"
echo "libiscsi support $libiscsi"
echo "build guest agent $guest_agent"
+echo "QGA VSS support $guest_agent_with_vss"
echo "seccomp support $seccomp"
echo "coroutine backend $coroutine_backend"
echo "GlusterFS support $glusterfs"
@@ -3404,6 +3442,9 @@ if test "$mingw32" = "yes" ; then
version_micro=0
echo
"CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro"
>> $config_host_mak
echo
"CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro"
>> $config_host_mak
+ if test "$guest_agent_with_vss" = "yes" ; then
+ echo "CONFIG_QGA_VSS=y" >> $config_host_mak
+ fi
else
echo "CONFIG_POSIX=y" >> $config_host_mak
fi
[Qemu-devel] [RFC PATCH 01/10] configure: Support configuring c++ compiler, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 06/10] qemu-ga: call Windows VSS requester in fsfreeze command handler, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 05/10] qemu-ga: Add Windows VSS requester to quisce applications and filesystems, Tomoki Sekiyama, 2013/02/14
[Qemu-devel] [RFC PATCH 07/10] qemu-ga: install Windows VSS provider on `qemu-ga -s install', Tomoki Sekiyama, 2013/02/14