aboutsummaryrefslogtreecommitdiffstats
path: root/buildconfigs
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-02-12 14:59:01 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-02-12 14:59:01 +0000
commit3eae93972b9e0b74e3060603d29eebec7d89d14a (patch)
tree2b12334583c5203f37d793cb7f9b0152864025d8 /buildconfigs
parentb650bde790d6e2c918de3d2ce3b2a89d56b25896 (diff)
downloadxen-3eae93972b9e0b74e3060603d29eebec7d89d14a.tar.gz
xen-3eae93972b9e0b74e3060603d29eebec7d89d14a.tar.bz2
xen-3eae93972b9e0b74e3060603d29eebec7d89d14a.zip
[BUILD] Fixup support for building upstream kernels.
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>
Diffstat (limited to 'buildconfigs')
-rw-r--r--buildconfigs/enable-xen-config9
-rw-r--r--buildconfigs/mk.linux-2.6-common24
-rwxr-xr-xbuildconfigs/select-linux-arch30
-rwxr-xr-xbuildconfigs/select-linux-image33
4 files changed, 79 insertions, 17 deletions
diff --git a/buildconfigs/enable-xen-config b/buildconfigs/enable-xen-config
index 1f9945faef..1d40aca3e5 100644
--- a/buildconfigs/enable-xen-config
+++ b/buildconfigs/enable-xen-config
@@ -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
diff --git a/buildconfigs/mk.linux-2.6-common b/buildconfigs/mk.linux-2.6-common
index 5b6810c56d..024d55f680 100644
--- a/buildconfigs/mk.linux-2.6-common
+++ b/buildconfigs/mk.linux-2.6-common
@@ -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 100755
index 0000000000..a5d0856e12
--- /dev/null
+++ b/buildconfigs/select-linux-arch
@@ -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 100755
index 0000000000..07899f80e2
--- /dev/null
+++ b/buildconfigs/select-linux-image
@@ -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