diff options
-rw-r--r-- | Makefile | 49 | ||||
-rwxr-xr-x | scripts/headers.sh | 41 |
2 files changed, 63 insertions, 27 deletions
@@ -205,6 +205,9 @@ ifeq ($(ARCH),x86_64) | |||
205 | SRCARCH := x86 | 205 | SRCARCH := x86 |
206 | endif | 206 | endif |
207 | 207 | ||
208 | # Where to locate arch specific headers | ||
209 | hdr-arch := $(SRCARCH) | ||
210 | |||
208 | KCONFIG_CONFIG ?= .config | 211 | KCONFIG_CONFIG ?= .config |
209 | 212 | ||
210 | # SHELL used by kbuild | 213 | # SHELL used by kbuild |
@@ -1014,43 +1017,39 @@ firmware_install: FORCE | |||
1014 | #Default location for installed headers | 1017 | #Default location for installed headers |
1015 | export INSTALL_HDR_PATH = $(objtree)/usr | 1018 | export INSTALL_HDR_PATH = $(objtree)/usr |
1016 | 1019 | ||
1017 | hdr-filter := generic um ppc sparc64 cris | ||
1018 | hdr-archs := $(filter-out $(hdr-filter), \ | ||
1019 | $(patsubst $(srctree)/include/asm-%/Kbuild,%, \ | ||
1020 | $(wildcard $(srctree)/include/asm-*/Kbuild))) | ||
1021 | hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj | 1020 | hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj |
1021 | # Find out where the Kbuild file is located to support | ||
1022 | # arch/$(ARCH)/include/asm | ||
1023 | hdr-dir = $(strip \ | ||
1024 | $(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \ | ||
1025 | arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch))) | ||
1026 | |||
1027 | # If we do an all arch process set dst to asm-$(hdr-arch) | ||
1028 | hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm) | ||
1022 | 1029 | ||
1023 | PHONY += __headers | 1030 | PHONY += __headers |
1024 | __headers: include/linux/version.h scripts_basic FORCE | 1031 | __headers: include/linux/version.h scripts_basic FORCE |
1025 | $(Q)$(MAKE) $(build)=scripts scripts/unifdef | 1032 | $(Q)$(MAKE) $(build)=scripts scripts/unifdef |
1026 | 1033 | ||
1027 | PHONY += headers_install_all | 1034 | PHONY += headers_install_all |
1028 | headers_install_all: __headers | 1035 | headers_install_all: |
1029 | $(Q)$(MAKE) $(hdr-inst)=include | 1036 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install |
1030 | $(Q)set -e; for arch in $(hdr-archs); do \ | ||
1031 | $(MAKE) $(hdr-inst)=include/asm-$$arch \ | ||
1032 | SRCARCH=$$arch dst=include/asm-$$arch; \ | ||
1033 | done | ||
1034 | 1037 | ||
1035 | PHONY += headers_install | 1038 | PHONY += headers_install |
1036 | headers_install: __headers | 1039 | headers_install: __headers |
1037 | $(if $(wildcard $(srctree)/include/asm-$(SRCARCH)/Kbuild),, \ | 1040 | $(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \ |
1038 | $(error Headers not exportable for this architecture ($(SRCARCH)))) | 1041 | $(error Headers not exportable for the $(SRCARCH) architecture)) |
1039 | $(Q)$(MAKE) $(hdr-inst)=include | 1042 | $(Q)$(MAKE) $(hdr-inst)=include |
1040 | $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) dst=include/asm | 1043 | $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) |
1041 | 1044 | ||
1042 | PHONY += headers_check_all | 1045 | PHONY += headers_check_all |
1043 | headers_check_all: headers_install_all | 1046 | headers_check_all: headers_install_all |
1044 | $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 | 1047 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check |
1045 | $(Q)set -e; for arch in $(hdr-archs); do \ | ||
1046 | $(MAKE) SRCARCH=$$arch $(hdr-inst)=include/asm-$$arch HDRCHECK=1 ;\ | ||
1047 | done | ||
1048 | 1048 | ||
1049 | PHONY += headers_check | 1049 | PHONY += headers_check |
1050 | headers_check: headers_install | 1050 | headers_check: headers_install |
1051 | $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 | 1051 | $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 |
1052 | $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) \ | 1052 | $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1 |
1053 | dst=include/asm HDRCHECK=1 | ||
1054 | 1053 | ||
1055 | # --------------------------------------------------------------------------- | 1054 | # --------------------------------------------------------------------------- |
1056 | # Modules | 1055 | # Modules |
@@ -1234,21 +1233,17 @@ help: | |||
1234 | @echo ' cscope - Generate cscope index' | 1233 | @echo ' cscope - Generate cscope index' |
1235 | @echo ' kernelrelease - Output the release version string' | 1234 | @echo ' kernelrelease - Output the release version string' |
1236 | @echo ' kernelversion - Output the version stored in Makefile' | 1235 | @echo ' kernelversion - Output the version stored in Makefile' |
1237 | @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \ | 1236 | @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ |
1238 | echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \ | ||
1239 | echo ' (default: $(INSTALL_HDR_PATH))'; \ | 1237 | echo ' (default: $(INSTALL_HDR_PATH))'; \ |
1240 | fi | 1238 | echo '' |
1241 | @echo '' | ||
1242 | @echo 'Static analysers' | 1239 | @echo 'Static analysers' |
1243 | @echo ' checkstack - Generate a list of stack hogs' | 1240 | @echo ' checkstack - Generate a list of stack hogs' |
1244 | @echo ' namespacecheck - Name space analysis on compiled kernel' | 1241 | @echo ' namespacecheck - Name space analysis on compiled kernel' |
1245 | @echo ' versioncheck - Sanity check on version.h usage' | 1242 | @echo ' versioncheck - Sanity check on version.h usage' |
1246 | @echo ' includecheck - Check for duplicate included header files' | 1243 | @echo ' includecheck - Check for duplicate included header files' |
1247 | @echo ' export_report - List the usages of all exported symbols' | 1244 | @echo ' export_report - List the usages of all exported symbols' |
1248 | @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \ | 1245 | @echo ' headers_check - Sanity check on exported headers'; \ |
1249 | echo ' headers_check - Sanity check on exported headers'; \ | 1246 | echo '' |
1250 | fi | ||
1251 | @echo '' | ||
1252 | @echo 'Kernel packaging:' | 1247 | @echo 'Kernel packaging:' |
1253 | @$(MAKE) $(build)=$(package-dir) help | 1248 | @$(MAKE) $(build)=$(package-dir) help |
1254 | @echo '' | 1249 | @echo '' |
diff --git a/scripts/headers.sh b/scripts/headers.sh new file mode 100755 index 000000000000..d33426f866db --- /dev/null +++ b/scripts/headers.sh | |||
@@ -0,0 +1,41 @@ | |||
1 | #!/bin/sh | ||
2 | # Run headers_$1 command for all suitable architectures | ||
3 | |||
4 | # Stop on error | ||
5 | set -e | ||
6 | |||
7 | do_command() | ||
8 | { | ||
9 | if [ -f ${srctree}/arch/$2/include/asm/Kbuild ]; then | ||
10 | make ARCH=$2 KBUILD_HEADERS=$1 headers_$1 | ||
11 | elif [ -f ${srctree}/include/asm-$2/Kbuild ]; then | ||
12 | make ARCH=$2 KBUILD_HEADERS=$1 headers_$1 | ||
13 | else | ||
14 | printf "Ignoring arch: %s\n" ${arch} | ||
15 | fi | ||
16 | } | ||
17 | |||
18 | # Do not try this architecture | ||
19 | drop="generic um ppc sparc64 cris" | ||
20 | |||
21 | archs=$(ls ${srctree}/arch) | ||
22 | |||
23 | for arch in ${archs}; do | ||
24 | case ${arch} in | ||
25 | um) # no userspace export | ||
26 | ;; | ||
27 | ppc) # headers exported by powerpc | ||
28 | ;; | ||
29 | sparc64) # headers exported by sparc | ||
30 | ;; | ||
31 | cris) # headers export are known broken | ||
32 | ;; | ||
33 | *) | ||
34 | if [ -d ${srctree}/arch/${arch} ]; then | ||
35 | do_command $1 ${arch} | ||
36 | fi | ||
37 | ;; | ||
38 | esac | ||
39 | done | ||
40 | |||
41 | |||