mk: stop on warning only in developer build
Add RTE_DEVEL_BUILD make-variable which can be used to do things differently when doing development vs building a release, autodetected from source root .git presence and overridable via commandline. It is used it to enable -Werror compiler flag and may be extended to other checks. Failing build on warnings is a useful developer tool but its bad for release tarballs which can and do get built with newer compilers than what was used/available during development. Compilers routinely add new warnings so code which built silently with cc X might no longer do so with X+1. This doesn't make the existing code any more buggier and failing the build in this case does not help to improve the quality of an already released version either. This change the default flags which can be tuned with EXTRA_CFLAGS. Signed-off-by: Panu Matilainen <pmatilai@redhat.com> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
parent
948fd64bef
commit
b2bb3a5daa
@ -15,6 +15,7 @@ Build variables
|
|||||||
EXTRA_LDFLAGS linker options
|
EXTRA_LDFLAGS linker options
|
||||||
EXTRA_LDLIBS linker library options
|
EXTRA_LDLIBS linker library options
|
||||||
RTE_KERNELDIR linux headers path
|
RTE_KERNELDIR linux headers path
|
||||||
|
RTE_DEVEL_BUILD stricter options (default: y in git tree)
|
||||||
CROSS toolchain prefix
|
CROSS toolchain prefix
|
||||||
V verbose
|
V verbose
|
||||||
D debug dependencies
|
D debug dependencies
|
||||||
|
@ -343,6 +343,8 @@ Useful Variables Provided by the Build System
|
|||||||
By default, the variable is set to /lib/modules/$(shell uname -r)/build,
|
By default, the variable is set to /lib/modules/$(shell uname -r)/build,
|
||||||
which is correct when the target machine is also the build machine.
|
which is correct when the target machine is also the build machine.
|
||||||
|
|
||||||
|
* RTE_DEVEL_BUILD: Stricter options (stop on warning). It defaults to y in a git tree.
|
||||||
|
|
||||||
Variables that Can be Set/Overridden in a Makefile Only
|
Variables that Can be Set/Overridden in a Makefile Only
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -102,6 +102,11 @@ export RTE_MACHINE
|
|||||||
export RTE_EXEC_ENV
|
export RTE_EXEC_ENV
|
||||||
export RTE_TOOLCHAIN
|
export RTE_TOOLCHAIN
|
||||||
|
|
||||||
|
# developer build automatically enabled in a git tree
|
||||||
|
ifneq ($(wildcard $(RTE_SDK)/.git),)
|
||||||
|
RTE_DEVEL_BUILD := y
|
||||||
|
endif
|
||||||
|
|
||||||
# SRCDIR is the current source directory
|
# SRCDIR is the current source directory
|
||||||
ifdef S
|
ifdef S
|
||||||
SRCDIR := $(abspath $(RTE_SRCDIR)/$(S))
|
SRCDIR := $(abspath $(RTE_SRCDIR)/$(S))
|
||||||
|
@ -63,12 +63,16 @@ TOOLCHAIN_ASFLAGS =
|
|||||||
TOOLCHAIN_CFLAGS =
|
TOOLCHAIN_CFLAGS =
|
||||||
TOOLCHAIN_LDFLAGS =
|
TOOLCHAIN_LDFLAGS =
|
||||||
|
|
||||||
WERROR_FLAGS := -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes
|
WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
|
||||||
WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
|
WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
|
||||||
WERROR_FLAGS += -Wnested-externs -Wcast-qual
|
WERROR_FLAGS += -Wnested-externs -Wcast-qual
|
||||||
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
|
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
|
||||||
WERROR_FLAGS += -Wundef -Wwrite-strings
|
WERROR_FLAGS += -Wundef -Wwrite-strings
|
||||||
|
|
||||||
|
ifeq ($(RTE_DEVEL_BUILD),y)
|
||||||
|
WERROR_FLAGS += -Werror
|
||||||
|
endif
|
||||||
|
|
||||||
# process cpu flags
|
# process cpu flags
|
||||||
include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
|
include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
|
||||||
|
|
||||||
|
@ -71,12 +71,16 @@ ifeq (,$(findstring -O0,$(EXTRA_CFLAGS)))
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
WERROR_FLAGS := -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes
|
WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
|
||||||
WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
|
WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
|
||||||
WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
|
WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
|
||||||
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
|
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
|
||||||
WERROR_FLAGS += -Wundef -Wwrite-strings
|
WERROR_FLAGS += -Wundef -Wwrite-strings
|
||||||
|
|
||||||
|
ifeq ($(RTE_DEVEL_BUILD),y)
|
||||||
|
WERROR_FLAGS += -Werror
|
||||||
|
endif
|
||||||
|
|
||||||
# There are many issues reported for ARMv7 architecture
|
# There are many issues reported for ARMv7 architecture
|
||||||
# which are not necessarily fatal. Report as warnings.
|
# which are not necessarily fatal. Report as warnings.
|
||||||
ifeq ($(CONFIG_RTE_ARCH_ARMv7),y)
|
ifeq ($(CONFIG_RTE_ARCH_ARMv7),y)
|
||||||
|
@ -69,9 +69,13 @@ TOOLCHAIN_ASFLAGS =
|
|||||||
# error #13368: loop was not vectorized with "vector always assert"
|
# error #13368: loop was not vectorized with "vector always assert"
|
||||||
# error #15527: loop was not vectorized: function call to fprintf cannot be vectorize
|
# error #15527: loop was not vectorized: function call to fprintf cannot be vectorize
|
||||||
# was declared "deprecated"
|
# was declared "deprecated"
|
||||||
WERROR_FLAGS := -Wall -Werror-all -w2 -diag-disable 271 -diag-warning 1478
|
WERROR_FLAGS := -Wall -w2 -diag-disable 271 -diag-warning 1478
|
||||||
WERROR_FLAGS += -diag-disable 13368 -diag-disable 15527
|
WERROR_FLAGS += -diag-disable 13368 -diag-disable 15527
|
||||||
|
|
||||||
|
ifeq ($(RTE_DEVEL_BUILD),y)
|
||||||
|
WERROR_FLAGS += -Werror-all
|
||||||
|
endif
|
||||||
|
|
||||||
# process cpu flags
|
# process cpu flags
|
||||||
include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
|
include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
|
||||||
# disable max-inline params boundaries for ICC compiler for version 15 and greater
|
# disable max-inline params boundaries for ICC compiler for version 15 and greater
|
||||||
|
Loading…
Reference in New Issue
Block a user