From b0f69ec5c71de1248d915c193b57c43e786857dd Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 6 Aug 2013 11:32:32 +0100 Subject: tools: Make qemu-xen-traditional build optional. 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 Acked-by: Ian Jackson [ ijc -- trivial conflicts in Tools.mk.in and tools/configure.ac. Reran autogen.sh ] --- stubdom/Makefile | 6 +- stubdom/configure | 152 +++++++++++++++++++++++++++++++++++++++++++++++---- stubdom/configure.ac | 24 +++++++- 3 files changed, 168 insertions(+), 14 deletions(-) (limited to 'stubdom') diff --git a/stubdom/Makefile b/stubdom/Makefile index 35295f0bce..19f2228951 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -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 && \ diff --git a/stubdom/configure b/stubdom/configure index 3da267758b..81eff6d1c9 100755 --- a/stubdom/configure +++ b/stubdom/configure @@ -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 + + + diff --git a/stubdom/configure.ac b/stubdom/configure.ac index 90fc94f591..6468203b63 100644 --- a/stubdom/configure.ac +++ b/stubdom/configure.ac @@ -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() -- cgit v1.2.3