]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
[BUILD] Fixup support for building upstream kernels.
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 9 Jun 2008 09:11:22 +0000 (10:11 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 9 Jun 2008 09:11:22 +0000 (10:11 +0100)
In particular:
 - support merged x86 architecture. To facilitate this it made sense
   to encode some existing logic in shell scripts rather than
   increasing complicated make conditionals.
 - set CONFIG_PARAVIRT_GUEST=y which is required for newer kernels.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
xen-unstable changeset:   17030:419a141ca16d7b248805addb0465a6b48e9723dc
xen-unstable date:        Tue Feb 12 14:59:01 2008 +0000

buildconfigs/enable-xen-config
buildconfigs/mk.linux-2.6-common
buildconfigs/select-linux-arch [new file with mode: 0644]
buildconfigs/select-linux-image [new file with mode: 0644]

index 1f9945faef1c32777ec0d043ff2a20cf8716d16a..1d40aca3e5043d10114cc50e2c3fc16dcf8e2b85 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-set -ex
+set -e
 
 if [ $# -ne 1 ] ; then
        echo "Usage $(basename $0) <config-file>" 1>&2
@@ -26,6 +26,7 @@ setopt()
 }
 
 setopt CONFIG_PARAVIRT y
+setopt CONFIG_PARAVIRT_GUEST y
 setopt CONFIG_XEN y
 setopt CONFIG_VMI y
 setopt CONFIG_KVM y
@@ -37,4 +38,10 @@ setopt CONFIG_XEN_NETDEV_FRONTEND y
 setopt CONFIG_HVC_XEN y
 setopt CONFIG_NUMA n
 
+case ${XEN_TARGET_ARCH} in
+    x86_32) setopt CONFIG_64BIT n ;;
+    x86_64) setopt CONFIG_64BIT y ;;
+    *) ;;
+esac
+
 exit 0
index 5b6810c56dd038ecbf296f8ac71330e6f9636fa7..024d55f680628aab72ea3d1396d9042ec8567290 100644 (file)
@@ -20,22 +20,9 @@ else
 __NONINT_CONFIG =
 endif
 
-# Let XEN_TARGET_ARCH override ARCH.
-ifeq ($(XEN_TARGET_ARCH),x86_32)
-LINUX_ARCH     ?= i386
-else
-LINUX_ARCH     ?= $(XEN_TARGET_ARCH)
-endif
-
 LINUX_DIR     = build-linux-$(LINUX_VER)$(EXTRAVERSION)_$(XEN_TARGET_ARCH)
 
 IMAGE_TARGET ?= vmlinuz
-ifneq ($(XEN_TARGET_ARCH),ia64)
-IMAGE_PATH ?= arch/$(LINUX_ARCH)/boot/$(firstword $(IMAGE_TARGET))
-else
-IMAGE_PATH ?= arch/ia64/hp/sim/boot/vmlinux.gz
-endif
-INSTALL_BOOT_PATH := $(DESTDIR)/boot
 
 LINUX_VER3  := $(LINUX_SERIES).$(word 3, $(subst ., ,$(LINUX_VER)))
 
@@ -44,6 +31,11 @@ _build: build
 
 include buildconfigs/src.$(XEN_LINUX_SOURCE)
 
+LINUX_ARCH = $$(sh buildconfigs/select-linux-arch $(LINUX_SRCDIR))
+IMAGE_PATH = $$(sh buildconfigs/select-linux-image $(LINUX_DIR) $(LINUX_ARCH) $(IMAGE_TARGET))
+
+INSTALL_BOOT_PATH := $(DESTDIR)/boot
+
 # Default to allowing interface mismatch
 ifndef XEN_LINUX_ALLOW_INTERFACE_MISMATCH
 XEN_LINUX_ALLOW_INTERFACE_MISMATCH := y
@@ -70,9 +62,9 @@ endif
        fi
        $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) $(IMAGE_TARGET)
        mkdir -p $(INSTALL_BOOT_PATH)
-       cp $(LINUX_DIR)/$(IMAGE_PATH) $(INSTALL_BOOT_PATH)/vmlinuz-$(KERNELRELEASE)
-       cp $(LINUX_DIR)/.config $(INSTALL_BOOT_PATH)/config-$(KERNELRELEASE)
-       cp $(LINUX_DIR)/System.map $(INSTALL_BOOT_PATH)/System.map-$(KERNELRELEASE)
+       @cp -v $(IMAGE_PATH) $(INSTALL_BOOT_PATH)/vmlinuz-$(KERNELRELEASE)
+       @cp -v $(LINUX_DIR)/.config $(INSTALL_BOOT_PATH)/config-$(KERNELRELEASE)
+       @cp -v $(LINUX_DIR)/System.map $(INSTALL_BOOT_PATH)/System.map-$(KERNELRELEASE)
 
 $(LINUX_DIR)/include/linux/autoconf.h: CONFIG_FILE=$(CURDIR)/$(LINUX_DIR)/.config
 $(LINUX_DIR)/include/linux/autoconf.h: $(LINUX_SRCDIR)/.valid-src
diff --git a/buildconfigs/select-linux-arch b/buildconfigs/select-linux-arch
new file mode 100644 (file)
index 0000000..a5d0856
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+ME=$(basename $0)
+
+if [ $# -lt 1 ] || [ $# -gt 2 ] ; then
+    echo "usage: $ME <linux-build-directory>" 1>&2
+    exit 1;
+fi
+
+LINUX_DIR=$1
+
+case ${XEN_TARGET_ARCH} in
+    x86_32|x86_64)
+       if [ -d ${LINUX_DIR}/arch/x86 ] ; then
+           ARCH=x86
+       elif [ "${XEN_TARGET_ARCH}" = "x86_32" ] ; then
+           ARCH=i386
+       else
+           ARCH=x86_64
+       fi
+       ;;
+    *)
+       ARCH=${XEN_TARGET_ARCH}
+       ;;
+esac
+
+echo "$ME: ${ARCH}" 1>&2
+echo ${ARCH}
+
+exit 0
diff --git a/buildconfigs/select-linux-image b/buildconfigs/select-linux-image
new file mode 100644 (file)
index 0000000..07899f8
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+ME=$(basename $0)
+
+if [ $# -lt 3 ] ; then
+    echo "usage: $ME <linux-build-directory> <linux-arch> <linux-targets...>" 1>&2
+    exit 1;
+fi
+
+LINUX_DIR=$1
+LINUX_ARCH=$2
+LINUX_TARGET=$3 # We don't care about second and subsequent targets
+
+case ${XEN_TARGET_ARCH} in
+    ia64)
+       IMAGE=${LINUX_DIR}/arch/ia64/hp/sim/boot/vmlinux.gz
+       ;;
+    *)
+       if [ -f ${LINUX_DIR}/arch/${LINUX_ARCH}/boot/${LINUX_TARGET} ] ; then
+           IMAGE=${LINUX_DIR}/arch/${LINUX_ARCH}/boot/${LINUX_TARGET}
+       elif [ -f ${LINUX_DIR}/${LINUX_TARGET} ] ; then
+           IMAGE=${LINUX_DIR}/${LINUX_TARGET}
+       else
+           echo "$ME: cannot determine Linux image to use for ${LINUX_ARCH} in ${LINUX_DIR}" 1>&2
+           exit 1
+       fi
+       ;;
+esac
+
+echo "$ME: ${IMAGE}" 1>&2
+echo ${IMAGE}
+
+exit 0