patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH v7 1/7] mk: fix cross build errors
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
@ 2018-06-15  7:08   ` Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 3/7] devtools: fix the Exec format error Gavin Hu
                     ` (5 subsequent siblings)
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: gavin hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v7 3/7] devtools: fix the Exec format error
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 1/7] mk: fix cross build errors Gavin Hu
@ 2018-06-15  7:08   ` Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 4/7] build: fix the meson build warning Gavin Hu
                     ` (4 subsequent siblings)
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: stable

meson will natively compile and generate the sanitycheck.exe file.  It will
be spawned and run at the host side.  Export the cross compiler is not
necessary as it is already done by the cross-file, and even worse it
generate the files in the wrong target format.

The fix to the following compiling error is select the native compiler for
the sanity test source file.

"/usr/lib/python3.5/subprocess.py", line 676, in __init__ restore_signals,
start_new_session) File "/usr/lib/python3.5/subprocess.py", line 1282, in
_execute_child raise child_exception_type(errno_num, err_msg) OSError:
[Errno 8] Exec format error
Build started at 2018-06-01T12:48:46.852286 Main binary: /usr/bin/python3
Python system: Linux The Meson build system Version: 0.45.1 Build type:
cross build Project name: DPDK Sanity testing C compiler:
aarch64-linux-gnu-gcc Is cross compiler: False.  Sanity check compiler
command line: aarch64-linux-gnu-gcc
dpdk/build-arm64-armv8/meson-private/sanitycheckc.c -o
dpdk/build-arm64-armv8/meson-private/sanitycheckc.exe

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9868c325b..6bce3df7f 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -1,6 +1,7 @@
 #! /bin/sh -e
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
+# Copyright(c) 2018 ARM Corporation
 
 # Run meson to auto-configure the various builds.
 # * all builds get put in a directory whose name starts with "build-"
@@ -18,7 +19,6 @@ build () # <directory> <meson options>
 		options="--werror -Dexamples=all $*"
 		echo "$MESON $options $srcdir $builddir"
 		$MESON $options $srcdir $builddir
-		unset CC
 	fi
 	echo "ninja -C $builddir"
 	ninja -C $builddir
@@ -26,10 +26,11 @@ build () # <directory> <meson options>
 
 # shared and static linked builds with gcc and clang
 for c in gcc clang ; do
+	export CC="ccache $c"
 	for s in static shared ; do
-		export CC="ccache $c"
 		build build-$c-$s --default-library=$s
 	done
+	unset CC
 done
 
 # test compilation with minimal x86 instruction set
@@ -39,8 +40,10 @@ build build-x86-default -Dmachine=nehalem
 for f in config/arm/arm*gcc ; do
 	c=aarch64-linux-gnu-gcc
 	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
+		echo "## ERROR: aarch64-linux-gnu-gcc is missing..."
+		exit 1
 	fi
-	export CC="ccache $c"
+	export CC="ccache gcc"
 	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	unset CC
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v7 4/7] build: fix the meson build warning
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 1/7] mk: fix cross build errors Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 3/7] devtools: fix the Exec format error Gavin Hu
@ 2018-06-15  7:08   ` Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
                     ` (3 subsequent siblings)
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v7 5/7] devtools: fix the missing ninja command error on CentOS
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
                     ` (2 preceding siblings ...)
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 4/7] build: fix the meson build warning Gavin Hu
@ 2018-06-15  7:08   ` Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 6/7] build: fix the meson cross compile error Gavin Hu
                     ` (2 subsequent siblings)
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: stable

On CentOS, the ninja executable has a different name:
ninja-build, this patch is to fix the missing command error
on CentOS as follows:
./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 6bce3df7f..15a282978 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -11,6 +11,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -21,7 +30,7 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 	fi
 	echo "ninja -C $builddir"
-	ninja -C $builddir
+    $ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v7 6/7] build: fix the meson cross compile error
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
                     ` (3 preceding siblings ...)
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
@ 2018-06-15  7:08   ` Gavin Hu
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 7/7] devtools: expand meson cross compiling coverage Gavin Hu
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v7 7/7] devtools: expand meson cross compiling coverage
       [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
                     ` (4 preceding siblings ...)
  2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 6/7] build: fix the meson cross compile error Gavin Hu
@ 2018-06-15  7:08   ` Gavin Hu
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
  6 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  7:08 UTC (permalink / raw)
  To: dev; +Cc: stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to cover both, gcc and clang. And also the build dirs are
changed to *-host-$c, indicating the difference of cc used.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 15a282978..879eda18e 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -51,8 +51,16 @@ for f in config/arm/arm*gcc ; do
 	if ! command -v $c >/dev/null 2>&1 ; then
 		echo "## ERROR: aarch64-linux-gnu-gcc is missing..."
 		exit 1
-	fi
-	export CC="ccache gcc"
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
-	unset CC
+	fi  
+    export CC="ccache gcc"
+    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
+        --cross-file $f
+    unset CC
+    # compile the general v8a also for clang to increase coverage
+    if [ $f = config/arm/arm64_armv8_linuxapp_gcc ] ; then
+        export CC="ccache clang"
+        build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
+            --cross-file $f
+        unset CC
+    fi
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v8 1/6] mk: fix cross build errors
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
@ 2018-06-15  8:01     ` Gavin Hu
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 3/6] build: fix the meson build warning Gavin Hu
                       ` (4 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  8:01 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v8 3/6] build: fix the meson build warning
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 1/6] mk: fix cross build errors Gavin Hu
@ 2018-06-15  8:01     ` Gavin Hu
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS Gavin Hu
                       ` (3 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  8:01 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 1/6] mk: fix cross build errors Gavin Hu
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-15  8:01     ` Gavin Hu
  2018-06-15  8:24       ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 5/6] build: fix the meson cross compile error Gavin Hu
                       ` (2 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  8:01 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On CentOS, the ninja executable has a different name:
ninja-build, this patch is to fix the missing command error
on CentOS as follows:
./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..8447c704b 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -21,7 +30,7 @@ build () # <directory> <meson options>
 		unset CC
 	fi
 	echo "ninja -C $builddir"
-	ninja -C $builddir
+    $ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v8 5/6] build: fix the meson cross compile error
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
                       ` (2 preceding siblings ...)
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS Gavin Hu
@ 2018-06-15  8:01     ` Gavin Hu
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 6/6] devtools: expand meson cross compiling coverage Gavin Hu
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  8:01 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v8 6/6] devtools: expand meson cross compiling coverage
       [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
                       ` (3 preceding siblings ...)
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-15  8:01     ` Gavin Hu
  2018-06-15  8:28       ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  8:01 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to cover both, gcc and clang. And also the build dirs are
changed to *-host-$c, indicating the difference of cc used.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 8447c704b..f75ebbdb1 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -50,5 +50,15 @@ for f in config/arm/arm*gcc ; do
 	if ! command -v $c >/dev/null 2>&1 ; then
 		continue
 	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+    export CC="ccache gcc"
+    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
+        --cross-file $f
+    unset CC
+    # compile the general v8a also for clang to increase coverage
+    if [ $f = config/arm/arm64_armv8_linuxapp_gcc ] ; then
+        export CC="ccache clang"
+        build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
+            --cross-file $f
+        unset CC
+    fi
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS Gavin Hu
@ 2018-06-15  8:24       ` Bruce Richardson
  0 siblings, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15  8:24 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 04:01:18PM +0800, Gavin Hu wrote:
> On CentOS, the ninja executable has a different name:
> ninja-build, this patch is to fix the missing command error
> on CentOS as follows:
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
>  devtools/test-meson-builds.sh | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index f2ad05f32..8447c704b 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -10,6 +10,15 @@
>  srcdir=$(dirname $(readlink -m $0))/..
>  MESON=${MESON:-meson}
>  
> +if command -v ninja >/dev/null 2>&1 ; then
> +    ninja_cmd=ninja
> +elif command -v ninja-build >/dev/null 2>&1 ; then
> +    ninja_cmd=ninja-build
> +else
> +    echo "## ERROR: ninja is missing, please install..."
> +    exit 1
> +fi
> +
>  build () # <directory> <meson options>
>  {
>  	builddir=$1
> @@ -21,7 +30,7 @@ build () # <directory> <meson options>
>  		unset CC
>  	fi
>  	echo "ninja -C $builddir"
> -	ninja -C $builddir
> +    $ninja_cmd -C $builddir

I think the command-name should be updated in the echo print too. [Perhaps
that can be done on apply]. With that minor change:

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v8 6/6] devtools: expand meson cross compiling coverage
  2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 6/6] devtools: expand meson cross compiling coverage Gavin Hu
@ 2018-06-15  8:28       ` Bruce Richardson
  2018-06-15  9:31         ` Gavin Hu
  0 siblings, 1 reply; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15  8:28 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 04:01:20PM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to cover both, gcc and clang. And also the build dirs are
> changed to *-host-$c, indicating the difference of cc used.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
>  devtools/test-meson-builds.sh | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 8447c704b..f75ebbdb1 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -50,5 +50,15 @@ for f in config/arm/arm*gcc ; do
>  	if ! command -v $c >/dev/null 2>&1 ; then
>  		continue
>  	fi
> -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> +    export CC="ccache gcc"
> +    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> +        --cross-file $f
> +    unset CC
> +    # compile the general v8a also for clang to increase coverage
> +    if [ $f = config/arm/arm64_armv8_linuxapp_gcc ] ; then
> +        export CC="ccache clang"
> +        build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
> +            --cross-file $f
> +        unset CC
> +    fi

Indentation is different in the new code, spaces vs tabs, perhaps. I'm also
not sure the "unset CC" is needed, because I think the build function
automatically unsets it when done.

One other style comment: rather than having an if condition in the loop and
putting the extra build there, it might be easier just to put the extra
call to build outside the main loop, since all values are essentially
hardcoded in that call anyway.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v9 1/6] mk: fix makefile based cross build errors
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
@ 2018-06-15  9:26       ` Gavin Hu
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 3/6] build: fix the meson build warning Gavin Hu
                         ` (4 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:26 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v9 3/6] build: fix the meson build warning
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-15  9:26       ` Gavin Hu
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 4/6] devtools: fix the missing ninja command error Gavin Hu
                         ` (3 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:26 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v9 4/6] devtools: fix the missing ninja command error
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-15  9:26       ` Gavin Hu
  2018-06-15  9:59         ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 5/6] build: fix the meson cross compile error Gavin Hu
                         ` (2 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:26 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v9 5/6] build: fix the meson cross compile error
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
                         ` (2 preceding siblings ...)
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-15  9:26       ` Gavin Hu
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:26 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v9 6/6] devtools: expand meson cross compiling test coverage
       [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
                         ` (3 preceding siblings ...)
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-15  9:26       ` Gavin Hu
  2018-06-15 10:01         ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:26 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to cover both, gcc and clang. And also the build dirs are
changed to *-host-$c, indicating the difference of cc used.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..8c33ece93 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -44,11 +44,20 @@ done
 # test compilation with minimal x86 instruction set
 build build-x86-default -Dmachine=nehalem
 
+# compile the general v8a also for clang to increase coverage
+f=config/arm/arm64_armv8_linuxapp_gcc
+export CC="ccache clang"
+build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
+		  --cross-file $f
+
 # enable cross compilation if gcc cross-compiler is found
 for f in config/arm/arm*gcc ; do
 	c=aarch64-linux-gnu-gcc
 	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
+		echo "## ERROR: $c is missing..."
+		exit 1
 	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+    export CC="ccache gcc"
+    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
+        --cross-file $f
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v8 6/6] devtools: expand meson cross compiling coverage
  2018-06-15  8:28       ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-15  9:31         ` Gavin Hu
  0 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15  9:31 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, nd, stable

Hi Bruce,

Thanks for your review, new v9 patch set was submitted.
Any more comments are welcome!

Best Regards,
Gavin

> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Friday, June 15, 2018 4:28 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v8 6/6] devtools: expand meson cross
> compiling coverage
> 
> On Fri, Jun 15, 2018 at 04:01:20PM +0800, Gavin Hu wrote:
> > The default test script covers only default host cc compiler, either
> > gcc or clang, the fix is to cover both, gcc and clang. And also the
> > build dirs are changed to *-host-$c, indicating the difference of cc used.
> >
> > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > ---
> >  devtools/test-meson-builds.sh | 12 +++++++++++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > diff --git a/devtools/test-meson-builds.sh
> > b/devtools/test-meson-builds.sh index 8447c704b..f75ebbdb1 100755
> > --- a/devtools/test-meson-builds.sh
> > +++ b/devtools/test-meson-builds.sh
> > @@ -50,5 +50,15 @@ for f in config/arm/arm*gcc ; do
> >  	if ! command -v $c >/dev/null 2>&1 ; then
> >  		continue
> >  	fi
> > -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> > +    export CC="ccache gcc"
> > +    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> > +        --cross-file $f
> > +    unset CC
> > +    # compile the general v8a also for clang to increase coverage
> > +    if [ $f = config/arm/arm64_armv8_linuxapp_gcc ] ; then
> > +        export CC="ccache clang"
> > +        build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
> > +            --cross-file $f
> > +        unset CC
> > +    fi
> 
> Indentation is different in the new code, spaces vs tabs, perhaps. I'm also not
> sure the "unset CC" is needed, because I think the build function
> automatically unsets it when done.
> 
> One other style comment: rather than having an if condition in the loop and
> putting the extra build there, it might be easier just to put the extra call to
> build outside the main loop, since all values are essentially hardcoded in that
> call anyway.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v9 4/6] devtools: fix the missing ninja command error
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-15  9:59         ` Bruce Richardson
  0 siblings, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15  9:59 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 05:26:03PM +0800, Gavin Hu wrote:
> On some linux distributions, eg: CentOS, the ninja executable has a
> different name: ninja-build, this patch is to check and adapt to it
> accordingly.
> 
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
LGTM

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v9 6/6] devtools: expand meson cross compiling test coverage
  2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
@ 2018-06-15 10:01         ` Bruce Richardson
  0 siblings, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15 10:01 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 05:26:05PM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to cover both, gcc and clang. And also the build dirs are
> changed to *-host-$c, indicating the difference of cc used.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---

Still has whitespace issues which can probably be fixed on apply. The calls
to basename etc. for the additional command are unnecessary since you can
hard-code the directory name, but that's not a big deal. Approach wise, it
looks ok.

With whitespace fixup:

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

>  devtools/test-meson-builds.sh | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 9bb5b93bd..8c33ece93 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -44,11 +44,20 @@ done
>  # test compilation with minimal x86 instruction set
>  build build-x86-default -Dmachine=nehalem
>  
> +# compile the general v8a also for clang to increase coverage
> +f=config/arm/arm64_armv8_linuxapp_gcc
> +export CC="ccache clang"
> +build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
> +		  --cross-file $f
> +
>  # enable cross compilation if gcc cross-compiler is found
>  for f in config/arm/arm*gcc ; do
>  	c=aarch64-linux-gnu-gcc
>  	if ! command -v $c >/dev/null 2>&1 ; then
> -		continue
> +		echo "## ERROR: $c is missing..."
> +		exit 1
>  	fi
> -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> +    export CC="ccache gcc"
> +    build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> +        --cross-file $f
>  done
> -- 
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v10 1/6] mk: fix makefile based cross build errors
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
@ 2018-06-15 10:21         ` Gavin Hu
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 3/6] build: fix the meson build warning Gavin Hu
                           ` (4 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15 10:21 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v10 3/6] build: fix the meson build warning
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-15 10:21         ` Gavin Hu
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 4/6] devtools: fix the missing ninja command error Gavin Hu
                           ` (3 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15 10:21 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v10 4/6] devtools: fix the missing ninja command error
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-15 10:21         ` Gavin Hu
  2018-06-15 13:27           ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 5/6] build: fix the meson cross compile error Gavin Hu
                           ` (2 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15 10:21 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v10 5/6] build: fix the meson cross compile error
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
                           ` (2 preceding siblings ...)
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-15 10:21         ` Gavin Hu
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-15 10:21 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage
       [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
                           ` (3 preceding siblings ...)
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-15 10:21         ` Gavin Hu
  2018-06-15 14:14           ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-15 10:21 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to cover both, gcc and clang. And also the build dirs are
changed to *-host-$c, indicating the difference of cc used.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..f1553b7bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -44,11 +44,20 @@ done
 # test compilation with minimal x86 instruction set
 build build-x86-default -Dmachine=nehalem
 
+# compile the general v8a also for clang to increase coverage
+f=config/arm/arm64_armv8_linuxapp_gcc
+export CC="ccache clang"
+build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
+	--cross-file $f
+
 # enable cross compilation if gcc cross-compiler is found
 for f in config/arm/arm*gcc ; do
 	c=aarch64-linux-gnu-gcc
 	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
+		echo "## ERROR: $c is missing..."
+		exit 1
 	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	export CC="ccache gcc"
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
+		--cross-file $f
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v10 4/6] devtools: fix the missing ninja command error
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-15 13:27           ` Bruce Richardson
  0 siblings, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15 13:27 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 06:21:41PM +0800, Gavin Hu wrote:
> On some linux distributions, eg: CentOS, the ninja executable has a
> different name: ninja-build, this patch is to check and adapt to it
> accordingly.
> 
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
I think I already acked this one, so

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage
  2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
@ 2018-06-15 14:14           ` Bruce Richardson
  2018-06-19  1:44             ` Gavin Hu
  0 siblings, 1 reply; 61+ messages in thread
From: Bruce Richardson @ 2018-06-15 14:14 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Fri, Jun 15, 2018 at 06:21:43PM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to cover both, gcc and clang. And also the build dirs are
> changed to *-host-$c, indicating the difference of cc used.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---

Apologies, some late comments inline below that I missed on previous
reviews.

>  devtools/test-meson-builds.sh | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 9bb5b93bd..f1553b7bd 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -44,11 +44,20 @@ done
>  # test compilation with minimal x86 instruction set
>  build build-x86-default -Dmachine=nehalem
>  
> +# compile the general v8a also for clang to increase coverage
> +f=config/arm/arm64_armv8_linuxapp_gcc
> +export CC="ccache clang"
> +build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
> +	--cross-file $f
> +

This might be better just as e.g.

+export CC="ccache clang"
+build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc

to be shorter and more readable. You don't really need the armv8 part in
the directory name, as it's primarily a test of the clang host build, so
you can omit it to shorten the command to a single line with all hardcoded
values, which is more readable than a version with tr filename mangling.

>  # enable cross compilation if gcc cross-compiler is found
>  for f in config/arm/arm*gcc ; do
>  	c=aarch64-linux-gnu-gcc
>  	if ! command -v $c >/dev/null 2>&1 ; then
> -		continue
> +		echo "## ERROR: $c is missing..."
> +		exit 1

I think this if check should be moved out of the block, and be before the
test with clang, since that clang test will also fail.

>  	fi
> -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> +	export CC="ccache gcc"
> +	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> +		--cross-file $f
>  done
> -- 
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v11 1/6] mk: fix makefile based cross build errors
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
@ 2018-06-19  1:37           ` Gavin Hu
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 3/6] build: fix the meson build warning Gavin Hu
                             ` (4 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:37 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v11 3/6] build: fix the meson build warning
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-19  1:37           ` Gavin Hu
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 4/6] devtools: fix the missing ninja command error Gavin Hu
                             ` (3 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:37 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v11 4/6] devtools: fix the missing ninja command error
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-19  1:37           ` Gavin Hu
  2018-06-19 10:12             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 5/6] build: fix the meson cross compile error Gavin Hu
                             ` (2 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:37 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v11 5/6] build: fix the meson cross compile error
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
                             ` (2 preceding siblings ...)
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-19  1:37           ` Gavin Hu
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:37 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage
       [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
                             ` (3 preceding siblings ...)
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-19  1:37           ` Gavin Hu
  2018-06-19 10:14             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
  2018-06-19 10:15             ` Bruce Richardson
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
  5 siblings, 2 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:37 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to increase the coverage by adding one more to cover
clang and the others for gcc, also the build dirs are changed to *-host-$c,
indicating the difference of cc used.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..f0912d109 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -44,11 +44,18 @@ done
 # test compilation with minimal x86 instruction set
 build build-x86-default -Dmachine=nehalem
 
+# compile the general v8a also for clang to increase coverage
+export CC="ccache clang"
+build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc
+
 # enable cross compilation if gcc cross-compiler is found
 for f in config/arm/arm*gcc ; do
 	c=aarch64-linux-gnu-gcc
 	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
+		echo "## ERROR: $c is missing..."
+		exit 1
 	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	export CC="ccache gcc"
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
+		--cross-file $f
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage
  2018-06-15 14:14           ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-19  1:44             ` Gavin Hu
  0 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19  1:44 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, nd, stable

Hi Bruce,

I submitted v11, please have a look, thanks for your review.

Best Regards,
Gavin

> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Friday, June 15, 2018 10:15 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v10 6/6] devtools: expand meson cross
> compiling test coverage
> 
> On Fri, Jun 15, 2018 at 06:21:43PM +0800, Gavin Hu wrote:
> > The default test script covers only default host cc compiler, either
> > gcc or clang, the fix is to cover both, gcc and clang. And also the
> > build dirs are changed to *-host-$c, indicating the difference of cc used.
> >
> > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > ---
> 
> Apologies, some late comments inline below that I missed on previous
> reviews.
> 
> >  devtools/test-meson-builds.sh | 13 +++++++++++--
> >  1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/devtools/test-meson-builds.sh
> > b/devtools/test-meson-builds.sh index 9bb5b93bd..f1553b7bd 100755
> > --- a/devtools/test-meson-builds.sh
> > +++ b/devtools/test-meson-builds.sh
> > @@ -44,11 +44,20 @@ done
> >  # test compilation with minimal x86 instruction set  build
> > build-x86-default -Dmachine=nehalem
> >
> > +# compile the general v8a also for clang to increase coverage
> > +f=config/arm/arm64_armv8_linuxapp_gcc
> > +export CC="ccache clang"
> > +build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-clang \
> > +	--cross-file $f
> > +
> 
> This might be better just as e.g.
> 
> +export CC="ccache clang"
> +build build-arm64-host-clang --cross-file
> +config/arm/arm64_armv8_linuxapp_gcc
> 
> to be shorter and more readable. You don't really need the armv8 part in the
> directory name, as it's primarily a test of the clang host build, so you can omit
> it to shorten the command to a single line with all hardcoded values, which is
> more readable than a version with tr filename mangling.
> 
> >  # enable cross compilation if gcc cross-compiler is found  for f in
> > config/arm/arm*gcc ; do
> >  	c=aarch64-linux-gnu-gcc
> >  	if ! command -v $c >/dev/null 2>&1 ; then
> > -		continue
> > +		echo "## ERROR: $c is missing..."
> > +		exit 1
> 
> I think this if check should be moved out of the block, and be before the test
> with clang, since that clang test will also fail.
> 
> >  	fi
> > -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> > +	export CC="ccache gcc"
> > +	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> > +		--cross-file $f
> >  done
> > --
> > 2.11.0
> >

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja command error
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-19 10:12             ` Bruce Richardson
  2018-06-19 10:41               ` Gavin Hu
  0 siblings, 1 reply; 61+ messages in thread
From: Bruce Richardson @ 2018-06-19 10:12 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Tue, Jun 19, 2018 at 09:37:44AM +0800, Gavin Hu wrote:
> On some linux distributions, eg: CentOS, the ninja executable has a
> different name: ninja-build, this patch is to check and adapt to it
> accordingly.
> 
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
This is previously acked.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
@ 2018-06-19 10:14             ` Bruce Richardson
  2018-06-19 10:15             ` Bruce Richardson
  1 sibling, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-19 10:14 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Tue, Jun 19, 2018 at 09:37:46AM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to increase the coverage by adding one more to cover
> clang and the others for gcc, also the build dirs are changed to *-host-$c,
> indicating the difference of cc used.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
>  devtools/test-meson-builds.sh | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 9bb5b93bd..f0912d109 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -44,11 +44,18 @@ done
>  # test compilation with minimal x86 instruction set
>  build build-x86-default -Dmachine=nehalem
>  
> +# compile the general v8a also for clang to increase coverage
> +export CC="ccache clang"
> +build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc
> +

This will fail if the cross-gcc is not present. You still need to move the
check out of the loop below to above this build call.

>  # enable cross compilation if gcc cross-compiler is found
>  for f in config/arm/arm*gcc ; do
>  	c=aarch64-linux-gnu-gcc
>  	if ! command -v $c >/dev/null 2>&1 ; then
> -		continue
> +		echo "## ERROR: $c is missing..."
> +		exit 1
>  	fi
> -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> +	export CC="ccache gcc"
> +	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> +		--cross-file $f

Minor nit:
I'd tend to leave off the "host-gcc" part for brevity. If one build is marked
as host-clang, I think most folks unfamiliar with the script will probably
guess that gcc is the host compiler in unstated cases.

>  done
> -- 
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage
  2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
  2018-06-19 10:14             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-19 10:15             ` Bruce Richardson
  1 sibling, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-19 10:15 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Tue, Jun 19, 2018 at 09:37:46AM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to increase the coverage by adding one more to cover
> clang and the others for gcc, also the build dirs are changed to *-host-$c,
> indicating the difference of cc used.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> ---
>  devtools/test-meson-builds.sh | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 9bb5b93bd..f0912d109 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -44,11 +44,18 @@ done
>  # test compilation with minimal x86 instruction set
>  build build-x86-default -Dmachine=nehalem
>  
> +# compile the general v8a also for clang to increase coverage
> +export CC="ccache clang"
> +build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc
> +
>  # enable cross compilation if gcc cross-compiler is found
>  for f in config/arm/arm*gcc ; do
>  	c=aarch64-linux-gnu-gcc
>  	if ! command -v $c >/dev/null 2>&1 ; then
> -		continue
> +		echo "## ERROR: $c is missing..."
> +		exit 1

Not sure we need to return an error return code in this case. A missing
compiler just means we skip the tests, not that we actually failed
anything.

>  	fi
> -	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
> +	export CC="ccache gcc"
> +	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2)-host-gcc \
> +		--cross-file $f
>  done
> -- 
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v12 1/6] mk: fix makefile based cross build errors
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
@ 2018-06-19 10:36             ` Gavin Hu
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 3/6] build: fix the meson build warning Gavin Hu
                               ` (4 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:36 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v12 3/6] build: fix the meson build warning
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-19 10:36             ` Gavin Hu
  2018-06-24 11:05               ` [dpdk-stable] [dpdk-dev] " Jerin Jacob
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 4/6] devtools: fix the missing ninja command error Gavin Hu
                               ` (3 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:36 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v12 4/6] devtools: fix the missing ninja command error
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-19 10:36             ` Gavin Hu
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 5/6] build: fix the meson cross compile error Gavin Hu
                               ` (2 subsequent siblings)
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:36 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v12 5/6] build: fix the meson cross compile error
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
                               ` (2 preceding siblings ...)
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-19 10:36             ` Gavin Hu
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:36 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v12 6/6] devtools: expand meson cross compiling test coverage
       [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
                               ` (3 preceding siblings ...)
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-19 10:36             ` Gavin Hu
  2018-06-19 12:31               ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:36 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to increase the coverage by adding one more to cover
clang and the others for gcc.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
---
 devtools/test-meson-builds.sh | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..e7db0abe9 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -45,10 +45,18 @@ done
 build build-x86-default -Dmachine=nehalem
 
 # enable cross compilation if gcc cross-compiler is found
+c=aarch64-linux-gnu-gcc
+if ! command -v $c >/dev/null 2>&1 ; then
+	echo "## ERROR: $c is missing, cross compiling is aborting..."
+	return
+fi
+
+# compile the general v8a also for clang to increase coverage
+export CC="ccache clang"
+build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc
+
 for f in config/arm/arm*gcc ; do
-	c=aarch64-linux-gnu-gcc
-	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
-	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	export CC="ccache gcc"
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) \
+		--cross-file $f
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja command error
  2018-06-19 10:12             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
@ 2018-06-19 10:41               ` Gavin Hu
  2018-06-19 12:30                 ` Bruce Richardson
  0 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 10:41 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, nd, stable

Hi Bruce,

Thanks for your review, I submitted v12 patch to address all your new comments.

BTW, do you know why pwclient can NOT work successfully today? 
It worked fine at my side previously, any changes at the server side? The error is below: 
xmlrpc.client.ProtocolError: <ProtocolError for dpdk.org/dev/patchwork/xmlrpc/: 301 Moved Permanently>

Best Regards,
Gavin

> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Tuesday, June 19, 2018 6:12 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja
> command error
> 
> On Tue, Jun 19, 2018 at 09:37:44AM +0800, Gavin Hu wrote:
> > On some linux distributions, eg: CentOS, the ninja executable has a
> > different name: ninja-build, this patch is to check and adapt to it
> > accordingly.
> >
> > ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> >
> > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > ---
> This is previously acked.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja command error
  2018-06-19 10:41               ` Gavin Hu
@ 2018-06-19 12:30                 ` Bruce Richardson
  2018-06-19 23:58                   ` Gavin Hu
  0 siblings, 1 reply; 61+ messages in thread
From: Bruce Richardson @ 2018-06-19 12:30 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Tue, Jun 19, 2018 at 10:41:06AM +0000, Gavin Hu wrote:
> Hi Bruce,
> 
> Thanks for your review, I submitted v12 patch to address all your new comments.
> 
> BTW, do you know why pwclient can NOT work successfully today? 
> It worked fine at my side previously, any changes at the server side? The error is below: 
> xmlrpc.client.ProtocolError: <ProtocolError for dpdk.org/dev/patchwork/xmlrpc/: 301 Moved Permanently>
> 
> Best Regards,
> Gavin

Paths on the server have changed, so you need to update your .pwclientrc
file to point to the new path. Patchwork is now at "patches.dpdk.org"
> 
> > -----Original Message-----
> > From: Bruce Richardson <bruce.richardson@intel.com>
> > Sent: Tuesday, June 19, 2018 6:12 PM
> > To: Gavin Hu <Gavin.Hu@arm.com>
> > Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja
> > command error
> > 
> > On Tue, Jun 19, 2018 at 09:37:44AM +0800, Gavin Hu wrote:
> > > On some linux distributions, eg: CentOS, the ninja executable has a
> > > different name: ninja-build, this patch is to check and adapt to it
> > > accordingly.
> > >
> > > ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> > >
> > > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > > ---
> > This is previously acked.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v12 6/6] devtools: expand meson cross compiling test coverage
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
@ 2018-06-19 12:31               ` Bruce Richardson
  0 siblings, 0 replies; 61+ messages in thread
From: Bruce Richardson @ 2018-06-19 12:31 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

On Tue, Jun 19, 2018 at 06:36:57PM +0800, Gavin Hu wrote:
> The default test script covers only default host cc compiler, either gcc or
> clang, the fix is to increase the coverage by adding one more to cover
> clang and the others for gcc.
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja command error
  2018-06-19 12:30                 ` Bruce Richardson
@ 2018-06-19 23:58                   ` Gavin Hu
  0 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-19 23:58 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev, nd, stable

Thanks Bruce, it works out with new url: 
url=http://patches.dpdk.org/xmlrpc/ 

> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Tuesday, June 19, 2018 8:30 PM
> To: Gavin Hu <Gavin.Hu@arm.com>
> Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing ninja
> command error
> 
> On Tue, Jun 19, 2018 at 10:41:06AM +0000, Gavin Hu wrote:
> > Hi Bruce,
> >
> > Thanks for your review, I submitted v12 patch to address all your new
> comments.
> >
> > BTW, do you know why pwclient can NOT work successfully today?
> > It worked fine at my side previously, any changes at the server side? The
> error is below:
> > xmlrpc.client.ProtocolError: <ProtocolError for
> > dpdk.org/dev/patchwork/xmlrpc/: 301 Moved Permanently>
> >
> > Best Regards,
> > Gavin
> 
> Paths on the server have changed, so you need to update your .pwclientrc
> file to point to the new path. Patchwork is now at "patches.dpdk.org"
> >
> > > -----Original Message-----
> > > From: Bruce Richardson <bruce.richardson@intel.com>
> > > Sent: Tuesday, June 19, 2018 6:12 PM
> > > To: Gavin Hu <Gavin.Hu@arm.com>
> > > Cc: dev@dpdk.org; nd <nd@arm.com>; stable@dpdk.org
> > > Subject: Re: [dpdk-dev] [PATCH v11 4/6] devtools: fix the missing
> > > ninja command error
> > >
> > > On Tue, Jun 19, 2018 at 09:37:44AM +0800, Gavin Hu wrote:
> > > > On some linux distributions, eg: CentOS, the ninja executable has
> > > > a different name: ninja-build, this patch is to check and adapt to
> > > > it accordingly.
> > > >
> > > > ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> > > >
> > > > Fixes: a55277a788 ("devtools: add test script for meson builds")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > > > Reviewed-by: Phil Yang <phil.yang@arm.com>
> > > > Reviewed-by: Song Zhu <song.zhu@arm.com>
> > > > ---
> > > This is previously acked.

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v12 3/6] build: fix the meson build warning
  2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-24 11:05               ` Jerin Jacob
  0 siblings, 0 replies; 61+ messages in thread
From: Jerin Jacob @ 2018-06-24 11:05 UTC (permalink / raw)
  To: Gavin Hu; +Cc: dev, nd, stable

-----Original Message-----
> Date: Tue, 19 Jun 2018 18:36:54 +0800
> From: Gavin Hu <gavin.hu@arm.com>
> To: dev@dpdk.org
> CC: nd@arm.com, gavin.hu@arm.com, stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v12 3/6] build: fix the meson build warning
> X-Mailer: git-send-email 2.11.0
> 
> 
> This is to fix the unnecessary warning output, it is not consistent with
> the configurations of other platforms.
> 
> WARNING: Cross file does not specify strip binary, result will not be
> stripped.
> 
> Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

> ---
>  config/arm/arm64_thunderx_linuxapp_gcc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
> index 7ff34af74..967d9d46d 100644
> --- a/config/arm/arm64_thunderx_linuxapp_gcc
> +++ b/config/arm/arm64_thunderx_linuxapp_gcc
> @@ -2,6 +2,7 @@
>  c = 'aarch64-linux-gnu-gcc'
>  cpp = 'aarch64-linux-gnu-cpp'
>  ar = 'aarch64-linux-gnu-gcc-ar'
> +strip = 'aarch64-linux-gnu-strip'
> 
>  [host_machine]
>  system = 'linux'
> --
> 2.11.0
> 

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
@ 2018-06-25  2:49               ` Gavin Hu
  2018-06-25 16:10                 ` [dpdk-stable] [dpdk-dev] " Ali Alnubani
  2018-06-27 21:00                 ` [dpdk-stable] " Thomas Monjalon
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 3/6] build: fix the meson build warning Gavin Hu
                                 ` (4 subsequent siblings)
  5 siblings, 2 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-25  2:49 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v13 3/6] build: fix the meson build warning
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-25  2:49               ` Gavin Hu
  2018-06-25 16:11                 ` [dpdk-stable] [dpdk-dev] " Ali Alnubani
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error Gavin Hu
                                 ` (3 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-25  2:49 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-25  2:49               ` Gavin Hu
  2018-06-27 21:13                 ` Thomas Monjalon
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 5/6] build: fix the meson cross compile error Gavin Hu
                                 ` (2 subsequent siblings)
  5 siblings, 1 reply; 61+ messages in thread
From: Gavin Hu @ 2018-06-25  2:49 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v13 5/6] build: fix the meson cross compile error
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
                                 ` (2 preceding siblings ...)
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-25  2:49               ` Gavin Hu
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-25  2:49 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v13 6/6] devtools: expand meson cross compiling test coverage
       [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
                                 ` (3 preceding siblings ...)
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-25  2:49               ` Gavin Hu
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
  5 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-25  2:49 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to increase the coverage by adding one more to cover
clang and the others for gcc.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..e7db0abe9 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -45,10 +45,18 @@ done
 build build-x86-default -Dmachine=nehalem
 
 # enable cross compilation if gcc cross-compiler is found
+c=aarch64-linux-gnu-gcc
+if ! command -v $c >/dev/null 2>&1 ; then
+	echo "## ERROR: $c is missing, cross compiling is aborting..."
+	return
+fi
+
+# compile the general v8a also for clang to increase coverage
+export CC="ccache clang"
+build build-arm64-host-clang --cross-file config/arm/arm64_armv8_linuxapp_gcc
+
 for f in config/arm/arm*gcc ; do
-	c=aarch64-linux-gnu-gcc
-	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
-	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
+	export CC="ccache gcc"
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) \
+		--cross-file $f
 done
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v13 1/6] mk: fix makefile based cross build errors
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-25 16:10                 ` Ali Alnubani
  2018-06-27 21:00                 ` [dpdk-stable] " Thomas Monjalon
  1 sibling, 0 replies; 61+ messages in thread
From: Ali Alnubani @ 2018-06-25 16:10 UTC (permalink / raw)
  To: 'Gavin Hu', 'dev@dpdk.org'
  Cc: 'nd@arm.com', 'stable@dpdk.org'

Tested-by: Ali Alnubani <alialnu@mellanox.com>

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Gavin Hu
> Sent: Monday, June 25, 2018 5:49 AM
> To: dev@dpdk.org
> Cc: nd@arm.com; gavin.hu@arm.com; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v13 1/6] mk: fix makefile based cross build errors
> 
> From: gavin hu <gavin.hu@arm.com>
> 
> 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 <gavin.hu@arm.com>
> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>
> ---
>  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


^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v13 3/6] build: fix the meson build warning
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-25 16:11                 ` Ali Alnubani
  0 siblings, 0 replies; 61+ messages in thread
From: Ali Alnubani @ 2018-06-25 16:11 UTC (permalink / raw)
  To: 'Gavin Hu', 'dev@dpdk.org'
  Cc: 'nd@arm.com', 'stable@dpdk.org'

Tested-by: Ali Alnubani <alialnu@mellanox.com>

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Gavin Hu
> Sent: Monday, June 25, 2018 5:49 AM
> To: dev@dpdk.org
> Cc: nd@arm.com; gavin.hu@arm.com; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v13 3/6] build: fix the meson build warning
> 
> This is to fix the unnecessary warning output, it is not consistent with the
> configurations of other platforms.
> 
> WARNING: Cross file does not specify strip binary, result will not be stripped.
> 
> Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> ---
>  config/arm/arm64_thunderx_linuxapp_gcc | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/config/arm/arm64_thunderx_linuxapp_gcc
> b/config/arm/arm64_thunderx_linuxapp_gcc
> index 7ff34af74..967d9d46d 100644
> --- a/config/arm/arm64_thunderx_linuxapp_gcc
> +++ b/config/arm/arm64_thunderx_linuxapp_gcc
> @@ -2,6 +2,7 @@
>  c = 'aarch64-linux-gnu-gcc'
>  cpp = 'aarch64-linux-gnu-cpp'
>  ar = 'aarch64-linux-gnu-gcc-ar'
> +strip = 'aarch64-linux-gnu-strip'
> 
>  [host_machine]
>  system = 'linux'
> --
> 2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-25 16:10                 ` [dpdk-stable] [dpdk-dev] " Ali Alnubani
@ 2018-06-27 21:00                 ` Thomas Monjalon
  1 sibling, 0 replies; 61+ messages in thread
From: Thomas Monjalon @ 2018-06-27 21:00 UTC (permalink / raw)
  To: Gavin Hu; +Cc: stable, dev, nd

25/06/2018 04:49, Gavin Hu:
> From: gavin hu <gavin.hu@arm.com>
> 
> 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 <gavin.hu@arm.com>
> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Reviewed-by: Steve Capper <Steve.Capper@arm.com>

Acked-by: Thomas Monjalon <thomas@monjalon.net>

^ permalink raw reply	[flat|nested] 61+ messages in thread

* Re: [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error
  2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-27 21:13                 ` Thomas Monjalon
  0 siblings, 0 replies; 61+ messages in thread
From: Thomas Monjalon @ 2018-06-27 21:13 UTC (permalink / raw)
  To: Gavin Hu; +Cc: stable, dev, nd

25/06/2018 04:49, Gavin Hu:
> On some linux distributions, eg: CentOS, the ninja executable has a
> different name: ninja-build, this patch is to check and adapt to it
> accordingly.
> 
> ./devtools/test-meson-builds.sh: line 24: ninja: command not found
> 
> Fixes: a55277a788 ("devtools: add test script for meson builds")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Song Zhu <song.zhu@arm.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> +if command -v ninja >/dev/null 2>&1 ; then
> +    ninja_cmd=ninja
> +elif command -v ninja-build >/dev/null 2>&1 ; then
> +    ninja_cmd=ninja-build
> +else
> +    echo "## ERROR: ninja is missing, please install..."

No need of double hash to get attention as it is the last printed line.
Matter of taste, but I prefer more simple (not interpreted) message like:
	"ERROR: ninja is not found"

Or even simpler, no message at all and try with ninja_cmd=ninja as default:

if command -v ninja-build >/dev/null 2>&1 ; then
	ninja_cmd=ninja-build
else
	ninja_cmd=ninja
fi

Will still have the shell message in case of ninja not installed:
	ninja: command not found

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v14 1/6] mk: fix makefile based cross build errors
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
@ 2018-06-29 17:27                 ` Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 3/6] build: fix the meson build warning Gavin Hu
                                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-29 17:27 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

From: gavin hu <gavin.hu@arm.com>

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 <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Tested-by: Ali Alnubani <alialnu@mellanox.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
---
 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

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v14 3/6] build: fix the meson build warning
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 1/6] mk: fix makefile based cross build errors Gavin Hu
@ 2018-06-29 17:27                 ` Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 4/6] devtools: fix the missing ninja command error Gavin Hu
                                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-29 17:27 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

This is to fix the unnecessary warning output, it is not consistent with
the configurations of other platforms.

WARNING: Cross file does not specify strip binary, result will not be
stripped.

Fixes: e53a5299d2 ("build: support vendor specific ARM cross builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Tested-by: Ali Alnubani <alialnu@mellanox.com>
---
 config/arm/arm64_thunderx_linuxapp_gcc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config/arm/arm64_thunderx_linuxapp_gcc b/config/arm/arm64_thunderx_linuxapp_gcc
index 7ff34af74..967d9d46d 100644
--- a/config/arm/arm64_thunderx_linuxapp_gcc
+++ b/config/arm/arm64_thunderx_linuxapp_gcc
@@ -2,6 +2,7 @@
 c = 'aarch64-linux-gnu-gcc'
 cpp = 'aarch64-linux-gnu-cpp'
 ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
 
 [host_machine]
 system = 'linux'
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v14 4/6] devtools: fix the missing ninja command error
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 1/6] mk: fix makefile based cross build errors Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 3/6] build: fix the meson build warning Gavin Hu
@ 2018-06-29 17:27                 ` Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 5/6] build: fix the meson cross compile error Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
  4 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-29 17:27 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

On some linux distributions, eg: CentOS, the ninja executable has a
different name: ninja-build, this patch is to check and adapt to it
accordingly.

./devtools/test-meson-builds.sh: line 24: ninja: command not found

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index f2ad05f32..9bb5b93bd 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -10,6 +10,15 @@
 srcdir=$(dirname $(readlink -m $0))/..
 MESON=${MESON:-meson}
 
+if command -v ninja >/dev/null 2>&1 ; then
+    ninja_cmd=ninja
+elif command -v ninja-build >/dev/null 2>&1 ; then
+    ninja_cmd=ninja-build
+else
+    echo "## ERROR: ninja is missing, please install..."
+    exit 1
+fi
+
 build () # <directory> <meson options>
 {
 	builddir=$1
@@ -20,8 +29,8 @@ build () # <directory> <meson options>
 		$MESON $options $srcdir $builddir
 		unset CC
 	fi
-	echo "ninja -C $builddir"
-	ninja -C $builddir
+	echo "$ninja_cmd -C $builddir"
+	$ninja_cmd -C $builddir
 }
 
 # shared and static linked builds with gcc and clang
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v14 5/6] build: fix the meson cross compile error
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
                                   ` (2 preceding siblings ...)
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 4/6] devtools: fix the missing ninja command error Gavin Hu
@ 2018-06-29 17:27                 ` Gavin Hu
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
  4 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-29 17:27 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The following error hits if host cc compiler is clang(default one in most
linux distributions) and the cross compiler is gcc.

The root cause is: the hybride compilers add the warning options to the
meson project as project arguments, which apply for both host compiling and
cross compiling. But some options such as '-Wno-format-truncation' are not
supported nor recognized by clang, so they have to be removed from the
project arguments for the host compiler to run smoothily and added back as
cflags for the cross compiler to compile for cross source files.

The fix is remove unrecognized warning options from the meson project
arguments shared by gcc and clang, as add them specifically for gcc or
clang as cflags.

[265/893] Compiling C object
'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'.  warning: unknown
warning option '-Wno-format-truncation' [-Wunknown-warning-option]

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Reviewed-by: Steve Capper <Steve.Capper@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build    | 3 +--
 drivers/meson.build   | 3 +++
 examples/meson.build  | 4 ++++
 lib/meson.build       | 4 ++++
 test/test/meson.build | 7 ++++++-
 5 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 50081b572..272d4a838 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -57,8 +57,7 @@ add_project_arguments('-include', 'rte_config.h', language: 'c')
 warning_flags = [
 	'-Wsign-compare',
 	'-Wcast-qual',
-	'-Wno-address-of-packed-member',
-	'-Wno-format-truncation'
+	'-Wno-address-of-packed-member'
 ]
 foreach arg: warning_flags
 	if cc.has_argument(arg)
diff --git a/drivers/meson.build b/drivers/meson.build
index ac6c97297..1737d86b8 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -32,6 +32,9 @@ foreach class:driver_classes
 		sources = []
 		objs = []
 		cflags = machine_args
+		if cc.has_argument('-Wno-format-truncation')
+			cflags += '-Wno-format-truncation'
+		endif
 		includes = [include_directories(drv_path)]
 		# set up internal deps. Drivers can append/override as necessary
 		deps = std_deps
diff --git a/examples/meson.build b/examples/meson.build
index 3d1568497..e6558875a 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -24,6 +24,10 @@ foreach example: examples
 	sources = []
 	allow_experimental_apis = false
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+		cflags += '-Wno-format-truncation'
+	endif
+
 	ext_deps = [execinfo]
 	includes = [include_directories(example)]
 	deps = ['eal', 'mempool', 'net', 'mbuf', 'ethdev', 'cmdline']
diff --git a/lib/meson.build b/lib/meson.build
index 9d11571f9..fefb3605d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -34,6 +34,10 @@ foreach l:libraries
 	headers = []
 	includes = []
 	cflags = machine_args
+	if cc.has_argument('-Wno-format-truncation')
+	    cflags += '-Wno-format-truncation'
+	endif
+
 	objs = [] # other object files to link against, used e.g. for
 	          # instruction-set optimized versions of code
 
diff --git a/test/test/meson.build b/test/test/meson.build
index a907fd256..dc4ba5514 100644
--- a/test/test/meson.build
+++ b/test/test/meson.build
@@ -235,6 +235,11 @@ if dpdk_conf.has('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 
+cflags = machine_args
+if cc.has_argument('-Wno-format-truncation')
+    cflags += '-Wno-format-truncation'
+endif
+
 test_dep_objs = []
 compress_test_dep = dependency('zlib', required: false)
 if compress_test_dep.found()
@@ -260,7 +265,7 @@ if get_option('tests')
 		test_sources,
 		link_whole: link_libs,
 		dependencies: test_dep_objs,
-		c_args: [machine_args, '-DALLOW_EXPERIMENTAL_API'],
+		c_args: [cflags, '-DALLOW_EXPERIMENTAL_API'],
 		install_rpath: driver_install_path,
 		install: false)
 
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

* [dpdk-stable] [PATCH v14 6/6] devtools: expand meson cross compiling test coverage
       [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
                                   ` (3 preceding siblings ...)
  2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 5/6] build: fix the meson cross compile error Gavin Hu
@ 2018-06-29 17:27                 ` Gavin Hu
  4 siblings, 0 replies; 61+ messages in thread
From: Gavin Hu @ 2018-06-29 17:27 UTC (permalink / raw)
  To: dev; +Cc: nd, gavin.hu, stable

The default test script covers only default host cc compiler, either gcc or
clang, the fix is to increase the coverage by adding one more to cover
clang and the others for gcc.

Fixes: a55277a788 ("devtools: add test script for meson builds")
Cc: stable@dpdk.org

Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Song Zhu <song.zhu@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/test-meson-builds.sh | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9bb5b93bd..f38304e6e 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -15,7 +15,7 @@ if command -v ninja >/dev/null 2>&1 ; then
 elif command -v ninja-build >/dev/null 2>&1 ; then
     ninja_cmd=ninja-build
 else
-    echo "## ERROR: ninja is missing, please install..."
+    echo "ERROR: ninja is not found"
     exit 1
 fi
 
@@ -45,10 +45,16 @@ done
 build build-x86-default -Dmachine=nehalem
 
 # enable cross compilation if gcc cross-compiler is found
-for f in config/arm/arm*gcc ; do
-	c=aarch64-linux-gnu-gcc
-	if ! command -v $c >/dev/null 2>&1 ; then
-		continue
-	fi
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) --cross-file $f
-done
+c=aarch64-linux-gnu-gcc
+if command -v $c >/dev/null 2>&1 ; then
+	# compile the general v8a also for clang to increase coverage
+	export CC="ccache clang"
+	build build-arm64-host-clang --cross-file \
+		config/arm/arm64_armv8_linuxapp_gcc
+
+	for f in config/arm/arm*gcc ; do
+		export CC="ccache gcc"
+		build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) \
+			--cross-file $f
+	done
+fi
-- 
2.11.0

^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2018-06-29 17:27 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20180614095127.16245-1-git-send-email-gavin.hu@arm.com>
     [not found] ` <20180615070811.18686-1-gavin.hu@arm.com>
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 1/7] mk: fix cross build errors Gavin Hu
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 3/7] devtools: fix the Exec format error Gavin Hu
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 4/7] build: fix the meson build warning Gavin Hu
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 5/7] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 6/7] build: fix the meson cross compile error Gavin Hu
2018-06-15  7:08   ` [dpdk-stable] [PATCH v7 7/7] devtools: expand meson cross compiling coverage Gavin Hu
     [not found]   ` <20180615080120.29253-1-gavin.hu@arm.com>
2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 1/6] mk: fix cross build errors Gavin Hu
2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 3/6] build: fix the meson build warning Gavin Hu
2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 4/6] devtools: fix the missing ninja command error on CentOS Gavin Hu
2018-06-15  8:24       ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15  8:01     ` [dpdk-stable] [PATCH v8 6/6] devtools: expand meson cross compiling coverage Gavin Hu
2018-06-15  8:28       ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-15  9:31         ` Gavin Hu
     [not found]     ` <20180615092605.12043-1-gavin.hu@arm.com>
2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 3/6] build: fix the meson build warning Gavin Hu
2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-15  9:59         ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15  9:26       ` [dpdk-stable] [PATCH v9 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-15 10:01         ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
     [not found]       ` <20180615102143.12778-1-gavin.hu@arm.com>
2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 3/6] build: fix the meson build warning Gavin Hu
2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-15 13:27           ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-15 10:21         ` [dpdk-stable] [PATCH v10 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-15 14:14           ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-19  1:44             ` Gavin Hu
     [not found]         ` <20180619013746.13268-1-gavin.hu@arm.com>
2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 3/6] build: fix the meson build warning Gavin Hu
2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-19 10:12             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-19 10:41               ` Gavin Hu
2018-06-19 12:30                 ` Bruce Richardson
2018-06-19 23:58                   ` Gavin Hu
2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-19  1:37           ` [dpdk-stable] [PATCH v11 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-19 10:14             ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
2018-06-19 10:15             ` Bruce Richardson
     [not found]           ` <20180619103657.19186-1-gavin.hu@arm.com>
2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 3/6] build: fix the meson build warning Gavin Hu
2018-06-24 11:05               ` [dpdk-stable] [dpdk-dev] " Jerin Jacob
2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-19 10:36             ` [dpdk-stable] [PATCH v12 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
2018-06-19 12:31               ` [dpdk-stable] [dpdk-dev] " Bruce Richardson
     [not found]             ` <20180625024913.17219-1-gavin.hu@arm.com>
2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-25 16:10                 ` [dpdk-stable] [dpdk-dev] " Ali Alnubani
2018-06-27 21:00                 ` [dpdk-stable] " Thomas Monjalon
2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 3/6] build: fix the meson build warning Gavin Hu
2018-06-25 16:11                 ` [dpdk-stable] [dpdk-dev] " Ali Alnubani
2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-27 21:13                 ` Thomas Monjalon
2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-25  2:49               ` [dpdk-stable] [PATCH v13 6/6] devtools: expand meson cross compiling test coverage Gavin Hu
     [not found]               ` <20180629172738.2121-1-gavin.hu@arm.com>
2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 1/6] mk: fix makefile based cross build errors Gavin Hu
2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 3/6] build: fix the meson build warning Gavin Hu
2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 4/6] devtools: fix the missing ninja command error Gavin Hu
2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 5/6] build: fix the meson cross compile error Gavin Hu
2018-06-29 17:27                 ` [dpdk-stable] [PATCH v14 6/6] devtools: expand meson cross compiling test coverage Gavin Hu

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).