DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test
@ 2020-06-14 22:57 Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
                   ` (4 more replies)
  0 siblings, 5 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 22:57 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

In order to better support PPC and Windows,
their compilation is tested on Linux with Meson
with the script test-meson-builds.sh,
supposed to be called in every CI labs.

Thomas Monjalon (4):
  devtools: shrink cross-compilation test definition
  devtools: allow non-standard toolchain in meson test
  devtools: add ppc64 in meson build test
  devtools: add Windows cross-build test with MinGW

 config/ppc/ppc64le-power8-linux-gcc         | 11 ++++++
 config/x86/{meson_mingw.txt => cross-mingw} |  0
 devtools/test-meson-builds.sh               | 42 +++++++++++++++------
 doc/guides/windows_gsg/build_dpdk.rst       |  2 +-
 4 files changed, 43 insertions(+), 12 deletions(-)
 create mode 100644 config/ppc/ppc64le-power8-linux-gcc
 rename config/x86/{meson_mingw.txt => cross-mingw} (100%)

-- 
2.26.2


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

* [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition
  2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
@ 2020-06-14 22:57 ` Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 22:57 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

Each cross-compilation case needs to define the target compiler
and the meson cross file.
Given the compiler is already defined in the cross file,
the latter is enough.

The function "build" is changed to accept a cross file alternatively
to the compiler name. In the case of a file (detected if readable),
the compiler is extracted with sed and tr, and the option --cross-file
is automatically added.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/test-meson-builds.sh | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 18b874fac5..602167e43a 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -117,16 +117,24 @@ install_target () # <builddir> <installdir>
 	fi
 }
 
-build () # <directory> <target compiler> <meson options>
+build () # <directory> <target compiler | cross file> <meson options>
 {
 	targetdir=$1
 	shift
-	targetcc=$1
+	crossfile=
+	[ -r $1 ] && crossfile=$1 || targetcc=$1
 	shift
 	# skip build if compiler not available
 	command -v ${CC##* } >/dev/null 2>&1 || return 0
+	if [ -n "$crossfile" ] ; then
+		cross="--cross-file $crossfile"
+		targetcc=$(sed -n 's,^c[[:space:]]*=[[:space:]]*,,p' \
+			$crossfile | tr -d "'" | tr -d '"')
+	else
+		cross=
+	fi
 	load_env $targetcc || return 0
-	config $srcdir $builds_dir/$targetdir --werror $*
+	config $srcdir $builds_dir/$targetdir $cross --werror $*
 	compile $builds_dir/$targetdir
 	if [ -n "$DPDK_ABI_REF_VERSION" ]; then
 		abirefdir=${DPDK_ABI_REF_DIR:-reference}/$DPDK_ABI_REF_VERSION
@@ -186,17 +194,15 @@ if [ "$ok" = "false" ] ; then
 fi
 build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine $use_shared
 
-c=aarch64-linux-gnu-gcc
 # generic armv8a with clang as host compiler
+f=$srcdir/config/arm/arm64_armv8_linux_gcc
 export CC="clang"
-build build-arm64-host-clang $c $use_shared \
-	--cross-file $srcdir/config/arm/arm64_armv8_linux_gcc
+build build-arm64-host-clang $f $use_shared
 unset CC
-# all gcc/arm configurations
+# some gcc/arm configurations
 for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
 	export CC="$CCACHE gcc"
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $c \
-		$use_shared --cross-file $f
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $f $use_shared
 	unset CC
 done
 
-- 
2.26.2


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

* [dpdk-dev] [PATCH 2/4] devtools: allow non-standard toolchain in meson test
  2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
@ 2020-06-14 22:57 ` Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 22:57 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

If a compiler is not found in $PATH, the compilation test is skipped.
In some cases, the compiler could be found after extending $PATH
in an environment configuration script (called by load-devel-config).

The decision to skip is deferred to a later stage, after loading the
configuration script.

In such case, the variable DPDK_TARGET, used by the configuration script
as input, is the compiler name.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/test-meson-builds.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 602167e43a..1d80a029aa 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -52,9 +52,15 @@ load_env () # <target compiler>
 	export CFLAGS=$default_cflags
 	export LDFLAGS=$default_ldflags
 	unset DPDK_MESON_OPTIONS
-	command -v $targetcc >/dev/null 2>&1 || return 1
-	DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p')
+	if command -v $targetcc >/dev/null 2>&1 ; then
+		DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p')
+	else # toolchain not yet in PATH: its name should be enough
+		DPDK_TARGET=$targetcc
+	fi
+	# config input: $DPDK_TARGET
 	. $srcdir/devtools/load-devel-config
+	# config output: $DPDK_MESON_OPTIONS, $PATH, $PKG_CONFIG_PATH, etc
+	command -v $targetcc >/dev/null 2>&1 || return 1
 }
 
 config () # <dir> <builddir> <meson options>
-- 
2.26.2


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

* [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
@ 2020-06-14 22:57 ` Thomas Monjalon
  2020-06-15 21:43   ` David Christensen
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  4 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 22:57 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

The CPU is defined as Power8, running as little endian.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 config/ppc/ppc64le-power8-linux-gcc | 11 +++++++++++
 devtools/test-meson-builds.sh       |  5 +++++
 2 files changed, 16 insertions(+)
 create mode 100644 config/ppc/ppc64le-power8-linux-gcc

diff --git a/config/ppc/ppc64le-power8-linux-gcc b/config/ppc/ppc64le-power8-linux-gcc
new file mode 100644
index 0000000000..51f7ceebf3
--- /dev/null
+++ b/config/ppc/ppc64le-power8-linux-gcc
@@ -0,0 +1,11 @@
+[binaries]
+c = 'powerpc64le-linux-gcc'
+cpp = 'powerpc64le-linux-cpp'
+ar = 'powerpc64le-linux-gcc-ar'
+strip = 'powerpc64le-linux-strip'
+
+[host_machine]
+system = 'linux'
+cpu_family = 'ppc64'
+cpu = 'power8'
+endian = 'little'
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 1d80a029aa..1cde17a2e5 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -212,6 +212,11 @@ for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
 	unset CC
 done
 
+# ppc configurations
+for f in $srcdir/config/ppc/ppc* ; do
+	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
+done
+
 # Test installation of the x86-default target, to be used for checking
 # the sample apps build using the pkg-config file for cflags and libs
 build_path=$(readlink -f $builds_dir/build-x86-default)
-- 
2.26.2


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

* [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW
  2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
                   ` (2 preceding siblings ...)
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
@ 2020-06-14 22:57 ` Thomas Monjalon
  2020-06-14 23:09   ` Thomas Monjalon
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  4 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 22:57 UTC (permalink / raw)
  To: dev
  Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk,
	Harini Ramakrishnan, Omar Cardona, Pallavi Kadam, Ranjit Menon,
	John McNamara, Marko Kovacevic

The Meson cross file is renamed from meson_mingw.txt to cross-mingw,
and is added to test-meson-builds.sh.

The only example supported on Windows so far is "helloworld",
that's why the default list of examples is overriden.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 config/x86/{meson_mingw.txt => cross-mingw} | 0
 devtools/test-meson-builds.sh               | 3 +++
 doc/guides/windows_gsg/build_dpdk.rst       | 2 +-
 3 files changed, 4 insertions(+), 1 deletion(-)
 rename config/x86/{meson_mingw.txt => cross-mingw} (100%)

diff --git a/config/x86/meson_mingw.txt b/config/x86/cross-mingw
similarity index 100%
rename from config/x86/meson_mingw.txt
rename to config/x86/cross-mingw
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 1cde17a2e5..52635c73d1 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -200,6 +200,9 @@ if [ "$ok" = "false" ] ; then
 fi
 build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine $use_shared
 
+# x86 MinGW
+build build-x86-mingw $srcdir/config/x86/cross-mingw -Dexamples=helloworld
+
 # generic armv8a with clang as host compiler
 f=$srcdir/config/arm/arm64_armv8_linux_gcc
 export CC="clang"
diff --git a/doc/guides/windows_gsg/build_dpdk.rst b/doc/guides/windows_gsg/build_dpdk.rst
index d46e84e3fb..d517f08f0d 100644
--- a/doc/guides/windows_gsg/build_dpdk.rst
+++ b/doc/guides/windows_gsg/build_dpdk.rst
@@ -109,7 +109,7 @@ Depending on the distribution, paths in this file may need adjustments.
 
 .. code-block:: console
 
-    meson --cross-file config/x86/meson_mingw.txt -Dexamples=helloworld build
+    meson --cross-file config/x86/cross-mingw -Dexamples=helloworld build
     ninja -C build
 
 
-- 
2.26.2


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

* Re: [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
@ 2020-06-14 23:09   ` Thomas Monjalon
  2020-06-15  1:05     ` Dmitry Kozlyuk
  0 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-14 23:09 UTC (permalink / raw)
  To: dmitry.kozliuk
  Cc: dev, david.marchand, bruce.richardson, Harini Ramakrishnan,
	Omar Cardona, Pallavi Kadam, Ranjit Menon

15/06/2020 00:57, Thomas Monjalon:
> The Meson cross file is renamed from meson_mingw.txt to cross-mingw,
> and is added to test-meson-builds.sh.
> 
> The only example supported on Windows so far is "helloworld",
> that's why the default list of examples is overriden.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---

There is a warning with MinGW on Linux:

In file included from lib/librte_eal/include/rte_eal.h:15,
                 from lib/librte_eal/common/eal_common_options.c:26:
lib/librte_eal/common/eal_common_options.c:
	In function ‘eal_adjust_config’:
lib/librte_eal/windows/include/sched.h:63:55: error:
	‘default_set._bits[1]’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
   63 |   (dst)->_bits[_i] = (src1)->_bits[_i] & (src2)->_bits[_i]; \
      |                                                       ^


% x86_64-w64-mingw32-gcc --version
x86_64-w64-mingw32-gcc (GCC) 10.1.0


It looks to be a false positive, but we need to find a way to remove
the warning with a code change.

This workaround in lib/librte_eal/common/eal_common_options.c
makes 200% sure the default_set is initialized:

-       if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
-                               &default_set))
-               CPU_ZERO(&default_set);
-
+       CPU_ZERO(&default_set);
+       pthread_getaffinity_np(pthread_self(),
+                       sizeof default_set, &default_set);




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

* Re: [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW
  2020-06-14 23:09   ` Thomas Monjalon
@ 2020-06-15  1:05     ` Dmitry Kozlyuk
  2020-06-15  7:51       ` Thomas Monjalon
  0 siblings, 1 reply; 22+ messages in thread
From: Dmitry Kozlyuk @ 2020-06-15  1:05 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, david.marchand, bruce.richardson, Harini Ramakrishnan,
	Omar Cardona, Pallavi Kadam, Ranjit Menon

> It looks to be a false positive, but we need to find a way to remove
> the warning with a code change.
> 
> This workaround in lib/librte_eal/common/eal_common_options.c
> makes 200% sure the default_set is initialized:
> 
> -       if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
> -                               &default_set))
> -               CPU_ZERO(&default_set);
> -
> +       CPU_ZERO(&default_set);
> +       pthread_getaffinity_np(pthread_self(),
> +                       sizeof default_set, &default_set);
>

Doesn't look like a false-positive to me. That's where it's been spotted
and explained before:

	https://mails.dpdk.org/archives/dev/2020-May/168634.html

And this series eliminates it along with other improvements:

	http://patchwork.dpdk.org/patch/70727/

-- 
Dmitry Kozlyuk

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

* Re: [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW
  2020-06-15  1:05     ` Dmitry Kozlyuk
@ 2020-06-15  7:51       ` Thomas Monjalon
  0 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15  7:51 UTC (permalink / raw)
  To: Dmitry Kozlyuk, Tasnim Bashar
  Cc: dev, david.marchand, bruce.richardson, Harini Ramakrishnan,
	Omar Cardona, Pallavi Kadam, Ranjit Menon

15/06/2020 03:05, Dmitry Kozlyuk:
> > It looks to be a false positive, but we need to find a way to remove
> > the warning with a code change.
> > 
> > This workaround in lib/librte_eal/common/eal_common_options.c
> > makes 200% sure the default_set is initialized:
> > 
> > -       if (pthread_getaffinity_np(pthread_self(), sizeof(rte_cpuset_t),
> > -                               &default_set))
> > -               CPU_ZERO(&default_set);
> > -
> > +       CPU_ZERO(&default_set);
> > +       pthread_getaffinity_np(pthread_self(),
> > +                       sizeof default_set, &default_set);
> >
> 
> Doesn't look like a false-positive to me. That's where it's been spotted
> and explained before:
> 
> 	https://mails.dpdk.org/archives/dev/2020-May/168634.html
> 
> And this series eliminates it along with other improvements:
> 
> 	http://patchwork.dpdk.org/patch/70727/

I see.
So the fix must be explained (and probably a separate patch).



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

* Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
@ 2020-06-15 21:43   ` David Christensen
  2020-06-15 22:13     ` Thomas Monjalon
  0 siblings, 1 reply; 22+ messages in thread
From: David Christensen @ 2020-06-15 21:43 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: david.marchand, bruce.richardson, dmitry.kozliuk

On 6/14/20 3:57 PM, Thomas Monjalon wrote:
> diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> index 1d80a029aa..1cde17a2e5 100755
> --- a/devtools/test-meson-builds.sh
> +++ b/devtools/test-meson-builds.sh
> @@ -212,6 +212,11 @@ for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
>   	unset CC
>   done
> 
> +# ppc configurations
> +for f in $srcdir/config/ppc/ppc* ; do
> +	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
> +done
> +

The entire script file is poorly structured for multi-architecture 
builds.  The script fails on PPC64LE even before your changes:

------------------------------------
# shared and static linked builds with gcc and clang
for c in gcc clang ; do
        command -v $c >/dev/null 2>&1 || continue
        for s in static shared ; do
                export CC="$CCACHE $c"
                build build-$c-$s $c --default-library=$s
                unset CC
        done
done
------------------------------------

Compilation on clang is not currently supported due to build failures on 
Altivec data types for vectorization:

In file included from ../lib/librte_eal/common/eal_common_options.c:33:
In file included from ../lib/librte_eal/ppc/include/rte_memcpy.h:12:
In file included from ../lib/librte_eal/ppc/include/rte_altivec.h:10:
/usr/lib64/clang/9.0.1/include/altivec.h:55:19: error: unknown type name 
'vector'
static __inline__ vector bool char __ATTRS_o_ai
                   ^
/usr/lib64/clang/9.0.1/include/altivec.h:56:10: error: unknown type name 
'vector'
vec_perm(vector bool char __a, vector bool char __b, vector unsigned 
char __c);

and C99 atomics:

../lib/librte_eal/ppc/include/rte_atomic.h:85:9: error: implicit 
declaration of function '__atomic_exchange_2' is invalid in C99 
[-Werror,-Wimplicit-function-declaration]
         return __atomic_exchange_2(dst, val, __ATOMIC_SEQ_CST);
                ^

The script then immediately launches into an x86 build no matter what 
architecture the system is running on:

------------------------------------
default_machine='nehalem'
ok=$(cc -march=$default_machine -E - < /dev/null > /dev/null 2>&1 || 
echo false)
if [ "$ok" = "false" ] ; then
         default_machine='corei7'
fi
build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine 
$use_shared
------------------------------------

Which also fails on a Power system:

ninja -v -C ./build-x86-default
ninja: Entering directory `./build-x86-default'
[1/2265] cc -Ilib/76b5a35@@rte_kvargs@sta -Ilib -I../lib -I. -I../ 
-Iconfig -I../config -Ilib/librte_eal/include 
-I../lib/librte_eal/include -Ilib/librte_eal/linux/include 
-I../lib/librte_eal/linux/include -Ilib/librte_eal/ppc/include 
-I../lib/librte_eal/ppc/include -Ilib/librte_kvargs 
-I../lib/librte_kvargs -fdiagnostics-color=always -pipe 
-D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -include 
rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral 
-Wformat-security -Wmissing-declarations -Wmissing-prototypes 
-Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare 
-Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned 
-Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -mcpu=corei7 
-mtune=corei7 -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API 
-Wno-format-truncation  -MD -MQ 
'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -MF 
'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o.d' -o 
'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -c 
../lib/librte_kvargs/rte_kvargs.c
FAILED: lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o


I think the logic of looping through supported configs for test builds 
is the right one, but more changes are required for multi-architecture 
support in this script.  For now I'd abandon the PPC/ARM support 
entirely in this script.

Dave

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

* Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-15 21:43   ` David Christensen
@ 2020-06-15 22:13     ` Thomas Monjalon
  2020-06-16 20:35       ` David Christensen
  0 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:13 UTC (permalink / raw)
  To: David Christensen; +Cc: dev, david.marchand, bruce.richardson

15/06/2020 23:43, David Christensen:
> On 6/14/20 3:57 PM, Thomas Monjalon wrote:
> > diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
> > index 1d80a029aa..1cde17a2e5 100755
> > --- a/devtools/test-meson-builds.sh
> > +++ b/devtools/test-meson-builds.sh
> > @@ -212,6 +212,11 @@ for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
> >   	unset CC
> >   done
> > 
> > +# ppc configurations
> > +for f in $srcdir/config/ppc/ppc* ; do
> > +	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
> > +done
> > +
> 
> The entire script file is poorly structured for multi-architecture 
> builds.  The script fails on PPC64LE even before your changes:

This script supports only builds from x86 Linux so far.
This patch is adding cross-compilation of ppc from x86,
and it works fine.


> ------------------------------------
> # shared and static linked builds with gcc and clang
> for c in gcc clang ; do
>         command -v $c >/dev/null 2>&1 || continue
>         for s in static shared ; do
>                 export CC="$CCACHE $c"
>                 build build-$c-$s $c --default-library=$s
>                 unset CC
>         done
> done
> ------------------------------------
> 
> Compilation on clang is not currently supported due to build failures on 
> Altivec data types for vectorization:
> 
> In file included from ../lib/librte_eal/common/eal_common_options.c:33:
> In file included from ../lib/librte_eal/ppc/include/rte_memcpy.h:12:
> In file included from ../lib/librte_eal/ppc/include/rte_altivec.h:10:
> /usr/lib64/clang/9.0.1/include/altivec.h:55:19: error: unknown type name 
> 'vector'
> static __inline__ vector bool char __ATTRS_o_ai
>                    ^
> /usr/lib64/clang/9.0.1/include/altivec.h:56:10: error: unknown type name 
> 'vector'
> vec_perm(vector bool char __a, vector bool char __b, vector unsigned 
> char __c);
> 
> and C99 atomics:
> 
> ../lib/librte_eal/ppc/include/rte_atomic.h:85:9: error: implicit 
> declaration of function '__atomic_exchange_2' is invalid in C99 
> [-Werror,-Wimplicit-function-declaration]
>          return __atomic_exchange_2(dst, val, __ATOMIC_SEQ_CST);
>                 ^
> 
> The script then immediately launches into an x86 build no matter what 
> architecture the system is running on:
> 
> ------------------------------------
> default_machine='nehalem'
> ok=$(cc -march=$default_machine -E - < /dev/null > /dev/null 2>&1 || 
> echo false)
> if [ "$ok" = "false" ] ; then
>          default_machine='corei7'
> fi
> build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine 
> $use_shared
> ------------------------------------
> 
> Which also fails on a Power system:
> 
> ninja -v -C ./build-x86-default
> ninja: Entering directory `./build-x86-default'
> [1/2265] cc -Ilib/76b5a35@@rte_kvargs@sta -Ilib -I../lib -I. -I../ 
> -Iconfig -I../config -Ilib/librte_eal/include 
> -I../lib/librte_eal/include -Ilib/librte_eal/linux/include 
> -I../lib/librte_eal/linux/include -Ilib/librte_eal/ppc/include 
> -I../lib/librte_eal/ppc/include -Ilib/librte_kvargs 
> -I../lib/librte_kvargs -fdiagnostics-color=always -pipe 
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -include 
> rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral 
> -Wformat-security -Wmissing-declarations -Wmissing-prototypes 
> -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare 
> -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned 
> -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -mcpu=corei7 
> -mtune=corei7 -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API 
> -Wno-format-truncation  -MD -MQ 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -MF 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o.d' -o 
> 'lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o' -c 
> ../lib/librte_kvargs/rte_kvargs.c
> FAILED: lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.o
> 
> 
> I think the logic of looping through supported configs for test builds 
> is the right one, but more changes are required for multi-architecture 
> support in this script.  For now I'd abandon the PPC/ARM support 
> entirely in this script.

I am adding PPC compilation check to avoid having PPC broken,
because after asking for many years to IBM execs,
there is still no PPC CI integrated in DPDK patchwork.
If you don't think this small step is going in the right direction,
then I will stop bothering about PPC support,
and we should probably completely drop PPC support I guess.



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

* [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test
  2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
                   ` (3 preceding siblings ...)
  2020-06-14 22:57 ` [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
@ 2020-06-15 22:22 ` Thomas Monjalon
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
                     ` (4 more replies)
  4 siblings, 5 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:22 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

In order to better support PPC and Windows,
their compilation is tested on Linux with Meson
with the script test-meson-builds.sh,
supposed to be called in every CI labs.


Thomas Monjalon (4):
  devtools: shrink cross-compilation test definition
  devtools: allow non-standard toolchain in meson test
  devtools: add ppc64 in meson build test
  devtools: add Windows cross-build test with MinGW


v2: update some explanations and fix ABI check


 config/ppc/ppc64le-power8-linux-gcc         | 11 ++++++
 config/x86/{meson_mingw.txt => cross-mingw} |  0
 devtools/test-meson-builds.sh               | 44 +++++++++++++++------
 doc/guides/windows_gsg/build_dpdk.rst       |  2 +-
 4 files changed, 44 insertions(+), 13 deletions(-)
 create mode 100644 config/ppc/ppc64le-power8-linux-gcc
 rename config/x86/{meson_mingw.txt => cross-mingw} (100%)

-- 
2.26.2


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

* [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
@ 2020-06-15 22:22   ` Thomas Monjalon
  2020-06-17 21:05     ` David Christensen
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:22 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

Each cross-compilation case needs to define the target compiler
and the meson cross file.
Given the compiler is already defined in the cross file,
the latter is enough.

The function "build" is changed to accept a cross file alternatively
to the compiler name. In the case of a file (detected if readable),
the compiler is extracted with sed and tr, and the option --cross-file
is automatically added.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
v2: fix ABI check config (thanks David)
---
 devtools/test-meson-builds.sh | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 18b874fac5..bee55ec038 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -117,16 +117,24 @@ install_target () # <builddir> <installdir>
 	fi
 }
 
-build () # <directory> <target compiler> <meson options>
+build () # <directory> <target compiler | cross file> <meson options>
 {
 	targetdir=$1
 	shift
-	targetcc=$1
+	crossfile=
+	[ -r $1 ] && crossfile=$1 || targetcc=$1
 	shift
 	# skip build if compiler not available
 	command -v ${CC##* } >/dev/null 2>&1 || return 0
+	if [ -n "$crossfile" ] ; then
+		cross="--cross-file $crossfile"
+		targetcc=$(sed -n 's,^c[[:space:]]*=[[:space:]]*,,p' \
+			$crossfile | tr -d "'" | tr -d '"')
+	else
+		cross=
+	fi
 	load_env $targetcc || return 0
-	config $srcdir $builds_dir/$targetdir --werror $*
+	config $srcdir $builds_dir/$targetdir $cross --werror $*
 	compile $builds_dir/$targetdir
 	if [ -n "$DPDK_ABI_REF_VERSION" ]; then
 		abirefdir=${DPDK_ABI_REF_DIR:-reference}/$DPDK_ABI_REF_VERSION
@@ -140,7 +148,7 @@ build () # <directory> <target compiler> <meson options>
 			fi
 
 			rm -rf $abirefdir/build
-			config $abirefdir/src $abirefdir/build $*
+			config $abirefdir/src $abirefdir/build $cross $*
 			compile $abirefdir/build
 			install_target $abirefdir/build $abirefdir/$targetdir
 			$srcdir/devtools/gen-abi.sh $abirefdir/$targetdir
@@ -186,17 +194,15 @@ if [ "$ok" = "false" ] ; then
 fi
 build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine $use_shared
 
-c=aarch64-linux-gnu-gcc
 # generic armv8a with clang as host compiler
+f=$srcdir/config/arm/arm64_armv8_linux_gcc
 export CC="clang"
-build build-arm64-host-clang $c $use_shared \
-	--cross-file $srcdir/config/arm/arm64_armv8_linux_gcc
+build build-arm64-host-clang $f $use_shared
 unset CC
-# all gcc/arm configurations
+# some gcc/arm configurations
 for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
 	export CC="$CCACHE gcc"
-	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $c \
-		$use_shared --cross-file $f
+	build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $f $use_shared
 	unset CC
 done
 
-- 
2.26.2


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

* [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
@ 2020-06-15 22:22   ` Thomas Monjalon
  2020-06-17 21:06     ` David Christensen
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:22 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

If a compiler is not found in $PATH, the compilation test is skipped.
In some cases, the compiler could be found after extending $PATH
in an environment configuration script (called by load-devel-config).

The decision to skip is deferred to a later stage, after loading the
configuration script.

In such case, the variable DPDK_TARGET, used by the configuration script
as input, is the compiler name.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/test-meson-builds.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index bee55ec038..9781eaf415 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -52,9 +52,15 @@ load_env () # <target compiler>
 	export CFLAGS=$default_cflags
 	export LDFLAGS=$default_ldflags
 	unset DPDK_MESON_OPTIONS
-	command -v $targetcc >/dev/null 2>&1 || return 1
-	DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p')
+	if command -v $targetcc >/dev/null 2>&1 ; then
+		DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p')
+	else # toolchain not yet in PATH: its name should be enough
+		DPDK_TARGET=$targetcc
+	fi
+	# config input: $DPDK_TARGET
 	. $srcdir/devtools/load-devel-config
+	# config output: $DPDK_MESON_OPTIONS, $PATH, $PKG_CONFIG_PATH, etc
+	command -v $targetcc >/dev/null 2>&1 || return 1
 }
 
 config () # <dir> <builddir> <meson options>
-- 
2.26.2


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

* [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
@ 2020-06-15 22:22   ` Thomas Monjalon
  2020-06-17 21:07     ` David Christensen
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
  2020-06-29 23:15   ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  4 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:22 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

Add cross-compilation support of a PPC target in the build test matrix.
The CPU is defined as Power8, running as little endian.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 config/ppc/ppc64le-power8-linux-gcc | 11 +++++++++++
 devtools/test-meson-builds.sh       |  5 +++++
 2 files changed, 16 insertions(+)
 create mode 100644 config/ppc/ppc64le-power8-linux-gcc

diff --git a/config/ppc/ppc64le-power8-linux-gcc b/config/ppc/ppc64le-power8-linux-gcc
new file mode 100644
index 0000000000..51f7ceebf3
--- /dev/null
+++ b/config/ppc/ppc64le-power8-linux-gcc
@@ -0,0 +1,11 @@
+[binaries]
+c = 'powerpc64le-linux-gcc'
+cpp = 'powerpc64le-linux-cpp'
+ar = 'powerpc64le-linux-gcc-ar'
+strip = 'powerpc64le-linux-strip'
+
+[host_machine]
+system = 'linux'
+cpu_family = 'ppc64'
+cpu = 'power8'
+endian = 'little'
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index 9781eaf415..eaa215f13e 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -212,6 +212,11 @@ for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do
 	unset CC
 done
 
+# ppc configurations
+for f in $srcdir/config/ppc/ppc* ; do
+	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
+done
+
 # Test installation of the x86-default target, to be used for checking
 # the sample apps build using the pkg-config file for cflags and libs
 build_path=$(readlink -f $builds_dir/build-x86-default)
-- 
2.26.2


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

* [dpdk-dev] [PATCH v2 4/4] devtools: add Windows cross-build test with MinGW
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
                     ` (2 preceding siblings ...)
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
@ 2020-06-15 22:22   ` Thomas Monjalon
  2020-06-29 23:15   ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
  4 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-15 22:22 UTC (permalink / raw)
  To: dev
  Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk,
	Harini Ramakrishnan, Omar Cardona, Pallavi Kadam, Ranjit Menon,
	John McNamara, Marko Kovacevic

The Meson cross file is renamed from meson_mingw.txt to cross-mingw,
and is added to test-meson-builds.sh.

The only example supported on Windows so far is "helloworld",
that's why the default list of examples is overridden.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 config/x86/{meson_mingw.txt => cross-mingw} | 0
 devtools/test-meson-builds.sh               | 3 +++
 doc/guides/windows_gsg/build_dpdk.rst       | 2 +-
 3 files changed, 4 insertions(+), 1 deletion(-)
 rename config/x86/{meson_mingw.txt => cross-mingw} (100%)

diff --git a/config/x86/meson_mingw.txt b/config/x86/cross-mingw
similarity index 100%
rename from config/x86/meson_mingw.txt
rename to config/x86/cross-mingw
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
index eaa215f13e..64a022ccf1 100755
--- a/devtools/test-meson-builds.sh
+++ b/devtools/test-meson-builds.sh
@@ -200,6 +200,9 @@ if [ "$ok" = "false" ] ; then
 fi
 build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine $use_shared
 
+# x86 MinGW
+build build-x86-mingw $srcdir/config/x86/cross-mingw -Dexamples=helloworld
+
 # generic armv8a with clang as host compiler
 f=$srcdir/config/arm/arm64_armv8_linux_gcc
 export CC="clang"
diff --git a/doc/guides/windows_gsg/build_dpdk.rst b/doc/guides/windows_gsg/build_dpdk.rst
index 650483e3be..249e029c4e 100644
--- a/doc/guides/windows_gsg/build_dpdk.rst
+++ b/doc/guides/windows_gsg/build_dpdk.rst
@@ -109,5 +109,5 @@ Depending on the distribution, paths in this file may need adjustments.
 
 .. code-block:: console
 
-    meson --cross-file config/x86/meson_mingw.txt -Dexamples=helloworld build
+    meson --cross-file config/x86/cross-mingw -Dexamples=helloworld build
     ninja -C build
-- 
2.26.2


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

* Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-15 22:13     ` Thomas Monjalon
@ 2020-06-16 20:35       ` David Christensen
  2020-06-16 21:26         ` Thomas Monjalon
  0 siblings, 1 reply; 22+ messages in thread
From: David Christensen @ 2020-06-16 20:35 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, david.marchand, bruce.richardson

>>> +# ppc configurations
>>> +for f in $srcdir/config/ppc/ppc* ; do
>>> +	build build-$(basename $f | cut -d'-' -f-2) $f $use_shared
>>> +done
>>> +
>>
>> The entire script file is poorly structured for multi-architecture
>> builds.  The script fails on PPC64LE even before your changes:
> 
> This script supports only builds from x86 Linux so far.
> This patch is adding cross-compilation of ppc from x86,
> and it works fine.

Which distro and packages are used for testing?  I tried it with Ubuntu 
20.04 but the cross-compiler is named differently 
(powerpc64le-linux-gnu-gcc instead of powerpc64le-linux-gcc).

>> I think the logic of looping through supported configs for test builds
>> is the right one, but more changes are required for multi-architecture
>> support in this script.  For now I'd abandon the PPC/ARM support
>> entirely in this script.
> 
> I am adding PPC compilation check to avoid having PPC broken,
> because after asking for many years to IBM execs,
> there is still no PPC CI integrated in DPDK patchwork.
> If you don't think this small step is going in the right direction,
> then I will stop bothering about PPC support,
> and we should probably completely drop PPC support I guess.

Sorry, I didn't understand the context behind the change request nor how 
the script is used.  I appreciate the effort behind the change and would 
like to help where I can.

Dave

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

* Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-16 20:35       ` David Christensen
@ 2020-06-16 21:26         ` Thomas Monjalon
  2020-06-17 21:02           ` David Christensen
  0 siblings, 1 reply; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-16 21:26 UTC (permalink / raw)
  To: David Christensen; +Cc: dev, david.marchand, bruce.richardson

16/06/2020 22:35, David Christensen:
> Thomas Monjalon wrote:
> > This script supports only builds from x86 Linux so far.
> > This patch is adding cross-compilation of ppc from x86,
> > and it works fine.
> 
> Which distro and packages are used for testing?  I tried it with Ubuntu 
> 20.04 but the cross-compiler is named differently 
> (powerpc64le-linux-gnu-gcc instead of powerpc64le-linux-gcc).

I'm using a buildroot toolchain from bootlin:
https://toolchains.bootlin.com/releases_powerpc64le-power8.html

If it is more common to have "gnu" in the prefix,
no problem to change it in this patch.
I can create "gnu" symbolic links in my toolchain.

Ideally I would like to have an option to specify the toolchain prefix
with meson, instead of hardcoding it in a cross file.




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

* Re: [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test
  2020-06-16 21:26         ` Thomas Monjalon
@ 2020-06-17 21:02           ` David Christensen
  0 siblings, 0 replies; 22+ messages in thread
From: David Christensen @ 2020-06-17 21:02 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, david.marchand, bruce.richardson

> 16/06/2020 22:35, David Christensen:
>> Thomas Monjalon wrote:
>>> This script supports only builds from x86 Linux so far.
>>> This patch is adding cross-compilation of ppc from x86,
>>> and it works fine.
>>
>> Which distro and packages are used for testing?  I tried it with Ubuntu
>> 20.04 but the cross-compiler is named differently
>> (powerpc64le-linux-gnu-gcc instead of powerpc64le-linux-gcc).
> 
> I'm using a buildroot toolchain from bootlin:
> https://toolchains.bootlin.com/releases_powerpc64le-power8.html
> 
> If it is more common to have "gnu" in the prefix,
> no problem to change it in this patch.
> I can create "gnu" symbolic links in my toolchain.
> 
> Ideally I would like to have an option to specify the toolchain prefix
> with meson, instead of hardcoding it in a cross file.

If there's no defined distro where this tool is expected to be used I'd 
be happy with a comment in the cross file indicating which set of 
cross-compilers you chose for the implementation.

Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>

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

* Re: [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
@ 2020-06-17 21:05     ` David Christensen
  0 siblings, 0 replies; 22+ messages in thread
From: David Christensen @ 2020-06-17 21:05 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: david.marchand, bruce.richardson, dmitry.kozliuk

On 6/15/20 3:22 PM, Thomas Monjalon wrote:
> Each cross-compilation case needs to define the target compiler
> and the meson cross file.
> Given the compiler is already defined in the cross file,
> the latter is enough.
> 
> The function "build" is changed to accept a cross file alternatively
> to the compiler name. In the case of a file (detected if readable),
> the compiler is extracted with sed and tr, and the option --cross-file
> is automatically added.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> v2: fix ABI check config (thanks David)

Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>

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

* Re: [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
@ 2020-06-17 21:06     ` David Christensen
  0 siblings, 0 replies; 22+ messages in thread
From: David Christensen @ 2020-06-17 21:06 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: david.marchand, bruce.richardson, dmitry.kozliuk



On 6/15/20 3:22 PM, Thomas Monjalon wrote:
> If a compiler is not found in $PATH, the compilation test is skipped.
> In some cases, the compiler could be found after extending $PATH
> in an environment configuration script (called by load-devel-config).
> 
> The decision to skip is deferred to a later stage, after loading the
> configuration script.
> 
> In such case, the variable DPDK_TARGET, used by the configuration script
> as input, is the compiler name.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>

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

* Re: [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
@ 2020-06-17 21:07     ` David Christensen
  0 siblings, 0 replies; 22+ messages in thread
From: David Christensen @ 2020-06-17 21:07 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: david.marchand, bruce.richardson, dmitry.kozliuk

> Add cross-compilation support of a PPC target in the build test matrix.
> The CPU is defined as Power8, running as little endian.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>

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

* Re: [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test
  2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
                     ` (3 preceding siblings ...)
  2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
@ 2020-06-29 23:15   ` Thomas Monjalon
  4 siblings, 0 replies; 22+ messages in thread
From: Thomas Monjalon @ 2020-06-29 23:15 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, bruce.richardson, drc, dmitry.kozliuk

16/06/2020 00:22, Thomas Monjalon:
> In order to better support PPC and Windows,
> their compilation is tested on Linux with Meson
> with the script test-meson-builds.sh,
> supposed to be called in every CI labs.
> 
> 
> Thomas Monjalon (4):
>   devtools: shrink cross-compilation test definition
>   devtools: allow non-standard toolchain in meson test
>   devtools: add ppc64 in meson build test
>   devtools: add Windows cross-build test with MinGW
> 
> 
> v2: update some explanations and fix ABI check


Applied



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

end of thread, other threads:[~2020-06-29 23:15 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-14 22:57 [dpdk-dev] [PATCH 0/4] add PPC and Windows to meson test Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
2020-06-14 22:57 ` [dpdk-dev] [PATCH 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
2020-06-15 21:43   ` David Christensen
2020-06-15 22:13     ` Thomas Monjalon
2020-06-16 20:35       ` David Christensen
2020-06-16 21:26         ` Thomas Monjalon
2020-06-17 21:02           ` David Christensen
2020-06-14 22:57 ` [dpdk-dev] [PATCH 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
2020-06-14 23:09   ` Thomas Monjalon
2020-06-15  1:05     ` Dmitry Kozlyuk
2020-06-15  7:51       ` Thomas Monjalon
2020-06-15 22:22 ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 1/4] devtools: shrink cross-compilation test definition Thomas Monjalon
2020-06-17 21:05     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 2/4] devtools: allow non-standard toolchain in meson test Thomas Monjalon
2020-06-17 21:06     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 3/4] devtools: add ppc64 in meson build test Thomas Monjalon
2020-06-17 21:07     ` David Christensen
2020-06-15 22:22   ` [dpdk-dev] [PATCH v2 4/4] devtools: add Windows cross-build test with MinGW Thomas Monjalon
2020-06-29 23:15   ` [dpdk-dev] [PATCH v2 0/4] add PPC and Windows cross-compilation to meson test Thomas Monjalon

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