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