changeset: 7198:f2fce0c89fd9
tag: tip
user: mostrows@heater.watson.ibm.com
date: Tue Oct 4 14:16:56 2005 -0400
summary: Restructure the makefiles used to drive builds of linux 2.6
kernels.
A common file eliminates duplication across makefiles.
Use Linux''s own facilities for building outside the source tree,
this means that a single source tree is created from the sparse tree
and linux builds occur in source-free build trees.
Signed-off-by: Michal Ostrowski <mostrows@watson.ibm.com>
diff -r c092fbcc18c6 -r f2fce0c89fd9 buildconfigs/mk.linux-2.6-xen
--- a/buildconfigs/mk.linux-2.6-xen Tue Oct 4 11:45:05 2005 -0400
+++ b/buildconfigs/mk.linux-2.6-xen Tue Oct 4 14:16:56 2005 -0400
@@ -1,51 +1,4 @@
-
-OS = linux
-
-LINUX_SERIES = 2.6
-LINUX_VER = 2.6.12
-
+BUILD_DIR ?= linux-2.6.12-xen0
EXTRAVERSION = xen
-LINUX_DIR = $(OS)-$(LINUX_VER)-$(EXTRAVERSION)
-
-include buildconfigs/Rules.mk
-
-.PHONY: build clean delete
-
-# The real action starts here!
-build: $(LINUX_DIR)/include/linux/autoconf.h
- if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(DESTDIR)
modules_install ; \
- fi
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install
-
-$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref
- rm -rf $(LINUX_DIR)
- cp -al $(<D) $(LINUX_DIR)
- # Apply arch-xen patches
- ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
- LINUX_ARCH=$(LINUX_ARCH) ./mkbuildtree ../$(LINUX_DIR) )
- # Re-use config from install dir if one exits else use default config
- CONFIG_VERSION=$$(sed -ne ''s/^EXTRAVERSION = //p''
$(LINUX_DIR)/Makefile); \
- [ -r $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ]
&& \
- cp $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION)
$(LINUX_DIR)/.config \
- || cp
$(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH) \
- $(LINUX_DIR)/.config
- # See if we need to munge config to enable PAE
- $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk
config-update-pae
- # Patch kernel Makefile to set EXTRAVERSION
- ( cd $(LINUX_DIR) ; \
- sed -e ''s/^EXTRAVERSION.*/&$$(XENGUEST)\nXENGUEST =
-$(EXTRAVERSION)/'' Makefile >Mk.tmp ; \
- rm -f Makefile ; mv Mk.tmp Makefile )
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) oldconfig
-
-config: CONFIGMODE = menuconfig
-config: $(LINUX_DIR)/include/linux/autoconf.h
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) $(CONFIGMODE)
-
-clean::
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
-
-delete:
- rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR)
+include buildconfigs/mk.linux-2.6.common
diff -r c092fbcc18c6 -r f2fce0c89fd9 buildconfigs/mk.linux-2.6-xen0
--- a/buildconfigs/mk.linux-2.6-xen0 Tue Oct 4 11:45:05 2005 -0400
+++ b/buildconfigs/mk.linux-2.6-xen0 Tue Oct 4 14:16:56 2005 -0400
@@ -1,51 +1,4 @@
-
-OS = linux
-
-LINUX_SERIES = 2.6
-LINUX_VER = 2.6.12
-
+BUILD_DIR ?= linux-2.6.12-xen0
EXTRAVERSION = xen0
-LINUX_DIR = $(OS)-$(LINUX_VER)-$(EXTRAVERSION)
-
-include buildconfigs/Rules.mk
-
-.PHONY: build clean delete
-
-# The real action starts here!
-build: $(LINUX_DIR)/include/linux/autoconf.h
- if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(DESTDIR)
modules_install ; \
- fi
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install
-
-$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref
- rm -rf $(LINUX_DIR)
- cp -al $(<D) $(LINUX_DIR)
- # Apply arch-xen patches
- ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
- LINUX_ARCH=$(LINUX_ARCH) ./mkbuildtree ../$(LINUX_DIR) )
- # Re-use config from install dir if one exits else use default config
- CONFIG_VERSION=$$(sed -ne ''s/^EXTRAVERSION = //p''
$(LINUX_DIR)/Makefile); \
- [ -r $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ]
&& \
- cp $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION)
$(LINUX_DIR)/.config \
- || cp
$(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH) \
- $(LINUX_DIR)/.config
- # See if we need to munge config to enable PAE
- $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk
config-update-pae
- # Patch kernel Makefile to set EXTRAVERSION
- ( cd $(LINUX_DIR) ; \
- sed -e ''s/^EXTRAVERSION.*/&$$(XENGUEST)\nXENGUEST =
-$(EXTRAVERSION)/'' Makefile >Mk.tmp ; \
- rm -f Makefile ; mv Mk.tmp Makefile )
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) oldconfig
-
-config: CONFIGMODE = menuconfig
-config: $(LINUX_DIR)/include/linux/autoconf.h
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) $(CONFIGMODE)
-
-clean::
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
-
-delete:
- rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR)
+include buildconfigs/mk.linux-2.6.common
diff -r c092fbcc18c6 -r f2fce0c89fd9 buildconfigs/mk.linux-2.6-xenU
--- a/buildconfigs/mk.linux-2.6-xenU Tue Oct 4 11:45:05 2005 -0400
+++ b/buildconfigs/mk.linux-2.6-xenU Tue Oct 4 14:16:56 2005 -0400
@@ -1,51 +1,4 @@
-
-OS = linux
-
-LINUX_SERIES = 2.6
-LINUX_VER = 2.6.12
-
+BUILD_DIR ?= linux-2.6.12-xenU
EXTRAVERSION = xenU
-LINUX_DIR = $(OS)-$(LINUX_VER)-$(EXTRAVERSION)
-
-include buildconfigs/Rules.mk
-
-.PHONY: build clean delete
-
-# The real action starts here!
-build: $(LINUX_DIR)/include/linux/autoconf.h
- if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(DESTDIR)
modules_install ; \
- fi
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install
-
-$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref
- rm -rf $(LINUX_DIR)
- cp -al $(<D) $(LINUX_DIR)
- # Apply arch-xen patches
- ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
- LINUX_ARCH=$(LINUX_ARCH) ./mkbuildtree ../$(LINUX_DIR) )
- # Re-use config from install dir if one exits else use default config
- CONFIG_VERSION=$$(sed -ne ''s/^EXTRAVERSION = //p''
$(LINUX_DIR)/Makefile); \
- [ -r $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ]
&& \
- cp $(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION)
$(LINUX_DIR)/.config \
- || cp
$(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH) \
- $(LINUX_DIR)/.config
- # See if we need to munge config to enable PAE
- $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk
config-update-pae
- # Patch kernel Makefile to set EXTRAVERSION
- ( cd $(LINUX_DIR) ; \
- sed -e ''s/^EXTRAVERSION.*/&$$(XENGUEST)\nXENGUEST =
-$(EXTRAVERSION)/'' Makefile >Mk.tmp ; \
- rm -f Makefile ; mv Mk.tmp Makefile )
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) oldconfig
-
-config: CONFIGMODE = menuconfig
-config: $(LINUX_DIR)/include/linux/autoconf.h
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) $(CONFIGMODE)
-
-clean::
- $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean
-
-delete:
- rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR)
+include buildconfigs/mk.linux-2.6.common
diff -r c092fbcc18c6 -r f2fce0c89fd9 buildconfigs/mk.linux-2.6.common
--- /dev/null Tue Oct 4 11:45:05 2005 -0400
+++ b/buildconfigs/mk.linux-2.6.common Tue Oct 4 14:16:56 2005 -0400
@@ -0,0 +1,64 @@
+
+OS = linux
+
+LINUX_SERIES = 2.6
+LINUX_VER = 2.6.12
+
+EXTRAVERSION ?= xen
+
+LINUX_DIR = $(OS)-$(LINUX_VER)-xen.src
+
+XEN_ROOT= ./
+include buildconfigs/Rules.mk
+
+BUILD_DIR ?= $(OS)-$(LINUX_VER)-$(EXTRAVERSION)
+
+BUILD_ARG+ifneq ($(BUILD_DIR),$(LINUX_DIR))
+BUILD_ARG=O=$(shell pwd)/$(BUILD_DIR)
+endif
+
+BUILD_ARG+=ARCH=xen
+BUILD_ARG+=-C $(LINUX_DIR)
+.PHONY: build clean delete
+
+# The real action starts here!
+build: $(BUILD_DIR)/include/linux/autoconf.h
+ if grep "^CONFIG_MODULES=" $(BUILD_DIR)/.config ; then \
+ $(MAKE) $(BUILD_ARG) modules ; \
+ $(MAKE) $(BUILD_ARG) INSTALL_MOD_PATH=$(DESTDIR) modules_install; \
+ fi
+ $(MAKE) $(BUILD_ARG) INSTALL_PATH=$(DESTDIR) install
+
+
+$(LINUX_DIR): ref-$(OS)-$(LINUX_VER)/.valid-ref
+ cp -al $(<D) $(LINUX_DIR)
+ # Apply arch-xen patches
+ ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
+ ./mkbuildtree ../$(LINUX_DIR) )
+
+CONFIG_VERSION:=$(shell sed -ne ''s/^EXTRAVERSION = //p''
$(LINUX_DIR)/Makefile)
+
+APPEND_VERSION:=$(CONFIG_VERSION)-$(EXTRAVERSION)
+CONFIG_FILE=$(DESTDIR)/boot/config-$(LINUX_VER)$(APPEND_VERSION)
+DEFAULT_CONFIG=$(LINUX_DIR)/arch/xen/configs/$(EXTRAVERSION)_defconfig_$(XEN_TARGET_ARCH)
+
+$(BUILD_DIR)/include/linux/autoconf.h: $(LINUX_DIR)
+ rm -rf $(BUILD_DIR)
+ mkdir $(BUILD_DIR)
+ # Re-use config from install dir if one exits else use default config
+ [ -r $(CONFIG_FILE) ] && cp $(CONFIG_FILE) $(BUILD_DIR)/.config \
+ || cp $(DEFAULT_CONFIG) $(BUILD_DIR)/.config
+ # See if we need to munge config to enable PAE
+ $(MAKE) CONFIG_FILE=$(BUILD_DIR)/.config -f buildconfigs/Rules.mk
config-update-pae
+ $(MAKE) $(BUILD_ARG) oldconfig EXTRAVERSION=$(CONFIG_VERSION)-$(XENGUEST)
+
+config: CONFIGMODE = menuconfig
+config: $(LINUX_DIR)/include/linux/autoconf.h
+ $(MAKE) $(BUILD_ARG) $(CONFIGMODE)
+
+clean::
+ $(MAKE) $(BUILD_ARG) clean
+
+delete:
+ rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel