linux/scripts/Makefile.extrawarn
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0
   2# ==========================================================================
   3# make W=... settings
   4#
   5# There are three warning groups enabled by W=1, W=2, W=3.
   6# They are independent, and can be combined like W=12 or W=123.
   7# ==========================================================================
   8
   9KBUILD_CFLAGS += $(call cc-disable-warning, packed-not-aligned)
  10
  11# backward compatibility
  12KBUILD_EXTRA_WARN ?= $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)
  13
  14ifeq ("$(origin W)", "command line")
  15  KBUILD_EXTRA_WARN := $(W)
  16endif
  17
  18export KBUILD_EXTRA_WARN
  19
  20#
  21# W=1 - warnings which may be relevant and do not occur too often
  22#
  23ifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),)
  24
  25KBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter
  26KBUILD_CFLAGS += -Wmissing-declarations
  27KBUILD_CFLAGS += -Wmissing-format-attribute
  28KBUILD_CFLAGS += -Wmissing-prototypes
  29KBUILD_CFLAGS += -Wold-style-definition
  30KBUILD_CFLAGS += -Wmissing-include-dirs
  31KBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable)
  32KBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable)
  33KBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned)
  34KBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation)
  35# The following turn off the warnings enabled by -Wextra
  36KBUILD_CFLAGS += -Wno-missing-field-initializers
  37KBUILD_CFLAGS += -Wno-sign-compare
  38KBUILD_CFLAGS += -Wno-type-limits
  39
  40KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1
  41
  42else
  43
  44# Some diagnostics enabled by default are noisy.
  45# Suppress them by using -Wno... except for W=1.
  46
  47ifdef CONFIG_CC_IS_CLANG
  48KBUILD_CFLAGS += -Wno-initializer-overrides
  49KBUILD_CFLAGS += -Wno-format
  50KBUILD_CFLAGS += -Wno-sign-compare
  51KBUILD_CFLAGS += -Wno-format-zero-length
  52KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast)
  53KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare
  54endif
  55
  56endif
  57
  58#
  59# W=2 - warnings which occur quite often but may still be relevant
  60#
  61ifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
  62
  63KBUILD_CFLAGS += -Wdisabled-optimization
  64KBUILD_CFLAGS += -Wshadow
  65KBUILD_CFLAGS += $(call cc-option, -Wlogical-op)
  66KBUILD_CFLAGS += -Wmissing-field-initializers
  67KBUILD_CFLAGS += -Wtype-limits
  68KBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized)
  69KBUILD_CFLAGS += $(call cc-option, -Wunused-macros)
  70
  71KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN2
  72
  73endif
  74
  75#
  76# W=3 - more obscure warnings, can most likely be ignored
  77#
  78ifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
  79
  80KBUILD_CFLAGS += -Wbad-function-cast
  81KBUILD_CFLAGS += -Wcast-align
  82KBUILD_CFLAGS += -Wcast-qual
  83KBUILD_CFLAGS += -Wconversion
  84KBUILD_CFLAGS += -Wpacked
  85KBUILD_CFLAGS += -Wpadded
  86KBUILD_CFLAGS += -Wpointer-arith
  87KBUILD_CFLAGS += -Wredundant-decls
  88KBUILD_CFLAGS += -Wsign-compare
  89KBUILD_CFLAGS += -Wswitch-default
  90KBUILD_CFLAGS += $(call cc-option, -Wpacked-bitfield-compat)
  91
  92KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN3
  93
  94endif
  95