From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by dpdk.org (Postfix) with ESMTP id 0D7DC56A3; Mon, 25 Jun 2018 04:49:25 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2C7361529; Sun, 24 Jun 2018 19:49:25 -0700 (PDT) Received: from net-debian.shanghai.arm.com (net-debian.shanghai.arm.com [10.169.36.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6F7EF3F59C; Sun, 24 Jun 2018 19:49:24 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: nd@arm.com, gavin.hu@arm.com, stable@dpdk.org Date: Mon, 25 Jun 2018 10:49:08 +0800 Message-Id: <20180625024913.17219-2-gavin.hu@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180625024913.17219-1-gavin.hu@arm.com> References: <20180619103657.19186-1-gavin.hu@arm.com> <20180625024913.17219-1-gavin.hu@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v13 1/6] mk: fix makefile based cross build errors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jun 2018 02:49:26 -0000 From: gavin hu The "-Wimplicit-fallthrough=2" option was introduced into gcc 7.0, it was enabled when the cross compiler gcc is greater than 7.0, but for the host side buildtools/pmdinfogen, if the native gcc is older than 7.0, or the host cc compiler is clang, it should not be enabled. The fix is to differentiate the host gcc Werror options from the cross gcc. gcc -Wp,-MD,./.pmdinfogen.o.d.tmp -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated -Werror -Wimplicit-fallthrough=2 -Dbbb -Wno-format-truncation -g -I/home/gavin/arm_repo/dpdk/build/include -o pmdinfogen.o -c ~/dpdk/buildtools/pmdinfogen/pmdinfogen.c gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=2’ ~/dpdk/mk/internal/rte.compile-pre.mk:114: recipe for target 'pmdinfogen.o' failed make[3]: *** [pmdinfogen.o] Error 1 Fixes: ced3e6f8 ("mk: adjust gcc flags for new gcc 7 warnings") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Honnappa Nagarahalli Reviewed-by: Steve Capper --- buildtools/pmdinfogen/Makefile | 2 +- mk/toolchain/gcc/rte.toolchain-compat.mk | 5 +++++ mk/toolchain/gcc/rte.vars.mk | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/buildtools/pmdinfogen/Makefile b/buildtools/pmdinfogen/Makefile index bf07b6f2e..ff7a5fae6 100644 --- a/buildtools/pmdinfogen/Makefile +++ b/buildtools/pmdinfogen/Makefile @@ -41,7 +41,7 @@ HOSTAPP = dpdk-pmdinfogen # SRCS-y += pmdinfogen.c -HOST_CFLAGS += $(WERROR_FLAGS) -g +HOST_CFLAGS += $(HOST_WERROR_FLAGS) -g HOST_CFLAGS += -I$(RTE_OUTPUT)/include include $(RTE_SDK)/mk/rte.hostapp.mk diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk index 255c89677..1e4434fa9 100644 --- a/mk/toolchain/gcc/rte.toolchain-compat.mk +++ b/mk/toolchain/gcc/rte.toolchain-compat.mk @@ -15,6 +15,11 @@ GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1) GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(CC) -E -x c - | tail -n 1) GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR) +HOST_GCC_MAJOR = $(shell echo __GNUC__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_PATCHLEVEL = $(shell echo __GNUC_PATCHLEVEL__ | $(HOSTCC) -E -x c - | tail -n 1) +HOST_GCC_VERSION = $(HOST_GCC_MAJOR)$(HOST_GCC_MINOR) + # if GCC is older than 4.x ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1) MACHINE_CFLAGS = diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk index 7e4531bab..d8b99faf6 100644 --- a/mk/toolchain/gcc/rte.vars.mk +++ b/mk/toolchain/gcc/rte.vars.mk @@ -71,6 +71,15 @@ ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1) WERROR_FLAGS += -Wno-uninitialized endif +HOST_WERROR_FLAGS := $(WERROR_FLAGS) + +ifeq ($(shell test $(HOST_GCC_VERSION) -gt 70 && echo 1), 1) +# Tell GCC only to error for switch fallthroughs without a suitable comment +HOST_WERROR_FLAGS += -Wimplicit-fallthrough=2 +# Ignore errors for snprintf truncation +HOST_WERROR_FLAGS += -Wno-format-truncation +endif + ifeq ($(shell test $(GCC_VERSION) -gt 70 && echo 1), 1) # Tell GCC only to error for switch fallthroughs without a suitable comment WERROR_FLAGS += -Wimplicit-fallthrough=2 -- 2.11.0