|
@@ -205,6 +205,9 @@ ifeq ($(ARCH),x86_64)
|
|
SRCARCH := x86
|
|
SRCARCH := x86
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
+# Where to locate arch specific headers
|
|
|
|
+hdr-arch := $(SRCARCH)
|
|
|
|
+
|
|
KCONFIG_CONFIG ?= .config
|
|
KCONFIG_CONFIG ?= .config
|
|
|
|
|
|
# SHELL used by kbuild
|
|
# SHELL used by kbuild
|
|
@@ -326,7 +329,8 @@ AFLAGS_KERNEL =
|
|
# Needed to be compatible with the O= option
|
|
# Needed to be compatible with the O= option
|
|
LINUXINCLUDE := -Iinclude \
|
|
LINUXINCLUDE := -Iinclude \
|
|
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
|
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
|
- -include include/linux/autoconf.h
|
|
|
|
|
|
+ -I$(srctree)/arch/$(hdr-arch)/include \
|
|
|
|
+ -include include/linux/autoconf.h
|
|
|
|
|
|
KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
|
KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
|
|
|
|
|
@@ -922,7 +926,9 @@ ifneq ($(KBUILD_SRC),)
|
|
/bin/false; \
|
|
/bin/false; \
|
|
fi;
|
|
fi;
|
|
$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
|
|
$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
|
|
- $(Q)ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm
|
|
|
|
|
|
+ $(Q)if [ -e $(srctree)/include/asm-$(SRCARCH)/system.h ]; then \
|
|
|
|
+ ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
|
|
|
|
+ fi
|
|
endif
|
|
endif
|
|
|
|
|
|
# prepare2 creates a makefile if using a separate output directory
|
|
# prepare2 creates a makefile if using a separate output directory
|
|
@@ -948,22 +954,34 @@ export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
|
|
|
|
|
|
# The asm symlink changes when $(ARCH) changes.
|
|
# The asm symlink changes when $(ARCH) changes.
|
|
# Detect this and ask user to run make mrproper
|
|
# Detect this and ask user to run make mrproper
|
|
-
|
|
|
|
-include/asm: FORCE
|
|
|
|
- $(Q)set -e; asmlink=`readlink include/asm | cut -d '-' -f 2`; \
|
|
|
|
- if [ -L include/asm ]; then \
|
|
|
|
- if [ "$$asmlink" != "$(SRCARCH)" ]; then \
|
|
|
|
|
|
+define check-symlink
|
|
|
|
+ set -e; \
|
|
|
|
+ if [ -L include/asm ]; then \
|
|
|
|
+ asmlink=`readlink include/asm | cut -d '-' -f 2`; \
|
|
|
|
+ if [ "$$asmlink" != "$(SRCARCH)" ]; then \
|
|
echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
|
|
echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
|
|
echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
|
|
echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
|
|
- exit 1; \
|
|
|
|
- fi; \
|
|
|
|
- else \
|
|
|
|
- echo ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
|
|
|
|
- if [ ! -d include ]; then \
|
|
|
|
- mkdir -p include; \
|
|
|
|
- fi; \
|
|
|
|
- ln -fsn asm-$(SRCARCH) $@; \
|
|
|
|
|
|
+ exit 1; \
|
|
|
|
+ fi; \
|
|
fi
|
|
fi
|
|
|
|
+endef
|
|
|
|
+
|
|
|
|
+# We create the target directory of the symlink if it does
|
|
|
|
+# not exist so the test in chack-symlink works and we have a
|
|
|
|
+# directory for generated filesas used by some architectures.
|
|
|
|
+define create-symlink
|
|
|
|
+ if [ ! -L include/asm ]; then \
|
|
|
|
+ echo ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
|
|
|
|
+ if [ ! -d include/asm-$(SRCARCH) ]; then \
|
|
|
|
+ mkdir -p include/asm-$(SRCARCH); \
|
|
|
|
+ fi; \
|
|
|
|
+ ln -fsn asm-$(SRCARCH) $@; \
|
|
|
|
+ fi
|
|
|
|
+endef
|
|
|
|
+
|
|
|
|
+include/asm: FORCE
|
|
|
|
+ $(Q)$(check-symlink)
|
|
|
|
+ $(Q)$(create-symlink)
|
|
|
|
|
|
# Generate some files
|
|
# Generate some files
|
|
# ---------------------------------------------------------------------------
|
|
# ---------------------------------------------------------------------------
|
|
@@ -1010,36 +1028,43 @@ firmware_install: FORCE
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# ---------------------------------------------------------------------------
|
|
# Kernel headers
|
|
# Kernel headers
|
|
-INSTALL_HDR_PATH=$(objtree)/usr
|
|
|
|
-export INSTALL_HDR_PATH
|
|
|
|
|
|
|
|
-HDRFILTER=generic i386 x86_64
|
|
|
|
-HDRARCHES=$(filter-out $(HDRFILTER),$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
|
|
|
|
|
|
+#Default location for installed headers
|
|
|
|
+export INSTALL_HDR_PATH = $(objtree)/usr
|
|
|
|
|
|
-PHONY += headers_install_all
|
|
|
|
-headers_install_all: include/linux/version.h scripts_basic FORCE
|
|
|
|
|
|
+hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
|
|
|
|
+# Find out where the Kbuild file is located to support
|
|
|
|
+# arch/$(ARCH)/include/asm
|
|
|
|
+hdr-dir = $(strip \
|
|
|
|
+ $(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \
|
|
|
|
+ arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch)))
|
|
|
|
+
|
|
|
|
+# If we do an all arch process set dst to asm-$(hdr-arch)
|
|
|
|
+hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
|
|
|
+
|
|
|
|
+PHONY += __headers
|
|
|
|
+__headers: include/linux/version.h scripts_basic FORCE
|
|
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
|
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
|
- $(Q)for arch in $(HDRARCHES); do \
|
|
|
|
- $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\
|
|
|
|
- done
|
|
|
|
|
|
+
|
|
|
|
+PHONY += headers_install_all
|
|
|
|
+headers_install_all:
|
|
|
|
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install
|
|
|
|
|
|
PHONY += headers_install
|
|
PHONY += headers_install
|
|
-headers_install: include/linux/version.h scripts_basic FORCE
|
|
|
|
- @if [ ! -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
|
|
|
- echo '*** Error: Headers not exportable for this architecture ($(SRCARCH))'; \
|
|
|
|
- exit 1 ; fi
|
|
|
|
- $(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
|
|
|
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include
|
|
|
|
|
|
+headers_install: __headers
|
|
|
|
+ $(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \
|
|
|
|
+ $(error Headers not exportable for the $(SRCARCH) architecture))
|
|
|
|
+ $(Q)$(MAKE) $(hdr-inst)=include
|
|
|
|
+ $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst)
|
|
|
|
|
|
PHONY += headers_check_all
|
|
PHONY += headers_check_all
|
|
headers_check_all: headers_install_all
|
|
headers_check_all: headers_install_all
|
|
- $(Q)for arch in $(HDRARCHES); do \
|
|
|
|
- $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch HDRCHECK=1 ;\
|
|
|
|
- done
|
|
|
|
|
|
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check
|
|
|
|
|
|
PHONY += headers_check
|
|
PHONY += headers_check
|
|
headers_check: headers_install
|
|
headers_check: headers_install
|
|
- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include HDRCHECK=1
|
|
|
|
|
|
+ $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
|
|
|
|
+ $(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# ---------------------------------------------------------------------------
|
|
# Modules
|
|
# Modules
|
|
@@ -1131,7 +1156,7 @@ MRPROPER_FILES += .config .config.old include/asm .version .old_version \
|
|
include/linux/autoconf.h include/linux/version.h \
|
|
include/linux/autoconf.h include/linux/version.h \
|
|
include/linux/utsrelease.h \
|
|
include/linux/utsrelease.h \
|
|
include/linux/bounds.h include/asm*/asm-offsets.h \
|
|
include/linux/bounds.h include/asm*/asm-offsets.h \
|
|
- Module.symvers tags TAGS cscope*
|
|
|
|
|
|
+ Module.symvers Module.markers tags TAGS cscope*
|
|
|
|
|
|
# clean - Delete most, but leave enough to build external modules
|
|
# clean - Delete most, but leave enough to build external modules
|
|
#
|
|
#
|
|
@@ -1150,7 +1175,7 @@ clean: archclean $(clean-dirs)
|
|
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
|
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
|
-o -name '*.symtypes' -o -name 'modules.order' \
|
|
-o -name '*.symtypes' -o -name 'modules.order' \
|
|
- -o -name 'Module.markers' \) \
|
|
|
|
|
|
+ -o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \
|
|
-type f -print | xargs rm -f
|
|
-type f -print | xargs rm -f
|
|
|
|
|
|
# mrproper - Delete all generated files, including .config
|
|
# mrproper - Delete all generated files, including .config
|
|
@@ -1224,21 +1249,17 @@ help:
|
|
@echo ' cscope - Generate cscope index'
|
|
@echo ' cscope - Generate cscope index'
|
|
@echo ' kernelrelease - Output the release version string'
|
|
@echo ' kernelrelease - Output the release version string'
|
|
@echo ' kernelversion - Output the version stored in Makefile'
|
|
@echo ' kernelversion - Output the version stored in Makefile'
|
|
- @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
|
|
|
- echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
|
|
|
|
|
|
+ @echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
|
|
echo ' (default: $(INSTALL_HDR_PATH))'; \
|
|
echo ' (default: $(INSTALL_HDR_PATH))'; \
|
|
- fi
|
|
|
|
- @echo ''
|
|
|
|
|
|
+ echo ''
|
|
@echo 'Static analysers'
|
|
@echo 'Static analysers'
|
|
@echo ' checkstack - Generate a list of stack hogs'
|
|
@echo ' checkstack - Generate a list of stack hogs'
|
|
@echo ' namespacecheck - Name space analysis on compiled kernel'
|
|
@echo ' namespacecheck - Name space analysis on compiled kernel'
|
|
@echo ' versioncheck - Sanity check on version.h usage'
|
|
@echo ' versioncheck - Sanity check on version.h usage'
|
|
@echo ' includecheck - Check for duplicate included header files'
|
|
@echo ' includecheck - Check for duplicate included header files'
|
|
@echo ' export_report - List the usages of all exported symbols'
|
|
@echo ' export_report - List the usages of all exported symbols'
|
|
- @if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
|
|
|
- echo ' headers_check - Sanity check on exported headers'; \
|
|
|
|
- fi
|
|
|
|
- @echo ''
|
|
|
|
|
|
+ @echo ' headers_check - Sanity check on exported headers'; \
|
|
|
|
+ echo ''
|
|
@echo 'Kernel packaging:'
|
|
@echo 'Kernel packaging:'
|
|
@$(MAKE) $(build)=$(package-dir) help
|
|
@$(MAKE) $(build)=$(package-dir) help
|
|
@echo ''
|
|
@echo ''
|
|
@@ -1411,7 +1432,11 @@ define find-sources
|
|
\( -name config -o -name 'asm-*' \) -prune \
|
|
\( -name config -o -name 'asm-*' \) -prune \
|
|
-o -name $1 -print; \
|
|
-o -name $1 -print; \
|
|
for arch in $(ALLINCLUDE_ARCHS) ; do \
|
|
for arch in $(ALLINCLUDE_ARCHS) ; do \
|
|
- find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
|
|
|
|
|
|
+ test -e $(__srctree)include/asm-$${arch} && \
|
|
|
|
+ find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
|
|
|
|
+ -name $1 -print; \
|
|
|
|
+ test -e $(__srctree)arch/$${arch}/include/asm && \
|
|
|
|
+ find $(__srctree)arch/$${arch}/include/asm $(RCS_FIND_IGNORE) \
|
|
-name $1 -print; \
|
|
-name $1 -print; \
|
|
done ; \
|
|
done ; \
|
|
find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
|
|
find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
|