Home | History | Annotate | Download | only in scripts
      1 # SPDX-License-Identifier: GPL-2.0
      2 # ==========================================================================
      3 #
      4 # make W=... settings
      5 #
      6 # W=1 - warnings that may be relevant and does not occur too often
      7 # W=2 - warnings that occur quite often but may still be relevant
      8 # W=3 - the more obscure warnings, can most likely be ignored
      9 #
     10 # $(call cc-option, -W...) handles gcc -W.. options which
     11 # are not supported by all versions of the compiler
     12 # ==========================================================================
     13 
     14 ifeq ("$(origin W)", "command line")
     15   export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
     16 endif
     17 
     18 ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
     19 warning-  := $(empty)
     20 
     21 warning-1 := -Wextra -Wunused -Wno-unused-parameter
     22 warning-1 += -Wmissing-declarations
     23 warning-1 += -Wmissing-format-attribute
     24 warning-1 += $(call cc-option, -Wmissing-prototypes)
     25 warning-1 += -Wold-style-definition
     26 warning-1 += $(call cc-option, -Wmissing-include-dirs)
     27 warning-1 += $(call cc-option, -Wunused-but-set-variable)
     28 warning-1 += $(call cc-disable-warning, missing-field-initializers)
     29 
     30 warning-2 := -Waggregate-return
     31 warning-2 += -Wcast-align
     32 warning-2 += -Wdisabled-optimization
     33 warning-2 += -Wnested-externs
     34 warning-2 += -Wshadow
     35 warning-2 += $(call cc-option, -Wlogical-op)
     36 warning-2 += $(call cc-option, -Wmissing-field-initializers)
     37 
     38 warning-3 := -Wbad-function-cast
     39 warning-3 += -Wcast-qual
     40 warning-3 += -Wconversion
     41 warning-3 += -Wpacked
     42 warning-3 += -Wpadded
     43 warning-3 += -Wpointer-arith
     44 warning-3 += -Wredundant-decls
     45 warning-3 += -Wswitch-default
     46 warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
     47 warning-3 += $(call cc-option, -Wvla)
     48 
     49 warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     50 warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     51 warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     52 
     53 ifeq ("$(strip $(warning))","")
     54         $(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
     55 endif
     56 
     57 KBUILD_CFLAGS += $(warning)
     58 
     59 dtc-warning-2 += -Wnode_name_chars_strict
     60 dtc-warning-2 += -Wproperty_name_chars_strict
     61 
     62 dtc-warning := $(dtc-warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     63 dtc-warning += $(dtc-warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     64 dtc-warning += $(dtc-warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
     65 
     66 DTC_FLAGS += $(dtc-warning)
     67 
     68 else
     69 
     70 # Disable noisy checks by default
     71 DTC_FLAGS += -Wno-unit_address_vs_reg
     72 DTC_FLAGS += -Wno-simple_bus_reg
     73 DTC_FLAGS += -Wno-unit_address_format
     74 DTC_FLAGS += -Wno-pci_bridge
     75 DTC_FLAGS += -Wno-pci_device_bus_num
     76 DTC_FLAGS += -Wno-pci_device_reg
     77 
     78 endif
     79