Commit 6419e144924cf91f8f7c78e914247b02e34b2a89

Authored by Masahiro Yamada
Committed by Tom Rini
1 parent 368b4d2b49

kbuild: move extra gcc checks to scripts/Makefile.extrawarn

This commit was imported from Linux Kernel:
commit a86fe353 written by me.

W=... provides extra gcc checks.

Having such code in scripts/Makefile.build results in the same flags
being added to KBUILD_CFLAGS multiple times becuase
scripts/Makefile.build is invoked every time Kbuild descends into
the subdirectories.

Since the top Makefile is already too cluttered, this commit moves
all of extra gcc check stuff to a new file scripts/Makefile.extrawarn,
which is included from the top Makefile.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

Showing 3 changed files with 69 additions and 65 deletions Side-by-side Diff

... ... @@ -109,10 +109,6 @@
109 109 KBUILD_OUTPUT := $(O)
110 110 endif
111 111  
112   -ifeq ("$(origin W)", "command line")
113   - export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
114   -endif
115   -
116 112 # That's our default target when none is given on the command line
117 113 PHONY := _all
118 114 _all:
... ... @@ -568,6 +564,8 @@
568 564 endif
569 565  
570 566 export CONFIG_SYS_TEXT_BASE
  567 +
  568 +include $(srctree)/scripts/Makefile.extrawarn
571 569  
572 570 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
573 571 KBUILD_CPPFLAGS += $(KCPPFLAGS)
scripts/Makefile.build
... ... @@ -66,67 +66,6 @@
66 66 endif
67 67 endif
68 68  
69   -#
70   -# make W=... settings
71   -#
72   -# W=1 - warnings that may be relevant and does not occur too often
73   -# W=2 - warnings that occur quite often but may still be relevant
74   -# W=3 - the more obscure warnings, can most likely be ignored
75   -#
76   -# $(call cc-option, -W...) handles gcc -W.. options which
77   -# are not supported by all versions of the compiler
78   -ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
79   -warning- := $(empty)
80   -
81   -warning-1 := -Wextra -Wunused -Wno-unused-parameter
82   -warning-1 += -Wmissing-declarations
83   -warning-1 += -Wmissing-format-attribute
84   -warning-1 += $(call cc-option, -Wmissing-prototypes)
85   -warning-1 += -Wold-style-definition
86   -warning-1 += $(call cc-option, -Wmissing-include-dirs)
87   -warning-1 += $(call cc-option, -Wunused-but-set-variable)
88   -warning-1 += $(call cc-disable-warning, missing-field-initializers)
89   -
90   -# Clang
91   -warning-1 += $(call cc-disable-warning, initializer-overrides)
92   -warning-1 += $(call cc-disable-warning, unused-value)
93   -warning-1 += $(call cc-disable-warning, format)
94   -warning-1 += $(call cc-disable-warning, unknown-warning-option)
95   -warning-1 += $(call cc-disable-warning, sign-compare)
96   -warning-1 += $(call cc-disable-warning, format-zero-length)
97   -warning-1 += $(call cc-disable-warning, uninitialized)
98   -warning-1 += $(call cc-option, -fcatch-undefined-behavior)
99   -
100   -warning-2 := -Waggregate-return
101   -warning-2 += -Wcast-align
102   -warning-2 += -Wdisabled-optimization
103   -warning-2 += -Wnested-externs
104   -warning-2 += -Wshadow
105   -warning-2 += $(call cc-option, -Wlogical-op)
106   -warning-2 += $(call cc-option, -Wmissing-field-initializers)
107   -
108   -warning-3 := -Wbad-function-cast
109   -warning-3 += -Wcast-qual
110   -warning-3 += -Wconversion
111   -warning-3 += -Wpacked
112   -warning-3 += -Wpadded
113   -warning-3 += -Wpointer-arith
114   -warning-3 += -Wredundant-decls
115   -warning-3 += -Wswitch-default
116   -warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
117   -warning-3 += $(call cc-option, -Wvla)
118   -
119   -warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
120   -warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
121   -warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
122   -
123   -ifeq ("$(strip $(warning))","")
124   - $(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
125   -endif
126   -
127   -KBUILD_CFLAGS += $(warning)
128   -endif
129   -
130 69 include scripts/Makefile.lib
131 70  
132 71 ifdef host-progs
scripts/Makefile.extrawarn
  1 +# ==========================================================================
  2 +#
  3 +# make W=... settings
  4 +#
  5 +# W=1 - warnings that may be relevant and does not occur too often
  6 +# W=2 - warnings that occur quite often but may still be relevant
  7 +# W=3 - the more obscure warnings, can most likely be ignored
  8 +#
  9 +# $(call cc-option, -W...) handles gcc -W.. options which
  10 +# are not supported by all versions of the compiler
  11 +# ==========================================================================
  12 +
  13 +ifeq ("$(origin W)", "command line")
  14 + export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
  15 +endif
  16 +
  17 +ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS
  18 +warning- := $(empty)
  19 +
  20 +warning-1 := -Wextra -Wunused -Wno-unused-parameter
  21 +warning-1 += -Wmissing-declarations
  22 +warning-1 += -Wmissing-format-attribute
  23 +warning-1 += $(call cc-option, -Wmissing-prototypes)
  24 +warning-1 += -Wold-style-definition
  25 +warning-1 += $(call cc-option, -Wmissing-include-dirs)
  26 +warning-1 += $(call cc-option, -Wunused-but-set-variable)
  27 +warning-1 += $(call cc-disable-warning, missing-field-initializers)
  28 +
  29 +# Clang
  30 +warning-1 += $(call cc-disable-warning, initializer-overrides)
  31 +warning-1 += $(call cc-disable-warning, unused-value)
  32 +warning-1 += $(call cc-disable-warning, format)
  33 +warning-1 += $(call cc-disable-warning, unknown-warning-option)
  34 +warning-1 += $(call cc-disable-warning, sign-compare)
  35 +warning-1 += $(call cc-disable-warning, format-zero-length)
  36 +warning-1 += $(call cc-disable-warning, uninitialized)
  37 +warning-1 += $(call cc-option, -fcatch-undefined-behavior)
  38 +
  39 +warning-2 := -Waggregate-return
  40 +warning-2 += -Wcast-align
  41 +warning-2 += -Wdisabled-optimization
  42 +warning-2 += -Wnested-externs
  43 +warning-2 += -Wshadow
  44 +warning-2 += $(call cc-option, -Wlogical-op)
  45 +warning-2 += $(call cc-option, -Wmissing-field-initializers)
  46 +
  47 +warning-3 := -Wbad-function-cast
  48 +warning-3 += -Wcast-qual
  49 +warning-3 += -Wconversion
  50 +warning-3 += -Wpacked
  51 +warning-3 += -Wpadded
  52 +warning-3 += -Wpointer-arith
  53 +warning-3 += -Wredundant-decls
  54 +warning-3 += -Wswitch-default
  55 +warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
  56 +warning-3 += $(call cc-option, -Wvla)
  57 +
  58 +warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
  59 +warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
  60 +warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
  61 +
  62 +ifeq ("$(strip $(warning))","")
  63 + $(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
  64 +endif
  65 +
  66 +KBUILD_CFLAGS += $(warning)
  67 +endif