1*6419e144SMasahiro Yamada# ========================================================================== 2*6419e144SMasahiro Yamada# 3*6419e144SMasahiro Yamada# make W=... settings 4*6419e144SMasahiro Yamada# 5*6419e144SMasahiro Yamada# W=1 - warnings that may be relevant and does not occur too often 6*6419e144SMasahiro Yamada# W=2 - warnings that occur quite often but may still be relevant 7*6419e144SMasahiro Yamada# W=3 - the more obscure warnings, can most likely be ignored 8*6419e144SMasahiro Yamada# 9*6419e144SMasahiro Yamada# $(call cc-option, -W...) handles gcc -W.. options which 10*6419e144SMasahiro Yamada# are not supported by all versions of the compiler 11*6419e144SMasahiro Yamada# ========================================================================== 12*6419e144SMasahiro Yamada 13*6419e144SMasahiro Yamadaifeq ("$(origin W)", "command line") 14*6419e144SMasahiro Yamada export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) 15*6419e144SMasahiro Yamadaendif 16*6419e144SMasahiro Yamada 17*6419e144SMasahiro Yamadaifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS 18*6419e144SMasahiro Yamadawarning- := $(empty) 19*6419e144SMasahiro Yamada 20*6419e144SMasahiro Yamadawarning-1 := -Wextra -Wunused -Wno-unused-parameter 21*6419e144SMasahiro Yamadawarning-1 += -Wmissing-declarations 22*6419e144SMasahiro Yamadawarning-1 += -Wmissing-format-attribute 23*6419e144SMasahiro Yamadawarning-1 += $(call cc-option, -Wmissing-prototypes) 24*6419e144SMasahiro Yamadawarning-1 += -Wold-style-definition 25*6419e144SMasahiro Yamadawarning-1 += $(call cc-option, -Wmissing-include-dirs) 26*6419e144SMasahiro Yamadawarning-1 += $(call cc-option, -Wunused-but-set-variable) 27*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, missing-field-initializers) 28*6419e144SMasahiro Yamada 29*6419e144SMasahiro Yamada# Clang 30*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, initializer-overrides) 31*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, unused-value) 32*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, format) 33*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, unknown-warning-option) 34*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, sign-compare) 35*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, format-zero-length) 36*6419e144SMasahiro Yamadawarning-1 += $(call cc-disable-warning, uninitialized) 37*6419e144SMasahiro Yamadawarning-1 += $(call cc-option, -fcatch-undefined-behavior) 38*6419e144SMasahiro Yamada 39*6419e144SMasahiro Yamadawarning-2 := -Waggregate-return 40*6419e144SMasahiro Yamadawarning-2 += -Wcast-align 41*6419e144SMasahiro Yamadawarning-2 += -Wdisabled-optimization 42*6419e144SMasahiro Yamadawarning-2 += -Wnested-externs 43*6419e144SMasahiro Yamadawarning-2 += -Wshadow 44*6419e144SMasahiro Yamadawarning-2 += $(call cc-option, -Wlogical-op) 45*6419e144SMasahiro Yamadawarning-2 += $(call cc-option, -Wmissing-field-initializers) 46*6419e144SMasahiro Yamada 47*6419e144SMasahiro Yamadawarning-3 := -Wbad-function-cast 48*6419e144SMasahiro Yamadawarning-3 += -Wcast-qual 49*6419e144SMasahiro Yamadawarning-3 += -Wconversion 50*6419e144SMasahiro Yamadawarning-3 += -Wpacked 51*6419e144SMasahiro Yamadawarning-3 += -Wpadded 52*6419e144SMasahiro Yamadawarning-3 += -Wpointer-arith 53*6419e144SMasahiro Yamadawarning-3 += -Wredundant-decls 54*6419e144SMasahiro Yamadawarning-3 += -Wswitch-default 55*6419e144SMasahiro Yamadawarning-3 += $(call cc-option, -Wpacked-bitfield-compat) 56*6419e144SMasahiro Yamadawarning-3 += $(call cc-option, -Wvla) 57*6419e144SMasahiro Yamada 58*6419e144SMasahiro Yamadawarning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) 59*6419e144SMasahiro Yamadawarning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) 60*6419e144SMasahiro Yamadawarning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) 61*6419e144SMasahiro Yamada 62*6419e144SMasahiro Yamadaifeq ("$(strip $(warning))","") 63*6419e144SMasahiro Yamada $(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown) 64*6419e144SMasahiro Yamadaendif 65*6419e144SMasahiro Yamada 66*6419e144SMasahiro YamadaKBUILD_CFLAGS += $(warning) 67*6419e144SMasahiro Yamadaendif 68