1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2a86fe353SMasahiro Yamada# ========================================================================== 3a86fe353SMasahiro Yamada# make W=... settings 4a86fe353SMasahiro Yamada# 564a91907SMasahiro Yamada# There are three warning groups enabled by W=1, W=2, W=3. 664a91907SMasahiro 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 11*e27128dbSMasahiro Yamada# backward compatibility 12*e27128dbSMasahiro YamadaKBUILD_EXTRA_WARN ?= $(KBUILD_ENABLE_EXTRA_GCC_CHECKS) 13*e27128dbSMasahiro Yamada 14a86fe353SMasahiro Yamadaifeq ("$(origin W)", "command line") 15*e27128dbSMasahiro Yamada KBUILD_EXTRA_WARN := $(W) 16a86fe353SMasahiro Yamadaendif 17a86fe353SMasahiro Yamada 18*e27128dbSMasahiro Yamadaexport KBUILD_EXTRA_WARN 19*e27128dbSMasahiro Yamada 2064a91907SMasahiro Yamada# 2164a91907SMasahiro Yamada# W=1 - warnings which may be relevant and do not occur too often 2264a91907SMasahiro Yamada# 23*e27128dbSMasahiro Yamadaifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),) 24a86fe353SMasahiro Yamada 2564a91907SMasahiro YamadaKBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter 2664a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-declarations 2764a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-format-attribute 2864a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-prototypes 2964a91907SMasahiro YamadaKBUILD_CFLAGS += -Wold-style-definition 3064a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-include-dirs 3164a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable) 3264a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable) 3364a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned) 3464a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation) 354c8dd95aSMasahiro Yamada# The following turn off the warnings enabled by -Wextra 3664a91907SMasahiro YamadaKBUILD_CFLAGS += -Wno-missing-field-initializers 3764a91907SMasahiro YamadaKBUILD_CFLAGS += -Wno-sign-compare 38a86fe353SMasahiro Yamada 3926ea6bb1SBehan Websterelse 4026ea6bb1SBehan Webster 4164a91907SMasahiro Yamada# Some diagnostics enabled by default are noisy. 4264a91907SMasahiro Yamada# Suppress them by using -Wno... except for W=1. 4364a91907SMasahiro Yamada 44076f421dSMasahiro Yamadaifdef CONFIG_CC_IS_CLANG 45a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-initializer-overrides 46a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-format 47a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-sign-compare 48a1494304SMasahiro YamadaKBUILD_CFLAGS += -Wno-format-zero-length 4926ea6bb1SBehan Websterendif 5064a91907SMasahiro Yamada 5164a91907SMasahiro Yamadaendif 5264a91907SMasahiro Yamada 5364a91907SMasahiro Yamada# 5464a91907SMasahiro Yamada# W=2 - warnings which occur quite often but may still be relevant 5564a91907SMasahiro Yamada# 56*e27128dbSMasahiro Yamadaifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),) 5764a91907SMasahiro Yamada 5864a91907SMasahiro YamadaKBUILD_CFLAGS += -Wcast-align 5964a91907SMasahiro YamadaKBUILD_CFLAGS += -Wdisabled-optimization 6064a91907SMasahiro YamadaKBUILD_CFLAGS += -Wnested-externs 6164a91907SMasahiro YamadaKBUILD_CFLAGS += -Wshadow 6264a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wlogical-op) 6364a91907SMasahiro YamadaKBUILD_CFLAGS += -Wmissing-field-initializers 6464a91907SMasahiro YamadaKBUILD_CFLAGS += -Wsign-compare 6564a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized) 6664a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wunused-macros) 6764a91907SMasahiro Yamada 6864a91907SMasahiro Yamadaendif 6964a91907SMasahiro Yamada 7064a91907SMasahiro Yamada# 7164a91907SMasahiro Yamada# W=3 - more obscure warnings, can most likely be ignored 7264a91907SMasahiro Yamada# 73*e27128dbSMasahiro Yamadaifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),) 7464a91907SMasahiro Yamada 7564a91907SMasahiro YamadaKBUILD_CFLAGS += -Wbad-function-cast 7664a91907SMasahiro YamadaKBUILD_CFLAGS += -Wcast-qual 7764a91907SMasahiro YamadaKBUILD_CFLAGS += -Wconversion 7864a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpacked 7964a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpadded 8064a91907SMasahiro YamadaKBUILD_CFLAGS += -Wpointer-arith 8164a91907SMasahiro YamadaKBUILD_CFLAGS += -Wredundant-decls 8264a91907SMasahiro YamadaKBUILD_CFLAGS += -Wswitch-default 8364a91907SMasahiro YamadaKBUILD_CFLAGS += $(call cc-option, -Wpacked-bitfield-compat) 8464a91907SMasahiro Yamada 85a86fe353SMasahiro Yamadaendif 86