2014-04-14 13:27:10 +04:00
# ==========================================================================
#
# 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
# ==========================================================================
i f e q ( "$(origin W)" , "command line" )
export KBUILD_ENABLE_EXTRA_GCC_CHECKS := $( W)
e n d i f
i f d e f K B U I L D _ E N A B L E _ E X T R A _ G C C _ C H E C K S
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)
2016-01-12 17:24:18 +03:00
warning-1 += $( call cc-disable-warning, sign-compare)
2014-04-14 13:27:10 +04:00
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)
2016-01-12 17:24:18 +03:00
warning-2 += $( call cc-option, -Wsign-compare)
2014-04-14 13:27:10 +04:00
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) ) )
i f e q ( "$(strip $(warning))" , "" )
$( error W = $( KBUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
e n d i f
KBUILD_CFLAGS += $( warning)
2014-08-01 08:08:25 +04:00
e l s e
2015-08-19 18:36:41 +03:00
i f e q ( $( cc -name ) , c l a n g )
2014-08-01 08:08:25 +04:00
KBUILD_CFLAGS += $( call cc-disable-warning, initializer-overrides)
KBUILD_CFLAGS += $( call cc-disable-warning, unused-value)
KBUILD_CFLAGS += $( call cc-disable-warning, format)
KBUILD_CFLAGS += $( call cc-disable-warning, unknown-warning-option)
KBUILD_CFLAGS += $( call cc-disable-warning, sign-compare)
KBUILD_CFLAGS += $( call cc-disable-warning, format-zero-length)
KBUILD_CFLAGS += $( call cc-disable-warning, uninitialized)
e n d i f
2014-04-14 13:27:10 +04:00
e n d i f