aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-07-03 10:44:13 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-07-03 10:44:13 +0100
commit554a3a3375a568ba3fc44816ddf8e5568d7944a3 (patch)
treed748f16618a599abe64b04ba1487d1bc3992d7cb
parent8e65d32968c334f36093513b7c99ce4fa8e38106 (diff)
downloadxen-554a3a3375a568ba3fc44816ddf8e5568d7944a3.tar.gz
xen-554a3a3375a568ba3fc44816ddf8e5568d7944a3.tar.bz2
xen-554a3a3375a568ba3fc44816ddf8e5568d7944a3.zip
Support building of out-of-tree merged qemu from git
This provides support for building the new merged qemu from qemu-xen.git, or from a local checkout. The default is still to use the in-tree version, because the patchman infrastructure for testing, and propagation from staging to xen-unstable, needs a small amount of work to cope with git. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--.hgignore2
-rw-r--r--Config.mk8
-rw-r--r--config/StdGNU.mk3
-rw-r--r--tools/Makefile29
4 files changed, 42 insertions, 0 deletions
diff --git a/.hgignore b/.hgignore
index fa674adcaf..9dcd7e6122 100644
--- a/.hgignore
+++ b/.hgignore
@@ -248,6 +248,8 @@
^tools/xm-test/lib/XmTestLib/config.py$
^tools/xm-test/lib/XmTestReport/xmtest.py$
^tools/xm-test/tests/.*\.test$
+^tools/ioemu-remote
+^tools/ioemu-dir$
^xen/\.banner.*$
^xen/BLOG$
^xen/System.map$
diff --git a/Config.mk b/Config.mk
index 01ed02bd6a..85bb50b841 100644
--- a/Config.mk
+++ b/Config.mk
@@ -78,6 +78,14 @@ XSM_ENABLE ?= n
FLASK_ENABLE ?= n
ACM_SECURITY ?= n
+QEMU_REMOTE=http://www.chiark.greenend.org.uk/~ijackson/qemu-xen.git
+
+# Specify which qemu-dm to use. This may be `ioemu' to use the old
+# Mercurial in-tree version, or a local directory, or a git URL.
+CONFIG_QEMU ?= ioemu
+# CONFIG_QEMU ?= ../qemu-xen.git
+# CONFIG_QEMU ?= $(QEMU_REMOTE)
+
# Optional components
XENSTAT_XENTOP ?= y
VTPM_TOOLS ?= n
diff --git a/config/StdGNU.mk b/config/StdGNU.mk
index c020357654..aaa89a2664 100644
--- a/config/StdGNU.mk
+++ b/config/StdGNU.mk
@@ -13,6 +13,9 @@ SIZEUTIL = $(CROSS_COMPILE)size
MSGFMT = msgfmt
MSGMERGE = msgmerge
+# Allow git to be wrappered in the environment
+GIT ?= git
+
INSTALL = install
INSTALL_DIR = $(INSTALL) -d -m0755 -p
INSTALL_DATA = $(INSTALL) -m0644 -p
diff --git a/tools/Makefile b/tools/Makefile
index ace8a1a46a..4914033997 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -22,7 +22,12 @@ SUBDIRS-y += libaio
SUBDIRS-y += blktap
SUBDIRS-y += libfsimage
SUBDIRS-$(LIBXENAPI_BINDINGS) += libxen
+
+ifeq (ioemu,$(CONFIG_QEMU))
SUBDIRS-$(CONFIG_IOEMU) += ioemu
+else
+SUBDIRS-$(CONFIG_IOEMU) += ioemu-dir
+endif
# These don't cross-compile
ifeq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
@@ -62,3 +67,27 @@ subdir-all-ioemu subdir-install-ioemu: ioemu/config-host.mak
subdir-clean-ioemu:
$(MAKE) -C ioemu distclean
+ioemu-dir-find:
+ set -ex; \
+ if test -d $(CONFIG_QEMU); then \
+ rm -f ioemu-dir; \
+ ln -sf $(CONFIG_QEMU) ioemu-dir; \
+ else \
+ if [ ! -d ioemu-remote ]; then \
+ rm -rf ioemu-remote ioemu-remote.tmp; \
+ mkdir ioemu-remote.tmp; rmdir ioemu-remote.tmp; \
+ $(GIT) clone $(CONFIG_QEMU) ioemu-remote.tmp; \
+ mv ioemu-remote.tmp ioemu-remote; \
+ fi; \
+ ln -sf ioemu-remote ioemu-dir; \
+ fi
+ set -e; \
+ case "$XEN_ROOT" in \
+ /*) XEN_ROOT=$(XEN_ROOT) ;; \
+ *) XEN_ROOT=`pwd`/$(XEN_ROOT) ;; \
+ esac; \
+ export XEN_ROOT; \
+ cd ioemu-dir; \
+ ./xen-setup
+
+subdir-all-ioemu-dir subdir-install-ioemu-dir: ioemu-dir-find