mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
![Michal Marek](/assets/img/avatar_default.png)
We cannot detect clang before including the arch Makefile, because that can set the default cross compiler. We also cannot detect clang after including the arch Makefile, because powerpc wants to know about clang. Solve this by using an deferred variable. This costs us a few shell invocations, but this is only a constant number. Reported-by: Behan Webster <behanw@converseincode.com> Reported-by: Anton Blanchard <anton@samba.org> Signed-off-by: Michal Marek <mmarek@suse.com>
68 lines
2.4 KiB
Makefile
68 lines
2.4 KiB
Makefile
# ==========================================================================
|
|
#
|
|
# make W=... settings
|
|
#
|
|
# W=1 - warnings that may be relevant and does not occur too often
|
|
# W=2 - warnings that occur quite often but may still be relevant
|
|
# W=3 - the more obscure warnings, can most likely be ignored
|
|
#
|
|
# $(call cc-option, -W...) handles gcc -W.. options which
|
|
# are not supported by all versions of the compiler
|
|
# ==========================================================================
|
|
|
|
ifeq ("$(origin W)", "command line")
|
|
export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
|
|
endif
|
|
|
|
ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
|
|
warning- := $(empty)
|
|
|
|
warning-1 := -Wextra -Wunused -Wno-unused-parameter
|
|
warning-1 += -Wmissing-declarations
|
|
warning-1 += -Wmissing-format-attribute
|
|
warning-1 += $(call cc-option, -Wmissing-prototypes)
|
|
warning-1 += -Wold-style-definition
|
|
warning-1 += $(call cc-option, -Wmissing-include-dirs)
|
|
warning-1 += $(call cc-option, -Wunused-but-set-variable)
|
|
warning-1 += $(call cc-disable-warning, missing-field-initializers)
|
|
|
|
warning-2 := -Waggregate-return
|
|
warning-2 += -Wcast-align
|
|
warning-2 += -Wdisabled-optimization
|
|
warning-2 += -Wnested-externs
|
|
warning-2 += -Wshadow
|
|
warning-2 += $(call cc-option, -Wlogical-op)
|
|
warning-2 += $(call cc-option, -Wmissing-field-initializers)
|
|
|
|
warning-3 := -Wbad-function-cast
|
|
warning-3 += -Wcast-qual
|
|
warning-3 += -Wconversion
|
|
warning-3 += -Wpacked
|
|
warning-3 += -Wpadded
|
|
warning-3 += -Wpointer-arith
|
|
warning-3 += -Wredundant-decls
|
|
warning-3 += -Wswitch-default
|
|
warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
|
|
warning-3 += $(call cc-option, -Wvla)
|
|
|
|
warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
|
|
|
ifeq ("$(strip $(warning))","")
|
|
$(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
|
|
endif
|
|
|
|
KBUILD_CFLAGS += $(warning)
|
|
else
|
|
|
|
ifeq ($(cc-name),clang)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, initializer-overrides)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-value)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, format)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, unknown-warning-option)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, sign-compare)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, format-zero-length)
|
|
KBUILD_CFLAGS += $(call cc-disable-warning, uninitialized)
|
|
endif
|
|
endif
|