|
@@ -132,7 +132,7 @@ ifneq ($(KBUILD_OUTPUT),)
|
|
|
# check that the output directory actually exists
|
|
|
saved-output := $(KBUILD_OUTPUT)
|
|
|
KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
|
|
|
- && /bin/pwd)
|
|
|
+ && pwd)
|
|
|
$(if $(KBUILD_OUTPUT),, \
|
|
|
$(error failed to create output directory "$(saved-output)"))
|
|
|
|
|
@@ -474,6 +474,38 @@ ifneq ($(KBUILD_SRC),)
|
|
|
$(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
|
|
|
endif
|
|
|
|
|
|
+ifeq ($(cc-name),clang)
|
|
|
+ifneq ($(CROSS_COMPILE),)
|
|
|
+CLANG_TARGET := --target=$(notdir $(CROSS_COMPILE:%-=%))
|
|
|
+GCC_TOOLCHAIN := $(realpath $(dir $(shell which $(LD)))/..)
|
|
|
+endif
|
|
|
+ifneq ($(GCC_TOOLCHAIN),)
|
|
|
+CLANG_GCC_TC := --gcc-toolchain=$(GCC_TOOLCHAIN)
|
|
|
+endif
|
|
|
+KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
|
|
+KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
|
|
+KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
|
|
+# Quiet clang warning: comparison of unsigned expression < 0 is always false
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
|
|
|
+# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
|
|
|
+# source of a reference will be _MergedGlobals and not on of the whitelisted names.
|
|
|
+# See modpost pattern 2
|
|
|
+KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
|
|
|
+KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
|
|
|
+KBUILD_CFLAGS += $(call cc-option, -no-integrated-as)
|
|
|
+KBUILD_AFLAGS += $(call cc-option, -no-integrated-as)
|
|
|
+else
|
|
|
+
|
|
|
+# These warnings generated too much noise in a regular build.
|
|
|
+# Use make W=1 to enable them (see scripts/Makefile.extrawarn)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
|
|
+endif
|
|
|
+
|
|
|
ifeq ($(config-targets),1)
|
|
|
# ===========================================================================
|
|
|
# *config targets only - make sure prerequisites are updated, and descend
|
|
@@ -684,38 +716,6 @@ ifdef CONFIG_CC_STACKPROTECTOR
|
|
|
endif
|
|
|
KBUILD_CFLAGS += $(stackp-flag)
|
|
|
|
|
|
-ifeq ($(cc-name),clang)
|
|
|
-ifneq ($(CROSS_COMPILE),)
|
|
|
-CLANG_TARGET := --target=$(notdir $(CROSS_COMPILE:%-=%))
|
|
|
-GCC_TOOLCHAIN := $(realpath $(dir $(shell which $(LD)))/..)
|
|
|
-endif
|
|
|
-ifneq ($(GCC_TOOLCHAIN),)
|
|
|
-CLANG_GCC_TC := --gcc-toolchain=$(GCC_TOOLCHAIN)
|
|
|
-endif
|
|
|
-KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
|
|
-KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
|
|
|
-KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
|
|
|
-# Quiet clang warning: comparison of unsigned expression < 0 is always false
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
|
|
|
-# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
|
|
|
-# source of a reference will be _MergedGlobals and not on of the whitelisted names.
|
|
|
-# See modpost pattern 2
|
|
|
-KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
|
|
|
-KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
|
|
|
-KBUILD_CFLAGS += $(call cc-option, -no-integrated-as)
|
|
|
-KBUILD_AFLAGS += $(call cc-option, -no-integrated-as)
|
|
|
-else
|
|
|
-
|
|
|
-# These warnings generated too much noise in a regular build.
|
|
|
-# Use make W=1 to enable them (see scripts/Makefile.extrawarn)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
|
|
-KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
|
|
-endif
|
|
|
-
|
|
|
ifdef CONFIG_FRAME_POINTER
|
|
|
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
|
else
|
|
@@ -1009,7 +1009,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
|
|
|
|
|
|
PHONY += $(vmlinux-dirs)
|
|
|
$(vmlinux-dirs): prepare scripts
|
|
|
- $(Q)$(MAKE) $(build)=$@
|
|
|
+ $(Q)$(MAKE) $(build)=$@ need-builtin=1
|
|
|
|
|
|
define filechk_kernel.release
|
|
|
echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
|
@@ -1337,8 +1337,9 @@ package-dir := scripts/package
|
|
|
$(Q)$(MAKE) $(build)=$(package-dir) $@
|
|
|
%pkg: include/config/kernel.release FORCE
|
|
|
$(Q)$(MAKE) $(build)=$(package-dir) $@
|
|
|
-rpm: include/config/kernel.release FORCE
|
|
|
- $(Q)$(MAKE) $(build)=$(package-dir) $@
|
|
|
+rpm: rpm-pkg
|
|
|
+ @echo " WARNING: \"rpm\" target will be removed after Linux 4.18"
|
|
|
+ @echo " Please use \"rpm-pkg\" instead."
|
|
|
|
|
|
|
|
|
# Brief documentation of the typical targets used
|
|
@@ -1546,9 +1547,9 @@ clean: $(clean-dirs)
|
|
|
$(call cmd,rmdirs)
|
|
|
$(call cmd,rmfiles)
|
|
|
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
|
|
|
- \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
|
|
+ \( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \
|
|
|
-o -name '*.ko.*' -o -name '*.dtb' -o -name '*.dtb.S' \
|
|
|
- -o -name '*.dwo' \
|
|
|
+ -o -name '*.dwo' -o -name '*.lst' \
|
|
|
-o -name '*.su' \
|
|
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
|
|
-o -name '*.symtypes' -o -name 'modules.order' \
|