From patchwork Wed Mar 2 14:22:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 10995 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 6F5CFAD89; Wed, 2 Mar 2016 15:24:15 +0100 (CET) Received: from mail-wm0-f49.google.com (mail-wm0-f49.google.com [74.125.82.49]) by dpdk.org (Postfix) with ESMTP id 778189AA8 for ; Wed, 2 Mar 2016 15:24:13 +0100 (CET) Received: by mail-wm0-f49.google.com with SMTP id l68so87824070wml.0 for ; Wed, 02 Mar 2016 06:24:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+lhRi9Xk+ymMaVYvcZ9KTXjJo9h8GODX1Jm+ID0/6gg=; b=wTIZFPoJiqIkii232FQ+xFC+70/dMmI7ZqSQMv1nYDyEan7RR5sGxGg3W5P+Lj5m4X 73XLviVl144Fcb19IKPK6gAOEEb0zvGoSNaZbbSxsm4Z0AgTi48IjB/XtUlRx8P+sY9e WdB1oNhYDf36JUWvajW4WxGPn+GOAzXH0803C6YzQKacTyTqcA6iT4uHqqpj8KVZEl6n YQwkGryQJoH/JlSTevwf4a75HQH2eXIZc3x9sV0u/Y+ELWhby/baIATBPJxe+UXGjj9m WSUwqUVx3Y0+dZOxsyzMEO2vYpWT121DgAYhP4j0d2uCFU+sxcfZkKBUjvrhTAC0N9cT uAaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+lhRi9Xk+ymMaVYvcZ9KTXjJo9h8GODX1Jm+ID0/6gg=; b=iJCCgoL+oUAHC/0/dDIT5SxRrK1wNPhZE4XgbWe0WfoL3PsiUHRHAG9Ir4rpqHKtAv o56NlFGG6gtLomdmVumjnT6Kg37JF5jPU2y2xhzxPj7x41WjE0U7joJ8qGx7QPUkJp6C alwG2HnrTzHZnS8pE9W1NcUkTGnCsmfRybNebBudHutw3cGeU6CcI2pPdXUUT530W46a Kft+jtA3WuWnHvLTpKaVicG+yF7EPUinltr7mEMgAU9QGdnWAvkZYdZZ4P2n/0shBKJv 1WWQkmjRbmLnVdAlPC9GBrmN7QUluC3l/MVXPUS0HbET116wdm7ifUX323DiYeSOkrOb BoLg== X-Gm-Message-State: AD7BkJJvxHicGFG/Sqqk/Oh3JPoneG8m6Gjr79jY6Dc4AouxakDYGn6qBmXSWrHrpDsxYAGS X-Received: by 10.194.158.36 with SMTP id wr4mr25347879wjb.134.1456928653316; Wed, 02 Mar 2016 06:24:13 -0800 (PST) Received: from XPS13.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id w17sm4452962wmw.5.2016.03.02.06.24.12 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 02 Mar 2016 06:24:12 -0800 (PST) From: Thomas Monjalon To: pmatilai@redhat.com Date: Wed, 2 Mar 2016 15:22:23 +0100 Message-Id: <1456928543-23329-1-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <9190554.3JBlDK3N1R@xps13> References: <9190554.3JBlDK3N1R@xps13> Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH v3] mk: stop on warning only in developer build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Panu Matilainen 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 Signed-off-by: Thomas Monjalon Acked-by: Bruce Richardson --- 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