forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kbuild: move extra gcc checks to scripts/Makefile.extrawarn
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 <[email protected]> CC: Sam Ravnborg <[email protected]> Signed-off-by: Michal Marek <[email protected]>
- Loading branch information
Showing
3 changed files
with
69 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# ========================================================================== | ||
# | ||
# make W=... settings | ||
# | ||
# W=1 - warnings that may be relevant and does not occur too often | ||
# W=2 - warnings that occur quite often but may still be relevant | ||
# W=3 - the more obscure warnings, can most likely be ignored | ||
# | ||
# $(call cc-option, -W...) handles gcc -W.. options which | ||
# are not supported by all versions of the compiler | ||
# ========================================================================== | ||
|
||
ifeq ("$(origin W)", "command line") | ||
export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $(W) | ||
endif | ||
|
||
ifdef KBUILD_ENABLE_EXTRA_GCC_CHECKS | ||
warning- := $(empty) | ||
|
||
warning-1 := -Wextra -Wunused -Wno-unused-parameter | ||
warning-1 += -Wmissing-declarations | ||
warning-1 += -Wmissing-format-attribute | ||
warning-1 += $(call cc-option, -Wmissing-prototypes) | ||
warning-1 += -Wold-style-definition | ||
warning-1 += $(call cc-option, -Wmissing-include-dirs) | ||
warning-1 += $(call cc-option, -Wunused-but-set-variable) | ||
warning-1 += $(call cc-disable-warning, missing-field-initializers) | ||
|
||
# Clang | ||
warning-1 += $(call cc-disable-warning, initializer-overrides) | ||
warning-1 += $(call cc-disable-warning, unused-value) | ||
warning-1 += $(call cc-disable-warning, format) | ||
warning-1 += $(call cc-disable-warning, unknown-warning-option) | ||
warning-1 += $(call cc-disable-warning, sign-compare) | ||
warning-1 += $(call cc-disable-warning, format-zero-length) | ||
warning-1 += $(call cc-disable-warning, uninitialized) | ||
warning-1 += $(call cc-option, -fcatch-undefined-behavior) | ||
|
||
warning-2 := -Waggregate-return | ||
warning-2 += -Wcast-align | ||
warning-2 += -Wdisabled-optimization | ||
warning-2 += -Wnested-externs | ||
warning-2 += -Wshadow | ||
warning-2 += $(call cc-option, -Wlogical-op) | ||
warning-2 += $(call cc-option, -Wmissing-field-initializers) | ||
|
||
warning-3 := -Wbad-function-cast | ||
warning-3 += -Wcast-qual | ||
warning-3 += -Wconversion | ||
warning-3 += -Wpacked | ||
warning-3 += -Wpadded | ||
warning-3 += -Wpointer-arith | ||
warning-3 += -Wredundant-decls | ||
warning-3 += -Wswitch-default | ||
warning-3 += $(call cc-option, -Wpacked-bitfield-compat) | ||
warning-3 += $(call cc-option, -Wvla) | ||
|
||
warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) | ||
warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) | ||
warning += $(warning-$(findstring 3, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) | ||
|
||
ifeq ("$(strip $(warning))","") | ||
$(error W=$(KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown) | ||
endif | ||
|
||
KBUILD_CFLAGS += $(warning) | ||
endif |