Makefile.extrawarn 2.9 KB

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