DPDK patches and discussions
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: pmatilai@redhat.com
Cc: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v3] mk: stop on warning only in developer build
Date: Wed,  2 Mar 2016 15:22:23 +0100	[thread overview]
Message-ID: <1456928543-23329-1-git-send-email-thomas.monjalon@6wind.com> (raw)
In-Reply-To: <9190554.3JBlDK3N1R@xps13>

From: Panu Matilainen <pmatilai@redhat.com>

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>
---
 doc/build-sdk-quick.txt                        | 1 +
 doc/guides/prog_guide/dev_kit_build_system.rst | 2 ++
 mk/rte.vars.mk                                 | 5 +++++
 mk/toolchain/clang/rte.vars.mk                 | 6 +++++-
 mk/toolchain/gcc/rte.vars.mk                   | 6 +++++-
 mk/toolchain/icc/rte.vars.mk                   | 6 +++++-
 6 files changed, 23 insertions(+), 3 deletions(-)

v3:
- not only for SDK build (-Werror for examples, apps)
- update doc

diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt
index acd1bfe..967ff09 100644
--- a/doc/build-sdk-quick.txt
+++ b/doc/build-sdk-quick.txt
@@ -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
diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/prog_guide/dev_kit_build_system.rst
index dd3e3d0..3e89eae 100644
--- a/doc/guides/prog_guide/dev_kit_build_system.rst
+++ b/doc/guides/prog_guide/dev_kit_build_system.rst
@@ -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
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/mk/rte.vars.mk b/mk/rte.vars.mk
index 2d734bd..28982a5 100644
--- a/mk/rte.vars.mk
+++ b/mk/rte.vars.mk
@@ -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))
diff --git a/mk/toolchain/clang/rte.vars.mk b/mk/toolchain/clang/rte.vars.mk
index 245ea7e..7749b99 100644
--- a/mk/toolchain/clang/rte.vars.mk
+++ b/mk/toolchain/clang/rte.vars.mk
@@ -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
 
diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index c2c5255..ff70f3d 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -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)
diff --git a/mk/toolchain/icc/rte.vars.mk b/mk/toolchain/icc/rte.vars.mk
index 9b6b34b..ba69f1f 100644
--- a/mk/toolchain/icc/rte.vars.mk
+++ b/mk/toolchain/icc/rte.vars.mk
@@ -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
-- 
2.7.0

  parent reply	other threads:[~2016-03-02 14:24 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-12 11:13 [dpdk-dev] [PATCH] Make -Werror optional Panu Matilainen
2015-02-12 11:25 ` Bruce Richardson
2015-02-12 12:02   ` Panu Matilainen
2015-02-12 12:08     ` Bruce Richardson
2015-02-12 13:58       ` Panu Matilainen
2015-02-12 14:02         ` Bruce Richardson
2015-02-12 14:05         ` Thomas Monjalon
2015-02-12 15:18         ` [dpdk-dev] [PATCH v2] mk: Only default to -Werror when building from git checkout Panu Matilainen
2015-02-20 12:15           ` Thomas Monjalon
2015-02-21  2:15             ` Stephen Hemminger
2015-02-21 10:48               ` Thomas Monjalon
2016-03-02 14:22             ` Thomas Monjalon [this message]
2016-03-02 22:04               ` [dpdk-dev] [PATCH v3] mk: stop on warning only in developer build Bruce Richardson
2016-03-03 10:36                 ` Thomas Monjalon
2016-03-03 10:53                   ` Panu Matilainen
2015-02-12 14:38 ` [dpdk-dev] [PATCH] Make -Werror optional Stephen Hemminger
2015-02-12 14:54   ` Panu Matilainen
2015-02-21  1:55     ` Stephen Hemminger
2015-02-21 19:33       ` Neil Horman
2015-02-23  8:19         ` Panu Matilainen
2015-02-23 13:55           ` Neil Horman
2015-02-23 14:20             ` Panu Matilainen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456928543-23329-1-git-send-email-thomas.monjalon@6wind.com \
    --to=thomas.monjalon@6wind.com \
    --cc=dev@dpdk.org \
    --cc=pmatilai@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).