xref: /linux-6.15/scripts/Makefile.extrawarn (revision 64a91907)
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