History

kbuild: prepare headers_* for arch/$ARCH/include

Factor out the headers_*_all support to a seperate shell script and add support for arch specific header files can be located in either arch/$ARCH/include/asm or include/asm-$ARCH/ In "make help" always display the headers_* targets.

Sam Ravnborg committed 18 years ago

Commit 2fb9b1b1 parent db1bec42 files · +63 −27Browse files

Unified · Split

2 files
  1. Makefile +22 −27
  2. scripts/headers.sh +41 −0
Makefile+22−27
@@ -205,6 +205,9 @@ ifeq ($(ARCH),x86_64) · 204 unmodified lines
205205 SRCARCH := x86
206206 endif
207207
208+# Where to locate arch specific headers
209+hdr-arch := $(SRCARCH)
210+
208211 KCONFIG_CONFIG ?= .config
209212
210213 # SHELL used by kbuild
@@ -1014,43 +1017,39 @@ firmware_install: FORCE · 803 unmodified lines
10141017 #Default location for installed headers
10151018 export INSTALL_HDR_PATH = $(objtree)/usr
10161019
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)))
10211020 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)
10221029
10231030 PHONY += __headers
10241031 __headers: include/linux/version.h scripts_basic FORCE
10251032 $(Q)$(MAKE) $(build)=scripts scripts/unifdef
10261033
10271034 PHONY += headers_install_all
1028−headers_install_all: __headers
1029− $(Q)$(MAKE) $(hdr-inst)=include
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
1035+headers_install_all:
1036+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install
10341037
10351038 PHONY += headers_install
10361039 headers_install: __headers
1037− $(if $(wildcard $(srctree)/include/asm-$(SRCARCH)/Kbuild),, \
1038− $(error Headers not exportable for this architecture ($(SRCARCH))))
1040+ $(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \
1041+ $(error Headers not exportable for the $(SRCARCH) architecture))
10391042 $(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)
10411044
10421045 PHONY += headers_check_all
10431046 headers_check_all: headers_install_all
1044− $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
1045− $(Q)set -e; for arch in $(hdr-archs); do \
1046− $(MAKE) SRCARCH=$$arch $(hdr-inst)=include/asm-$$arch HDRCHECK=1 ;\
1047− done
1047+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check
10481048
10491049 PHONY += headers_check
10501050 headers_check: headers_install
10511051 $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
1052− $(Q)$(MAKE) $(hdr-inst)=include/asm-$(SRCARCH) \
1053− dst=include/asm HDRCHECK=1
1052+ $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1
10541053
10551054 # ---------------------------------------------------------------------------
10561055 # Modules
@@ -1234,21 +1233,17 @@ help: · 177 unmodified lines
12341233 @echo ' cscope - Generate cscope index'
12351234 @echo ' kernelrelease - Output the release version string'
12361235 @echo ' kernelversion - Output the version stored in Makefile'
1237− @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
1238− echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
1236+ @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
12391237 echo ' (default: $(INSTALL_HDR_PATH))'; \
1240− fi
1241− @echo ''
1238+ echo ''
12421239 @echo 'Static analysers'
12431240 @echo ' checkstack - Generate a list of stack hogs'
12441241 @echo ' namespacecheck - Name space analysis on compiled kernel'
12451242 @echo ' versioncheck - Sanity check on version.h usage'
12461243 @echo ' includecheck - Check for duplicate included header files'
12471244 @echo ' export_report - List the usages of all exported symbols'
1248− @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
1249− echo ' headers_check - Sanity check on exported headers'; \
1250− fi
1251− @echo ''
1245+ @echo ' headers_check - Sanity check on exported headers'; \
1246+ echo ''
12521247 @echo 'Kernel packaging:'
12531248 @$(MAKE) $(build)=$(package-dir) help
12541249 @echo ''
scripts/headers.sh+41−0
@@ -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+