|
@@ -103,7 +103,7 @@ ifeq ("$(origin O)", "command line")
|
|
|
endif
|
|
|
|
|
|
ifeq ("$(origin W)", "command line")
|
|
|
- export KBUILD_ENABLE_EXTRA_GCC_CHECKS := 1
|
|
|
+ export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
|
|
|
endif
|
|
|
|
|
|
# That's our default target when none is given on the command line
|
|
@@ -349,7 +349,8 @@ CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
|
|
|
|
|
|
# Use LINUXINCLUDE when you must reference the include/ directory.
|
|
|
# Needed to be compatible with the O= option
|
|
|
-LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include -Iinclude \
|
|
|
+LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \
|
|
|
+ -Iarch/$(hdr-arch)/include/generated -Iinclude \
|
|
|
$(if $(KBUILD_SRC), -I$(srctree)/include) \
|
|
|
-include include/generated/autoconf.h
|
|
|
|
|
@@ -382,6 +383,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV
|
|
|
export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
|
|
|
export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
|
|
|
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
|
|
|
+export KBUILD_ARFLAGS
|
|
|
|
|
|
# When compiling out-of-tree modules, put MODVERDIR in the module
|
|
|
# tree rather than in the kernel tree. The kernel tree might
|
|
@@ -416,6 +418,12 @@ ifneq ($(KBUILD_SRC),)
|
|
|
$(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
|
|
|
endif
|
|
|
|
|
|
+# Support for using generic headers in asm-generic
|
|
|
+PHONY += asm-generic
|
|
|
+asm-generic:
|
|
|
+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.asm-generic \
|
|
|
+ obj=arch/$(SRCARCH)/include/generated/asm
|
|
|
+
|
|
|
# To make sure we do not include .config for any of the *config targets
|
|
|
# catch them early, and hand them over to scripts/kconfig/Makefile
|
|
|
# It is allowed to specify more targets when calling make, including
|
|
@@ -559,6 +567,10 @@ ifndef CONFIG_CC_STACKPROTECTOR
|
|
|
KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
|
|
|
endif
|
|
|
|
|
|
+# This warning generated too much noise in a regular build.
|
|
|
+# Use make W=1 to enable this warning (see scripts/Makefile.build)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
|
|
+
|
|
|
ifdef CONFIG_FRAME_POINTER
|
|
|
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
|
else
|
|
@@ -604,7 +616,7 @@ CHECKFLAGS += $(NOSTDINC_FLAGS)
|
|
|
KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
|
|
|
|
|
|
# disable pointer signed / unsigned warnings in gcc 4.0
|
|
|
-KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign)
|
|
|
|
|
|
# disable invalid "can't wrap" optimizations for signed / pointers
|
|
|
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
|
|
@@ -612,6 +624,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
|
|
|
# conserve stack if available
|
|
|
KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
|
|
|
|
|
|
+# use the deterministic mode of AR if available
|
|
|
+KBUILD_ARFLAGS := $(call ar-option,D)
|
|
|
+
|
|
|
# check for 'asm goto'
|
|
|
ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
|
|
|
KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
|
|
@@ -797,15 +812,17 @@ ifdef CONFIG_KALLSYMS
|
|
|
# o The correct .tmp_kallsyms2.o is linked into the final vmlinux.
|
|
|
# o Verify that the System.map from vmlinux matches the map from
|
|
|
# .tmp_vmlinux2, just in case we did not generate kallsyms correctly.
|
|
|
-# o If CONFIG_KALLSYMS_EXTRA_PASS is set, do an extra pass using
|
|
|
+# o If 'make KALLSYMS_EXTRA_PASS=1" was used, do an extra pass using
|
|
|
# .tmp_vmlinux3 and .tmp_kallsyms3.o. This is only meant as a
|
|
|
# temporary bypass to allow the kernel to be built while the
|
|
|
# maintainers work out what went wrong with kallsyms.
|
|
|
|
|
|
-ifdef CONFIG_KALLSYMS_EXTRA_PASS
|
|
|
-last_kallsyms := 3
|
|
|
-else
|
|
|
last_kallsyms := 2
|
|
|
+
|
|
|
+ifdef KALLSYMS_EXTRA_PASS
|
|
|
+ifneq ($(KALLSYMS_EXTRA_PASS),0)
|
|
|
+last_kallsyms := 3
|
|
|
+endif
|
|
|
endif
|
|
|
|
|
|
kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
|
|
@@ -816,7 +833,8 @@ define verify_kallsyms
|
|
|
$(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map
|
|
|
$(Q)cmp -s System.map .tmp_System.map || \
|
|
|
(echo Inconsistent kallsyms data; \
|
|
|
- echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
|
|
|
+ echo This is a bug - please report about it; \
|
|
|
+ echo Try "make KALLSYMS_EXTRA_PASS=1" as a workaround; \
|
|
|
rm .tmp_kallsyms* ; /bin/false )
|
|
|
endef
|
|
|
|
|
@@ -947,7 +965,7 @@ ifneq ($(KBUILD_SRC),)
|
|
|
endif
|
|
|
|
|
|
# prepare2 creates a makefile if using a separate output directory
|
|
|
-prepare2: prepare3 outputmakefile
|
|
|
+prepare2: prepare3 outputmakefile asm-generic
|
|
|
|
|
|
prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
|
|
|
include/config/auto.conf
|
|
@@ -1021,7 +1039,7 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
|
|
|
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
|
|
|
|
|
PHONY += __headers
|
|
|
-__headers: include/linux/version.h scripts_basic FORCE
|
|
|
+__headers: include/linux/version.h scripts_basic asm-generic FORCE
|
|
|
$(Q)$(MAKE) $(build)=scripts build_unifdef
|
|
|
|
|
|
PHONY += headers_install_all
|
|
@@ -1136,7 +1154,8 @@ CLEAN_FILES += vmlinux System.map \
|
|
|
.tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
|
|
|
|
|
|
# Directories & files removed with 'make mrproper'
|
|
|
-MRPROPER_DIRS += include/config usr/include include/generated
|
|
|
+MRPROPER_DIRS += include/config usr/include include/generated \
|
|
|
+ arch/*/include/generated
|
|
|
MRPROPER_FILES += .config .config.old .version .old_version \
|
|
|
include/linux/version.h \
|
|
|
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
|
|
@@ -1267,7 +1286,11 @@ help:
|
|
|
@echo ' make O=dir [targets] Locate all output files in "dir", including .config'
|
|
|
@echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
|
|
|
@echo ' make C=2 [targets] Force check of all c source with $$CHECK'
|
|
|
- @echo ' make W=1 [targets] Enable extra gcc checks'
|
|
|
+ @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
|
|
|
+ @echo ' 1: warnings which may be relevant and do not occur too often'
|
|
|
+ @echo ' 2: warnings which occur quite often but may still be relevant'
|
|
|
+ @echo ' 3: more obscure warnings, can most likely be ignored'
|
|
|
+ @echo ' Multiple levels can be combined with W=12 or W=123'
|
|
|
@echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
|
|
|
@echo ''
|
|
|
@echo 'Execute "make" or "make all" to build all targets marked with [*] '
|
|
@@ -1291,6 +1314,7 @@ $(help-board-dirs): help-%:
|
|
|
# Documentation targets
|
|
|
# ---------------------------------------------------------------------------
|
|
|
%docs: scripts_basic FORCE
|
|
|
+ $(Q)$(MAKE) $(build)=scripts build_docproc
|
|
|
$(Q)$(MAKE) $(build)=Documentation/DocBook $@
|
|
|
|
|
|
else # KBUILD_EXTMOD
|
|
@@ -1375,7 +1399,7 @@ endif # KBUILD_EXTMOD
|
|
|
clean: $(clean-dirs)
|
|
|
$(call cmd,rmdirs)
|
|
|
$(call cmd,rmfiles)
|
|
|
- @find $(or $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
|
|
|
+ @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
|
|
|
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
|
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
|
|
-o -name '*.symtypes' -o -name 'modules.order' \
|