Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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
<dwmw2@infradead.org>.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: David Woodhouse <dwmw2@infradead.org>

+16 -22
+13 -11
Makefile
··· 1014 1014 #Default location for installed headers 1015 1015 export INSTALL_HDR_PATH = $(objtree)/usr 1016 1016 1017 - hdr-filter := generic um ppc 1017 + hdr-filter := generic um ppc sparc64 cris 1018 1018 hdr-archs := $(filter-out $(hdr-filter), \ 1019 1019 $(patsubst $(srctree)/include/asm-%/Kbuild,%, \ 1020 1020 $(wildcard $(srctree)/include/asm-*/Kbuild))) ··· 1026 1026 1027 1027 PHONY += headers_install_all 1028 1028 headers_install_all: __headers 1029 + $(Q)$(MAKE) $(hdr-inst)=include 1029 1030 $(Q)set -e; for arch in $(hdr-archs); do \ 1030 - $(MAKE) ARCH=$$arch SRCARCH=$$arch $(hdr-inst)=include \ 1031 - BIASMDIR=-bi-$$arch ;\ 1031 + $(MAKE) $(hdr-inst)=include/asm-$$arch \ 1032 + SRCARCH=$$arch dst=include/asm-$$arch; \ 1032 1033 done 1033 1034 1034 1035 PHONY += headers_install 1035 1036 headers_install: __headers 1036 - $(Q)if [ ! -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \ 1037 - echo '*** Error: Headers not exportable for this architecture ($(SRCARCH))'; \ 1038 - exit 1 ; \ 1039 - fi 1040 - $(Q)$(MAKE) $(hdr-inst)=include ARCH=$(SRCARCH) 1037 + $(if $(wildcard $(srctree)/include/asm-$(SRCARCH)/Kbuild),, \ 1038 + $(error Headers not exportable for this architecture ($(SRCARCH)))) 1039 + $(Q)$(MAKE) $(hdr-inst)=include 1040 + $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) dst=include/asm 1041 1041 1042 1042 PHONY += headers_check_all 1043 1043 headers_check_all: headers_install_all 1044 + $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 1044 1045 $(Q)set -e; for arch in $(hdr-archs); do \ 1045 - $(MAKE) ARCH=$$arch SRCARCH=$$arch $(hdr-inst)=include \ 1046 - BIASMDIR=-bi-$$arch HDRCHECK=1 ;\ 1046 + $(MAKE) SRCARCH=$$arch $(hdr-inst)=include/asm-$$arch HDRCHECK=1 ;\ 1047 1047 done 1048 1048 1049 1049 PHONY += headers_check 1050 1050 headers_check: headers_install 1051 - $(Q)$(MAKE) $(hdr-inst)=include ARCH=$(SRCARCH) HDRCHECK=1 1051 + $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 1052 + $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) \ 1053 + dst=include/asm HDRCHECK=1 1052 1054 1053 1055 # --------------------------------------------------------------------------- 1054 1056 # Modules
+3 -2
include/Kbuild
··· 1 + # Top-level Makefile calls into asm-$(ARCH) 2 + # List only non-arch directories below 3 + 1 4 header-y += asm-generic/ 2 5 header-y += linux/ 3 6 header-y += sound/ ··· 8 5 header-y += rdma/ 9 6 header-y += video/ 10 7 header-y += drm/ 11 - 12 - header-y += asm-$(ARCH)/
-9
scripts/Makefile.headersinst
··· 28 28 29 29 include scripts/Kbuild.include 30 30 31 - # If this is include/asm-$(ARCH) then override $(_dst) so that 32 - # we install to include/asm directly. 33 - # Unless $(BIASMDIR) is set, in which case we're probably doing 34 - # a 'headers_install_all' build and we should keep the -$(ARCH) 35 - # in the directory name. 36 - ifeq ($(obj),include/asm-$(ARCH)$(BIASMDIR)) 37 - _dst := include/asm 38 - endif 39 - 40 31 install := $(INSTALL_HDR_PATH)/$(_dst) 41 32 42 33 header-y := $(sort $(header-y) $(unifdef-y))