Commit 6419e144924cf91f8f7c78e914247b02e34b2a89
Committed by
Tom Rini
1 parent
368b4d2b49
Exists in
v2017.01-smarct4x
and in
38 other branches
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
Makefile
... | ... | @@ -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 |