Makefile.extrawarn 2.8 KB
Newer Older
1
# SPDX-License-Identifier: GPL-2.0
2 3 4
# ==========================================================================
# make W=... settings
#
5 6
# There are three warning groups enabled by W=1, W=2, W=3.
# They are independent, and can be combined like W=12 or W=123.
7 8
# ==========================================================================

9 10
KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)

11 12 13
# backward compatibility
KBUILD_EXTRA_WARN ?= $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)

14
ifeq ("$(origin W)", "command line")
15
  KBUILD_EXTRA_WARN := $(W)
16 17
endif

18 19
export KBUILD_EXTRA_WARN

20 21 22
#
# W=1 - warnings which may be relevant and do not occur too often
#
23
ifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),)
24

25 26 27 28 29 30 31 32 33 34
KBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter
KBUILD_CFLAGS += -Wmissing-declarations
KBUILD_CFLAGS += -Wmissing-format-attribute
KBUILD_CFLAGS += -Wmissing-prototypes
KBUILD_CFLAGS += -Wold-style-definition
KBUILD_CFLAGS += -Wmissing-include-dirs
KBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable)
KBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable)
KBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned)
KBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation)
35
# The following turn off the warnings enabled by -Wextra
36 37
KBUILD_CFLAGS += -Wno-missing-field-initializers
KBUILD_CFLAGS += -Wno-sign-compare
38
KBUILD_CFLAGS += -Wno-type-limits
39

40 41
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1

42 43
else

44 45 46
# Some diagnostics enabled by default are noisy.
# Suppress them by using -Wno... except for W=1.

47
ifdef CONFIG_CC_IS_CLANG
48 49 50 51
KBUILD_CFLAGS += -Wno-initializer-overrides
KBUILD_CFLAGS += -Wno-format
KBUILD_CFLAGS += -Wno-sign-compare
KBUILD_CFLAGS += -Wno-format-zero-length
52
KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
53
KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare
54
endif
55 56 57 58 59 60

endif

#
# W=2 - warnings which occur quite often but may still be relevant
#
61
ifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
62 63 64 65 66 67 68

KBUILD_CFLAGS += -Wcast-align
KBUILD_CFLAGS += -Wdisabled-optimization
KBUILD_CFLAGS += -Wnested-externs
KBUILD_CFLAGS += -Wshadow
KBUILD_CFLAGS += $(call cc-option, -Wlogical-op)
KBUILD_CFLAGS += -Wmissing-field-initializers
69
KBUILD_CFLAGS += -Wtype-limits
70 71 72
KBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized)
KBUILD_CFLAGS += $(call cc-option, -Wunused-macros)

73 74
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN2

75 76 77 78 79
endif

#
# W=3 - more obscure warnings, can most likely be ignored
#
80
ifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
81 82 83 84 85 86 87 88

KBUILD_CFLAGS += -Wbad-function-cast
KBUILD_CFLAGS += -Wcast-qual
KBUILD_CFLAGS += -Wconversion
KBUILD_CFLAGS += -Wpacked
KBUILD_CFLAGS += -Wpadded
KBUILD_CFLAGS += -Wpointer-arith
KBUILD_CFLAGS += -Wredundant-decls
89
KBUILD_CFLAGS += -Wsign-compare
90 91 92
KBUILD_CFLAGS += -Wswitch-default
KBUILD_CFLAGS += $(call cc-option, -Wpacked-bitfield-compat)

93 94
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN3

95
endif