|
@@ -442,8 +442,6 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
|
|
|
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
|
|
|
export KBUILD_ARFLAGS
|
|
|
|
|
|
-export CC_VERSION_TEXT := $(shell $(CC) --version | head -n 1)
|
|
|
-
|
|
|
# When compiling out-of-tree modules, put MODVERDIR in the module
|
|
|
# tree rather than in the kernel tree. The kernel tree might
|
|
|
# even be read-only.
|
|
@@ -514,6 +512,12 @@ ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/cc-can-link.sh $(CC)), y)
|
|
|
export CC_CAN_LINK
|
|
|
endif
|
|
|
|
|
|
+# The expansion should be delayed until arch/$(SRCARCH)/Makefile is included.
|
|
|
+# Some architectures define CROSS_COMPILE in arch/$(SRCARCH)/Makefile.
|
|
|
+# CC_VERSION_TEXT is referenced from Kconfig (so it needs export),
|
|
|
+# and from include/config/auto.conf.cmd to detect the compiler upgrade.
|
|
|
+CC_VERSION_TEXT = $(shell $(CC) --version | head -n 1)
|
|
|
+
|
|
|
ifeq ($(config-targets),1)
|
|
|
# ===========================================================================
|
|
|
# *config targets only - make sure prerequisites are updated, and descend
|
|
@@ -523,7 +527,7 @@ ifeq ($(config-targets),1)
|
|
|
# KBUILD_DEFCONFIG may point out an alternative default configuration
|
|
|
# used for 'make defconfig'
|
|
|
include arch/$(SRCARCH)/Makefile
|
|
|
-export KBUILD_DEFCONFIG KBUILD_KCONFIG
|
|
|
+export KBUILD_DEFCONFIG KBUILD_KCONFIG CC_VERSION_TEXT
|
|
|
|
|
|
config: scripts_basic outputmakefile FORCE
|
|
|
$(Q)$(MAKE) $(build)=scripts/kconfig $@
|
|
@@ -585,12 +589,32 @@ virt-y := virt/
|
|
|
endif # KBUILD_EXTMOD
|
|
|
|
|
|
ifeq ($(dot-config),1)
|
|
|
-# Read in config
|
|
|
-include include/config/auto.conf
|
|
|
+endif
|
|
|
+
|
|
|
+# The all: target is the default when no target is given on the
|
|
|
+# command line.
|
|
|
+# This allow a user to issue only 'make' to build a kernel including modules
|
|
|
+# Defaults to vmlinux, but the arch makefile usually adds further targets
|
|
|
+all: vmlinux
|
|
|
+
|
|
|
+CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \
|
|
|
+ $(call cc-option,-fno-tree-loop-im) \
|
|
|
+ $(call cc-disable-warning,maybe-uninitialized,)
|
|
|
+export CFLAGS_GCOV CFLAGS_KCOV
|
|
|
+
|
|
|
+# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
|
|
|
+# values of the respective KBUILD_* variables
|
|
|
+ARCH_CPPFLAGS :=
|
|
|
+ARCH_AFLAGS :=
|
|
|
+ARCH_CFLAGS :=
|
|
|
+include arch/$(SRCARCH)/Makefile
|
|
|
|
|
|
+ifeq ($(dot-config),1)
|
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
|
-# Read in dependencies to all Kconfig* files, make sure to run
|
|
|
-# oldconfig if changes are detected.
|
|
|
+# Read in dependencies to all Kconfig* files, make sure to run syncconfig if
|
|
|
+# changes are detected. This should be included after arch/$(SRCARCH)/Makefile
|
|
|
+# because some architectures define CROSS_COMPILE there.
|
|
|
-include include/config/auto.conf.cmd
|
|
|
|
|
|
# To avoid any implicit rule to kick in, define an empty command
|
|
@@ -622,24 +646,6 @@ else
|
|
|
include/config/auto.conf: ;
|
|
|
endif # $(dot-config)
|
|
|
|
|
|
-# The all: target is the default when no target is given on the
|
|
|
-# command line.
|
|
|
-# This allow a user to issue only 'make' to build a kernel including modules
|
|
|
-# Defaults to vmlinux, but the arch makefile usually adds further targets
|
|
|
-all: vmlinux
|
|
|
-
|
|
|
-CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \
|
|
|
- $(call cc-option,-fno-tree-loop-im) \
|
|
|
- $(call cc-disable-warning,maybe-uninitialized,)
|
|
|
-export CFLAGS_GCOV CFLAGS_KCOV
|
|
|
-
|
|
|
-# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
|
|
|
-# values of the respective KBUILD_* variables
|
|
|
-ARCH_CPPFLAGS :=
|
|
|
-ARCH_AFLAGS :=
|
|
|
-ARCH_CFLAGS :=
|
|
|
-include arch/$(SRCARCH)/Makefile
|
|
|
-
|
|
|
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
|
|
|
KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
|
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation)
|