From: Sam Ravnborg Date: Mon, 9 Jun 2008 19:24:28 +0000 (+0200) Subject: kbuild: only one call for include/ in make headers_* X-Git-Tag: v2.6.27-rc1~58^2~19 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=88181ec30f58a28cd78b26aaac38bef4062b23dc;p=linux-2.6-omap-h63xx.git kbuild: only one call for include/ in make headers_* Move it to the top-level file to decide if we install/check the generic headers or the arch specific headers. This revealed a long standing bug where "make headers_check_all" relied on the files in asm/ for the current architecture. So make headers_check_all is now broken by this commit. In addition: o add a simpler way to detect if an arch support exporting header files. o add 'set -e;' so we error out early if make headers_check_all fails. o add sparc64 and cris to arch we do not process in make headers_*_all because: sparc64 - use sparc to export headers cris - is know seriously broken Includes suggestions from: David Woodhouse . Signed-off-by: Sam Ravnborg Cc: David Woodhouse --- diff --git a/Makefile b/Makefile index 33e735c9065..2f0136401ba 100644 --- a/Makefile +++ b/Makefile @@ -1014,7 +1014,7 @@ firmware_install: FORCE #Default location for installed headers export INSTALL_HDR_PATH = $(objtree)/usr -hdr-filter := generic um ppc +hdr-filter := generic um ppc sparc64 cris hdr-archs := $(filter-out $(hdr-filter), \ $(patsubst $(srctree)/include/asm-%/Kbuild,%, \ $(wildcard $(srctree)/include/asm-*/Kbuild))) @@ -1026,29 +1026,31 @@ __headers: include/linux/version.h scripts_basic FORCE PHONY += headers_install_all headers_install_all: __headers + $(Q)$(MAKE) $(hdr-inst)=include $(Q)set -e; for arch in $(hdr-archs); do \ - $(MAKE) ARCH=$$arch SRCARCH=$$arch $(hdr-inst)=include \ - BIASMDIR=-bi-$$arch ;\ + $(MAKE) $(hdr-inst)=include/asm-$$arch \ + SRCARCH=$$arch dst=include/asm-$$arch; \ done PHONY += headers_install headers_install: __headers - $(Q)if [ ! -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \ - echo '*** Error: Headers not exportable for this architecture ($(SRCARCH))'; \ - exit 1 ; \ - fi - $(Q)$(MAKE) $(hdr-inst)=include ARCH=$(SRCARCH) + $(if $(wildcard $(srctree)/include/asm-$(SRCARCH)/Kbuild),, \ + $(error Headers not exportable for this architecture ($(SRCARCH)))) + $(Q)$(MAKE) $(hdr-inst)=include + $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) dst=include/asm PHONY += headers_check_all headers_check_all: headers_install_all + $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 $(Q)set -e; for arch in $(hdr-archs); do \ - $(MAKE) ARCH=$$arch SRCARCH=$$arch $(hdr-inst)=include \ - BIASMDIR=-bi-$$arch HDRCHECK=1 ;\ + $(MAKE) SRCARCH=$$arch $(hdr-inst)=include/asm-$$arch HDRCHECK=1 ;\ done PHONY += headers_check headers_check: headers_install - $(Q)$(MAKE) $(hdr-inst)=include ARCH=$(SRCARCH) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) \ + dst=include/asm HDRCHECK=1 # --------------------------------------------------------------------------- # Modules diff --git a/include/Kbuild b/include/Kbuild index bdca155028e..d8c3e3cbf41 100644 --- a/include/Kbuild +++ b/include/Kbuild @@ -1,3 +1,6 @@ +# Top-level Makefile calls into asm-$(ARCH) +# List only non-arch directories below + header-y += asm-generic/ header-y += linux/ header-y += sound/ @@ -5,5 +8,3 @@ header-y += mtd/ header-y += rdma/ header-y += video/ header-y += drm/ - -header-y += asm-$(ARCH)/ diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index 599adc63b84..599503f0e5f 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst @@ -28,15 +28,6 @@ include $(kbuild-file) include scripts/Kbuild.include -# If this is include/asm-$(ARCH) then override $(_dst) so that -# we install to include/asm directly. -# Unless $(BIASMDIR) is set, in which case we're probably doing -# a 'headers_install_all' build and we should keep the -$(ARCH) -# in the directory name. -ifeq ($(obj),include/asm-$(ARCH)$(BIASMDIR)) - _dst := include/asm -endif - install := $(INSTALL_HDR_PATH)/$(_dst) header-y := $(sort $(header-y) $(unifdef-y))