tools: Make qemu-xen-traditional build optional.
authorIan Campbell <ian.campbell@citrix.com>
Tue, 6 Aug 2013 10:32:32 +0000 (11:32 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 21 Aug 2013 09:32:42 +0000 (10:32 +0100)
Now that we have upstream qemu people may want to avoid building this extra
code.

There is a little bit of trickery in stubdom/configure.ac to ensure that the
ioemu stubdom is only built if qemu-traditional is enabled.

libxl will return an error if a caller tries to build a domain using
qemu-xen-traditional when this support was disabled at build time. Since
qemu-xen-traditional has been historically tightly bound to the Xen releases I
don't see any value in supporting "3rd party" provision of
qemu-xen-traditional.

We also do not want/need this on ARM therefore default is on for x86 and off
otherwise.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
[ ijc -- trivial conflicts in Tools.mk.in and tools/configure.ac.
         Reran autogen.sh ]

Makefile
config/Tools.mk.in
stubdom/Makefile
stubdom/configure
stubdom/configure.ac
tools/Makefile
tools/config.h.in
tools/configure
tools/configure.ac

index 5a7107eb21106a77a2e7cef06a22df0a1af13905..a936fbe44112589aa2b23217b844c43c6faf5152 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -73,8 +73,19 @@ install-xen:
 install-tools:
        $(MAKE) -C tools install
 
+ifeq ($(CONFIG_QEMU_TRAD),y)
+QEMU_TRAD_DIR_TGT := tools/qemu-xen-traditional-dir
+
+tools/qemu-xen-traditional-dir:
+       $(MAKE) -C tools qemu-xen-traditional-dir-find
+
+.PHONY: tools/qemu-xen-traditional-dir-force-update
+tools/qemu-xen-traditional-dir-force-update:
+       $(MAKE) -C tools qemu-xen-traditional-dir-force-update
+endif
+
 ifeq ($(CONFIG_IOEMU),y)
-install-tools: tools/qemu-xen-traditional-dir tools/qemu-xen-dir
+install-tools: $(QEMU_TRAD_DIR_TARGET) tools/qemu-xen-dir
 endif
 
 .PHONY: install-kernels
@@ -82,19 +93,12 @@ install-kernels:
        for i in $(XKERNELS) ; do $(MAKE) $$i-install || exit 1; done
 
 .PHONY: install-stubdom
-install-stubdom: tools/qemu-xen-traditional-dir install-tools
+install-stubdom: $(QEMU_TRAD_DIR_TARGET) install-tools
        $(MAKE) -C stubdom install
 ifeq (x86_64,$(XEN_TARGET_ARCH))
        XEN_TARGET_ARCH=x86_32 $(MAKE) -C stubdom install-grub
 endif
 
-tools/qemu-xen-traditional-dir:
-       $(MAKE) -C tools qemu-xen-traditional-dir-find
-
-.PHONY: tools/qemu-xen-traditional-dir-force-update
-tools/qemu-xen-traditional-dir-force-update:
-       $(MAKE) -C tools qemu-xen-traditional-dir-force-update
-
 tools/qemu-xen-dir:
        $(MAKE) -C tools qemu-xen-dir-find
 
index 1915295d502d4b4a9cf826f885773fb039d64779..5ec96231f76e1de6ad5dd07054c80af94b77a601 100644 (file)
@@ -50,6 +50,7 @@ FLASK_POLICY        := @xsmpolicy@
 CONFIG_OVMF         := @ovmf@
 CONFIG_ROMBIOS      := @rombios@
 CONFIG_SEABIOS      := @seabios@
+CONFIG_QEMU_TRAD    := @qemu_traditional@
 CONFIG_XEND         := @xend@
 CONFIG_BLKTAP1      := @blktap1@
 
index 35295f0bce703d16c07df614c1849727f42f68da..19f2228951acd1fcf351c994a8cca3d4482b9dda 100644 (file)
@@ -264,6 +264,10 @@ $(CROSS_ROOT): cross-newlib cross-zlib cross-libpci
 
 QEMU_ROOT := $(shell if [ -d "$(CONFIG_QEMU)" ]; then echo "$(CONFIG_QEMU)"; else echo .; fi)
 
+ifneq ($(filter ioemu,$(STUBDOM_TARGETS)),)
+IOEMU_LINKFARM_TARGET := ioemu/linkfarm.stamp
+endif
+
 ifeq ($(QEMU_ROOT),.)
 $(XEN_ROOT)/tools/qemu-xen-traditional-dir:
        $(MAKE) DESTDIR= -C $(XEN_ROOT)/tools qemu-xen-traditional-dir-find
@@ -289,7 +293,7 @@ ioemu/linkfarm.stamp:
        touch ioemu/linkfarm.stamp
 endif
 
-mk-headers-$(XEN_TARGET_ARCH): ioemu/linkfarm.stamp
+mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET)
        mkdir -p include/xen && \
           ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) include/xen && \
           ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io xsm) include/xen && \
index 3da267758b353329244c5cc6254e95bcd94816ea..81eff6d1c9421c9cddc6f1581d2c2363cb78c543 100755 (executable)
@@ -562,6 +562,7 @@ LIBOBJS
 STUBDOM_INSTALL
 STUBDOM_BUILD
 STUBDOM_TARGETS
+ioemu
 vtpmmgr
 vtpm
 TPMEMU_VERSION
@@ -603,7 +604,14 @@ xenstore
 grub
 caml
 c
-ioemu
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
 target_alias
 host_alias
 build_alias
@@ -652,6 +660,7 @@ enable_pv_grub
 enable_xenstore_stubdom
 enable_vtpm_stubdom
 enable_vtpmmgr_stubdom
+enable_qemu_traditional
 enable_debug
 enable_extfiles
 '
@@ -1271,6 +1280,10 @@ Fine tuning of the installation directories:
 _ACEOF
 
   cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
 _ACEOF
 fi
 
@@ -1284,7 +1297,7 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-ioemu-stubdom Build and install ioemu-stubdom (default is ENABLED)
+  --enable-ioemu-stubdom  Build and install ioemu-stubdom
   --enable-c-stubdom      Build and install c-stubdom (default is DISABLED)
   --enable-caml-stubdom   Build and install caml-stubdom (default is DISABLED)
   --disable-pv-grub       Build and install pv-grub (default is ENABLED)
@@ -1294,6 +1307,7 @@ Optional Features:
   --enable-vtpm-stubdom   Build and install vtpm-stubdom
   --enable-vtpmmgr-stubdom
                           Build and install vtpmmgr-stubdom
+
   --disable-debug         Disable debug build of stubdom (default is ENABLED)
   --disable-extfiles      Use xen extfiles repository for libraries (default
                           is ENABLED)
@@ -1821,6 +1835,78 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
 
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
 # M4 Macro includes
 
 
@@ -1887,20 +1973,10 @@ fi
 fi
 
 
-else
-
-
-ioemu=y
-STUBDOM_TARGETS="$STUBDOM_TARGETS ioemu"
-STUBDOM_BUILD="$STUBDOM_BUILD ioemu-stubdom"
-STUBDOM_INSTALL="$STUBDOM_INSTALL install-ioemu"
-
-
 fi
 
 
 
-
 # Check whether --enable-c-stubdom was given.
 if test "${enable_c_stubdom+set}" = set; then :
   enableval=$enable_c_stubdom;
@@ -2115,6 +2191,39 @@ fi
 
 
 
+# Check whether --enable-qemu-traditional was given.
+if test "${enable_qemu_traditional+set}" = set; then :
+  enableval=$enable_qemu_traditional;
+else
+
+    case "$host_cpu" in
+        i[3456]86|x86_64)
+           enable_qemu_traditional="yes";;
+        *) enable_qemu_traditional="no";;
+    esac
+
+fi
+
+if test "x$enable_qemu_traditional" = "xyes"; then :
+
+    qemu_traditional=y
+else
+
+    qemu_traditional=n
+
+fi
+if test "x$ioemu" = "x"; then :
+
+    ioemu=$qemu_traditional
+
+fi
+echo "x$ioemu$qemu_traditional"
+if test "x$ioemu$qemu_traditional" = "xyn"; then :
+
+    as_fn_error $? "IOEMU stubdomain requires qemu-traditional" "$LINENO" 5
+
+fi
+
 
 # Check whether --enable-debug was given.
 if test "${enable_debug+set}" = set; then :
@@ -3474,6 +3583,25 @@ fi
 
 
 
+if test "x$ioemu" = "xy" || test "x$ioemu" = "x"; then :
+
+
+ioemu=y
+STUBDOM_TARGETS="$STUBDOM_TARGETS ioemu"
+STUBDOM_BUILD="$STUBDOM_BUILD ioemu-stubdom"
+STUBDOM_INSTALL="$STUBDOM_INSTALL install-ioemu"
+
+
+else
+
+
+ioemu=n
+
+
+fi
+
+
+
 
 
 
index 90fc94f5911a1f178dd34ef8dc6b8a5e0b76cc51..6468203b63fe4c6a9e600da90d6dd7e6aff03d44 100644 (file)
@@ -8,6 +8,8 @@ AC_CONFIG_SRCDIR([../extras/mini-os/kernel.c])
 AC_CONFIG_FILES([../config/Stubdom.mk])
 AC_CONFIG_AUX_DIR([../])
 
+AC_CANONICAL_HOST
+
 # M4 Macro includes
 m4_include([../m4/stubdom.m4])
 m4_include([../m4/features.m4])
@@ -16,7 +18,7 @@ m4_include([../m4/depends.m4])
 m4_include([../m4/fetcher.m4])
 
 # Enable/disable stub domains
-AX_STUBDOM_DEFAULT_ENABLE([ioemu-stubdom], [ioemu])
+AX_STUBDOM_CONDITIONAL([ioemu-stubdom], [ioemu])
 AX_STUBDOM_DEFAULT_DISABLE([c-stubdom], [c])
 AX_STUBDOM_DEFAULT_DISABLE([caml-stubdom], [caml])
 AX_STUBDOM_DEFAULT_ENABLE([pv-grub], [grub])
@@ -24,6 +26,25 @@ AX_STUBDOM_DEFAULT_ENABLE([xenstore-stubdom], [xenstore])
 AX_STUBDOM_CONDITIONAL([vtpm-stubdom], [vtpm])
 AX_STUBDOM_CONDITIONAL([vtpmmgr-stubdom], [vtpmmgr])
 
+AC_ARG_ENABLE([qemu-traditional],,,[
+    case "$host_cpu" in
+        i[[3456]]86|x86_64)
+           enable_qemu_traditional="yes";;
+        *) enable_qemu_traditional="no";;
+    esac
+])
+AS_IF([test "x$enable_qemu_traditional" = "xyes"], [
+    qemu_traditional=y],[
+    qemu_traditional=n
+])
+AS_IF([test "x$ioemu" = "x"], [
+    ioemu=$qemu_traditional
+])
+echo "x$ioemu$qemu_traditional"
+AS_IF([test "x$ioemu$qemu_traditional" = "xyn"], [
+    AC_MSG_ERROR(IOEMU stubdomain requires qemu-traditional)
+])
+
 AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of stubdom])
 AX_ARG_DEFAULT_ENABLE([extfiles], [Use xen extfiles repository for libraries])
 
@@ -55,6 +76,7 @@ AX_STUBDOM_AUTO_DEPENDS([vtpmmgr], [vtpm])
 #Conditionally enable these stubdoms based on the presense of dependencies
 AX_STUBDOM_CONDITIONAL_FINISH([vtpm-stubdom], [vtpm])
 AX_STUBDOM_CONDITIONAL_FINISH([vtpmmgr-stubdom], [vtpmmgr])
+AX_STUBDOM_CONDITIONAL_FINISH([ioemu-stubdom], [ioemu])
 
 AX_STUBDOM_FINISH
 AC_OUTPUT()
index 381af048492290cd72b23de61a751acc0df67aa1..6fa589b09ceabfeb278c18f1139faec26583063d 100644 (file)
@@ -28,7 +28,7 @@ SUBDIRS-$(CONFIG_Linux) += libvchan
 
 # do not recurse in to a dir we are about to delete
 ifneq "$(MAKECMDGOALS)" "distclean"
-SUBDIRS-$(CONFIG_IOEMU) += qemu-xen-traditional-dir
+SUBDIRS-$(CONFIG_QEMU_TRAD) += qemu-xen-traditional-dir
 SUBDIRS-$(CONFIG_IOEMU) += qemu-xen-dir
 endif
 
index 8bda0bd25924d47cecbb6957783e9fc7da4fc327..f84422213fdce753c7df2b2dc2fcdfcabef047d5 100644 (file)
@@ -18,6 +18,9 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Qemu traditional enabled */
+#undef HAVE_QEMU_TRADITIONAL
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
index ad4b5feb42c80d48efc69e141dab403c74835a20..739842381ca1b7a42c5f8b0b2be4fe25cbabf799 100755 (executable)
@@ -654,6 +654,7 @@ APPEND_LIB
 APPEND_INCLUDES
 PREPEND_LIB
 PREPEND_INCLUDES
+qemu_traditional
 blktap1
 xend
 debug
@@ -734,6 +735,7 @@ enable_seabios
 enable_debug
 enable_xend
 enable_blktap1
+enable_qemu_traditional
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1394,6 +1396,9 @@ Optional Features:
   --disable-debug         Disable debug build of tools (default is ENABLED)
   --disable-xend          Disable xend toolstack (default is ENABLED)
   --enable-blktap1        Disable blktap1 tools (default is DISABLED)
+  --enable-qemu-traditional
+                          Enable qemu traditional device model, (DEFAULT is on
+                          for x86, otherwise off)
 
 Some influential environment variables:
   CC          C compiler command
@@ -3654,6 +3659,32 @@ blktap1=$ax_cv_blktap1
 
 
 
+# Check whether --enable-qemu-traditional was given.
+if test "${enable_qemu_traditional+set}" = set; then :
+  enableval=$enable_qemu_traditional;
+else
+
+    case "$host_cpu" in
+        i[3456]86|x86_64)
+           enable_qemu_traditional="yes";;
+        *) enable_qemu_traditional="no";;
+    esac
+
+fi
+
+if test "x$enable_qemu_traditional" = "xyes"; then :
+
+
+$as_echo "#define HAVE_QEMU_TRADITIONAL 1" >>confdefs.h
+
+    qemu_traditional=y
+else
+
+    qemu_traditional=n
+
+fi
+
+
 
 
 
index 1b4625a299b3a1b3db010525b976e9de56ebb073..9b0547808307e5980c0dada494da7f894efd4ca6 100644 (file)
@@ -60,6 +60,22 @@ AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of tools])
 AX_ARG_DEFAULT_ENABLE([xend], [Disable xend toolstack])
 AX_ARG_DEFAULT_DISABLE([blktap1], [Disable blktap1 tools])
 
+AC_ARG_ENABLE([qemu-traditional],
+    AS_HELP_STRING([--enable-qemu-traditional],
+                   [Enable qemu traditional device model, (DEFAULT is on for x86, otherwise off)]),,[
+    case "$host_cpu" in
+        i[[3456]]86|x86_64)
+           enable_qemu_traditional="yes";;
+        *) enable_qemu_traditional="no";;
+    esac
+])
+AS_IF([test "x$enable_qemu_traditional" = "xyes"], [
+AC_DEFINE([HAVE_QEMU_TRADITIONAL], [1], [Qemu traditional enabled])
+    qemu_traditional=y],[
+    qemu_traditional=n
+])
+AC_SUBST(qemu_traditional)
+
 AC_ARG_VAR([PREPEND_INCLUDES],
     [List of include folders to prepend to CFLAGS (without -I)])
 AC_ARG_VAR([PREPEND_LIB],