Makefile.extrawarn 2.7 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

39 40
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1

41 42
else

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

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

endif

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

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
KBUILD_CFLAGS += -Wsign-compare
KBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized)
KBUILD_CFLAGS += $(call cc-option, -Wunused-macros)

72 73
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN2

74 75 76 77 78
endif

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

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
KBUILD_CFLAGS += -Wswitch-default
KBUILD_CFLAGS += $(call cc-option, -Wpacked-bitfield-compat)

91 92
KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN3

93
endif