1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2a86fe353SMasahiro Yamada# ========================================================================== 3a86fe353SMasahiro Yamada# make W=... settings 4a86fe353SMasahiro Yamada# 5*64a91907SMasahiro Yamada# There are three warning groups enabled by W=1, W=2, W=3. 6*64a91907SMasahiro Yamada# They are independent, and can be combined like W=12 or W=123. 7a86fe353SMasahiro Yamada# ========================================================================== 8a86fe353SMasahiro Yamada 9321cb030SXiongfeng WangKBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned) 10321cb030SXiongfeng Wang 11a86fe353SMasahiro Yamadaifeq ("$(origin W)", "command line") 12a86fe353SMasahiro Yamada export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) 13a86fe353SMasahiro Yamadaendif 14a86fe353SMasahiro Yamada 15*64a91907SMasahiro Yamada# 16*64a91907SMasahiro Yamada# W=1 - warnings which may be relevant and do not occur too often 17*64a91907SMasahiro Yamada# 18*64a91907SMasahiro Yamadaifneq ($(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)),) 19a86fe353SMasahiro Yamada 20*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter 21*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-declarations 22*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-format-attribute 23*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-prototypes 24*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wold-style-definition 25*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-include-dirs 26*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable) 27*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable) 28*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned) 29*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation) 304c8dd95aSMasahiro Yamada# The following turn off the warnings enabled by -Wextra 31*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wno-missing-field-initializers 32*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wno-sign-compare 33a86fe353SMasahiro Yamada 3426ea6bb1SBehan Websterelse 3526ea6bb1SBehan Webster 36*64a91907SMasahiro Yamada# Some diagnostics enabled by default are noisy. 37*64a91907SMasahiro Yamada# Suppress them by using -Wno... except for W=1. 38*64a91907SMasahiro Yamada 39076f421dSMasahiro Yamadaifdef CONFIG_CC_IS_CLANG 40a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-initializer-overrides 41a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-format 42a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-sign-compare 43a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-format-zero-length 4426ea6bb1SBehan Websterendif 45*64a91907SMasahiro Yamada 46*64a91907SMasahiro Yamadaendif 47*64a91907SMasahiro Yamada 48*64a91907SMasahiro Yamada# 49*64a91907SMasahiro Yamada# W=2 - warnings which occur quite often but may still be relevant 50*64a91907SMasahiro Yamada# 51*64a91907SMasahiro Yamadaifneq ($(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)),) 52*64a91907SMasahiro Yamada 53*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wcast-align 54*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wdisabled-optimization 55*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wnested-externs 56*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wshadow 57*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wlogical-op) 58*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-field-initializers 59*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wsign-compare 60*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized) 61*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-macros) 62*64a91907SMasahiro Yamada 63*64a91907SMasahiro Yamadaendif 64*64a91907SMasahiro Yamada 65*64a91907SMasahiro Yamada# 66*64a91907SMasahiro Yamada# W=3 - more obscure warnings, can most likely be ignored 67*64a91907SMasahiro Yamada# 68*64a91907SMasahiro Yamadaifneq ($(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)),) 69*64a91907SMasahiro Yamada 70*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wbad-function-cast 71*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wcast-qual 72*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wconversion 73*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpacked 74*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpadded 75*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpointer-arith 76*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wredundant-decls 77*64a91907SMasahiro YamadaKBUILD_CFLAGS += -Wswitch-default 78*64a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wpacked-bitfield-compat) 79*64a91907SMasahiro Yamada 80a86fe353SMasahiro Yamadaendif 81