aboutsummaryrefslogtreecommitdiffstats
path: root/buildconfigs/mk.linux-2.6-xen
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@xensource.com>2007-05-25 11:03:40 +0100
committerIan Campbell <ian.campbell@xensource.com>2007-05-25 11:03:40 +0100
commit7a35a3f0b5f668c9b7cdb289293977543735829d (patch)
tree918cd9544da671d782901f595d5f3fc1b887815c /buildconfigs/mk.linux-2.6-xen
parent4117d5c1dbca483edcc2bb1b9430f87f122d9bc4 (diff)
downloadxen-7a35a3f0b5f668c9b7cdb289293977543735829d.tar.gz
xen-7a35a3f0b5f668c9b7cdb289293977543735829d.tar.bz2
xen-7a35a3f0b5f668c9b7cdb289293977543735829d.zip
Factor out sparse tree makefile fragments and introduce hg-clone and
tarball methods in preparation for migrating away from the sparse tree layout. This re-introduces 14883:6568c1882af5 and 14862:98efd2e410ae plus further fixes. Also add makefile fragments to support building the paravirt ops tree (make linux-2.6-paravirt-build). Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Diffstat (limited to 'buildconfigs/mk.linux-2.6-xen')
-rw-r--r--buildconfigs/mk.linux-2.6-xen102
1 files changed, 70 insertions, 32 deletions
diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen
index bdc5e738ad..afd56b1397 100644
--- a/buildconfigs/mk.linux-2.6-xen
+++ b/buildconfigs/mk.linux-2.6-xen
@@ -1,21 +1,28 @@
LINUX_SERIES = 2.6
-LINUX_VER = 2.6.18
+LINUX_VER ?= 2.6.18
-EXTRAVERSION ?= xen
+EXTRAVERSION ?= -xen
-LINUX_SRCDIR = linux-$(LINUX_VER)-xen
-LINUX_DIR = build-linux-$(LINUX_VER)-$(EXTRAVERSION)_$(XEN_TARGET_ARCH)
+XEN_LINUX_SOURCE ?= sparse
-IMAGE_TARGET ?= vmlinuz
-INSTALL_BOOT_PATH ?= $(DESTDIR)
+# Let XEN_TARGET_ARCH override ARCH.
+ifeq ($(XEN_TARGET_ARCH),x86_32)
+LINUX_ARCH ?= i386
+else
+LINUX_ARCH ?= $(XEN_TARGET_ARCH)
+endif
-ifeq ($(XEN_TARGET_ARCH),ia64)
+LINUX_DIR = build-linux-$(LINUX_VER)$(EXTRAVERSION)_$(XEN_TARGET_ARCH)
+
+IMAGE_TARGET ?= vmlinuz
INSTALL_BOOT_PATH := $(DESTDIR)/boot
-endif
LINUX_VER3 := $(LINUX_SERIES).$(word 3, $(subst ., ,$(LINUX_VER)))
-include buildconfigs/Rules.mk
+.PHONY: _build
+_build: build
+
+include buildconfigs/src.$(XEN_LINUX_SOURCE)
# The real action starts here!
.PHONY: build
@@ -28,31 +35,63 @@ build: $(LINUX_DIR)/include/linux/autoconf.h
mkdir -p $(INSTALL_BOOT_PATH)
$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(INSTALL_BOOT_PATH) install
-$(LINUX_SRCDIR)/.valid-src: ref-linux-$(LINUX_VER)/.valid-ref
- rm -rf $(LINUX_SRCDIR)
- cp -al $(<D) $(LINUX_SRCDIR)
- # Apply arch-xen patches
- ( cd linux-$(LINUX_SERIES)-xen-sparse && \
- LINUX_ARCH=$(LINUX_ARCH) bash ./mkbuildtree ../$(LINUX_SRCDIR) )
- # Patch kernel Makefile to set EXTRAVERSION
- ( cd $(LINUX_SRCDIR) ; \
- sed -e 's,^EXTRAVERSION.*,&$$(XENGUEST),' \
- -e 's,^KERNELRELEASE,XENGUEST := $$(shell [ -r $$(objtree)/.xenguest ] \&\& cat $$(objtree)/.xenguest)\n&,' Makefile >Mk.tmp ; \
- rm -f Makefile ; mv Mk.tmp Makefile )
- touch $@
-
+$(LINUX_DIR)/include/linux/autoconf.h: CONFIG_FILE=$(PWD)/$(LINUX_DIR)/.config
$(LINUX_DIR)/include/linux/autoconf.h: $(LINUX_SRCDIR)/.valid-src
rm -rf $(LINUX_DIR)
mkdir -p $(LINUX_DIR)
- # Re-use config from install dir if one exits else use default config
+ # Re-use config from install dir if one exists. Next try to use
+ # buildconfigs/create_config.sh is one is provided by the source
+ # tree. Finally attempt to use make defconfig.
+ set -e ; \
CONFIG_VERSION=$$(sed -ne 's/$$(XENGUEST)//; s/^EXTRAVERSION = //p' $(LINUX_SRCDIR)/Makefile); \
- [ -r $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \
- cp $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION-$(EXTRAVERSION) $(LINUX_DIR)/.config \
- || sh buildconfigs/create_config.sh $(LINUX_DIR)/.config $(EXTRAVERSION) $(XEN_TARGET_ARCH) $(XEN_SYSTYPE)
- # See if we need to munge config to enable PAE
- $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk config-update-pae
- echo "-$(EXTRAVERSION)" >$(LINUX_DIR)/.xenguest
+ if [ -r $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION$(EXTRAVERSION) ] ; then \
+ cp $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION$(EXTRAVERSION) $(CONFIG_FILE) ; \
+ elif [ -e $(LINUX_SRCDIR)/buildconfigs/create_config.sh ] ; then \
+ cd $(LINUX_SRCDIR) && sh buildconfigs/create_config.sh \
+ $(CONFIG_FILE) $(EXTRAVERSION) $(XEN_TARGET_ARCH) $(XEN_SYSTYPE) ; \
+ echo "Configured $(LINUX_DIR) using create_config.sh" ; \
+ elif $(MAKE) -C $(LINUX_SRCDIR) ARCH=$(LINUX_ARCH) defconfig O=$$(/bin/pwd)/$(LINUX_DIR) ; then \
+ echo "Configured $(LINUX_DIR) using defconfig" ; \
+ else \
+ echo "No configuration method found for this kernel" ; \
+ fi
+ifeq ($(XEN_TARGET_ARCH),x86_32)
+ifeq ($(pae),y)
+ sed -e 's!^CONFIG_HIGHMEM4G=y$$!\# CONFIG_HIGHMEM4G is not set!;s!^\# CONFIG_HIGHMEM64G is not set$$!CONFIG_HIGHMEM64G=y!' $(CONFIG_FILE) > $(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE)
+else
+ grep '^CONFIG_HIGHMEM64G=y' $(CONFIG_FILE) >/dev/null && ( sed -e 's!^CONFIG_HIGHMEM64G=y$$!\# CONFIG_HIGHMEM64G is not set!;s!^\# CONFIG_HIGHMEM4G is not set$$!CONFIG_HIGHMEM4G=y!' $(CONFIG_FILE) > $(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE) ) || true
+endif
+endif
+ifneq ($(EXTRAVERSION),)
+ echo "$(EXTRAVERSION)" >$(LINUX_DIR)/localversion-xen
+endif
$(MAKE) -C $(LINUX_SRCDIR) ARCH=$(LINUX_ARCH) oldconfig O=$$(/bin/pwd)/$(LINUX_DIR)
+ @if [ ! -f $(LINUX_DIR)/Makefile ] ; then \
+ echo "***********************************"; \
+ echo "oldconfig did not create a Makefile"; \
+ echo "Generating $(LINUX_DIR)/Makefile "; \
+ echo "***********************************"; \
+ ( echo "# Automatically generated: don't edit"; \
+ echo ""; \
+ echo "VERSION = 2"; \
+ echo "PATCHLEVEL = 6"; \
+ echo ""; \
+ echo "KERNELSRC := $(PWD)/$(LINUX_SRCDIR)"; \
+ echo "KERNELOUTPUT := $(PWD)/$(LINUX_DIR)"; \
+ echo ""; \
+ echo "MAKEFLAGS += --no-print-directory"; \
+ echo ""; \
+ echo ".PHONY: all \$$(MAKECMDGOALS)"; \
+ echo ""; \
+ echo "all:"; \
+ echo " \$$(MAKE) -C \$$(KERNELSRC) O=\$$(KERNELOUTPUT)"; \
+ echo ""; \
+ echo "Makefile:;"; \
+ echo ""; \
+ echo "\$$(filter-out all Makefile,\$$(MAKECMDGOALS)) %/:"; \
+ echo " \$$(MAKE) -C \$$(KERNELSRC) O=\$$(KERNELOUTPUT) \$$@"; \
+ ) > $(LINUX_DIR)/Makefile ; \
+ fi
.PHONY: prep
prep: $(LINUX_DIR)/include/linux/autoconf.h
@@ -67,12 +106,11 @@ clean::
[ ! -d $(LINUX_DIR) ] || \
$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
-
.PHONY: delete
delete:
rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR)
-.PHONY: mrpropper
-mrpropper:
+.PHONY: mrproper
+mrproper:
rm -rf $(LINUX_SRCDIR)
rm -f linux-$(LINUX_VER).tar.bz2