btrfs-progs: build: allow to build with various compiler warnings
Copied from linux kernel, 'make W=1' will build with various additional warnings turned on. There are 3 levels, combinations are possible. The build is quite noisy, not all warnings need to be fixed. A specific warning can be turned on by 'make EXTRA_CFLAGS=-Wsomething'. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c2e85337f6
commit
b556a992c3
|
@ -0,0 +1,90 @@
|
|||
# From linux.git/scripts/Kbuild.include
|
||||
#
|
||||
# try-run
|
||||
# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
|
||||
# Exit code chooses option. "$$TMP" is can be used as temporary file and
|
||||
# is automatically cleaned up.
|
||||
try-run = $(shell set -e; \
|
||||
TMP="$(TMPOUT).$$$$.tmp"; \
|
||||
TMPO="$(TMPOUT).$$$$.o"; \
|
||||
if ($(1)) >/dev/null 2>&1; \
|
||||
then echo "$(2)"; \
|
||||
else echo "$(3)"; \
|
||||
fi; \
|
||||
rm -f "$$TMP" "$$TMPO")
|
||||
|
||||
# cc-option
|
||||
# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||
|
||||
cc-option = $(call try-run,\
|
||||
$(CC) $(CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# From linux.git/scripts/Makefile.extrawarn
|
||||
# ==========================================================================
|
||||
#
|
||||
# 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 BUILD_ENABLE_EXTRA_GCC_CHECKS := $(W)
|
||||
endif
|
||||
|
||||
ifdef BUILD_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)
|
||||
|
||||
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, $(BUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
||||
warning += $(warning-$(findstring 2, $(BUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
||||
warning += $(warning-$(findstring 3, $(BUILD_ENABLE_EXTRA_GCC_CHECKS)))
|
||||
|
||||
ifeq ("$(strip $(warning))","")
|
||||
$(error W=$(BUILD_ENABLE_EXTRA_GCC_CHECKS) is unknown)
|
||||
endif
|
||||
|
||||
EXTRAWARN_CFLAGS += $(warning)
|
||||
else
|
||||
|
||||
ifeq ($(COMPILER),clang)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, initializer-overrides)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, unused-value)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, format)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, unknown-warning-option)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, sign-compare)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, format-zero-length)
|
||||
EXTRAWARN_CFLAGS += $(call cc-disable-warning, uninitialized)
|
||||
endif
|
||||
endif
|
|
@ -1,6 +1,8 @@
|
|||
# Export all variables to sub-makes by default
|
||||
export
|
||||
|
||||
include Makefile.extrawarn
|
||||
|
||||
CC = @CC@
|
||||
LN_S = @LN_S@
|
||||
AR = @AR@
|
||||
|
@ -19,7 +21,7 @@ CFLAGS = @CFLAGS@ \
|
|||
-DBTRFS_FLAT_INCLUDES \
|
||||
-D_XOPEN_SOURCE=700 \
|
||||
-fno-strict-aliasing \
|
||||
-fPIC $(EXTRA_CFLAGS)
|
||||
-fPIC $(KBUILD_CFLAGS) $(EXTRA_CFLAGS)
|
||||
|
||||
LDFLAGS = @LDFLAGS@ \
|
||||
-rdynamic $(EXTRA_LDFLAGS)
|
||||
|
|
Loading…
Reference in New Issue