]> git.droids-corp.org - dpdk.git/commitdiff
mk: stop on warning only in developer build
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 12 Feb 2015 15:18:20 +0000 (17:18 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 3 Mar 2016 10:33:14 +0000 (11:33 +0100)
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>
doc/build-sdk-quick.txt
doc/guides/prog_guide/dev_kit_build_system.rst
mk/rte.vars.mk
mk/toolchain/clang/rte.vars.mk
mk/toolchain/gcc/rte.vars.mk
mk/toolchain/icc/rte.vars.mk

index acd1bfe636d50e1227bba17ba31c5610f024d3b8..967ff09530f736a0fd5f57dbe3a05bf267e10ef1 100644 (file)
@@ -15,6 +15,7 @@ Build variables
        EXTRA_LDFLAGS    linker options
        EXTRA_LDLIBS     linker library options
        RTE_KERNELDIR    linux headers path
+       RTE_DEVEL_BUILD  stricter options (default: y in git tree)
        CROSS     toolchain prefix
        V         verbose
        D         debug dependencies
index dd3e3d0f9165f57270a5a22e4104ee22738f1727..3e89eaecb00a5819a05225f135259a075d172592 100644 (file)
@@ -343,6 +343,8 @@ Useful Variables Provided by the Build System
     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.
 
+*   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
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
index 2d734bd308d658901fa6aaf508e9f7d6ebeecade..28982a5f0d6e1222bd0f31e5f0fb7d4612247127 100644 (file)
@@ -102,6 +102,11 @@ export RTE_MACHINE
 export RTE_EXEC_ENV
 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
 ifdef S
 SRCDIR := $(abspath $(RTE_SRCDIR)/$(S))
index 245ea7eeb1d043f0ba1b086cf06a1c61933981e8..7749b991b5404bf00ce016972bce0f642136f6c5 100644 (file)
@@ -63,12 +63,16 @@ TOOLCHAIN_ASFLAGS =
 TOOLCHAIN_CFLAGS =
 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 += -Wnested-externs -Wcast-qual
 WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
 WERROR_FLAGS += -Wundef -Wwrite-strings
 
+ifeq ($(RTE_DEVEL_BUILD),y)
+WERROR_FLAGS += -Werror
+endif
+
 # process cpu flags
 include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
 
index c2c52557288a2db6395c26b541c0009879b3e58a..ff70f3d9f6ad3ec259a2dde65523a988f7aac9e1 100644 (file)
@@ -71,12 +71,16 @@ ifeq (,$(findstring -O0,$(EXTRA_CFLAGS)))
 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 += -Wcast-align -Wnested-externs -Wcast-qual
 WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
 WERROR_FLAGS += -Wundef -Wwrite-strings
 
+ifeq ($(RTE_DEVEL_BUILD),y)
+WERROR_FLAGS += -Werror
+endif
+
 # There are many issues reported for ARMv7 architecture
 # which are not necessarily fatal. Report as warnings.
 ifeq ($(CONFIG_RTE_ARCH_ARMv7),y)
index 9b6b34bd90a8de121c6ca0065d19b65ff47027cd..ba69f1f86c21b71722fbfe95a4949afb04b17aaa 100644 (file)
@@ -69,9 +69,13 @@ TOOLCHAIN_ASFLAGS =
 #   error #13368: loop was not vectorized with "vector always assert"
 #   error #15527: loop was not vectorized: function call to fprintf cannot be vectorize
 #                   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
 
+ifeq ($(RTE_DEVEL_BUILD),y)
+WERROR_FLAGS += -Werror-all
+endif
+
 # process cpu flags
 include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
 # disable max-inline params boundaries for ICC compiler for version 15 and greater