[dpdk-dev] [PATCH] devtools: add test script for meson builds
Bruce Richardson
bruce.richardson at intel.com
Tue Apr 24 14:32:55 CEST 2018
To simplify testing with the meson and ninja builds, we can add a script
to set up and do multiple builds. Currently this script sets up:
* clang and gcc builds
* builds using static and shared linkage for binaries (libs are always
built as both)
* a build using the lowest instruction-set level for x86 (-march=nehalem)
* cross-builds for each cross-file listed in config/arm
Each build is configured in a directory ending in *-build, and then for
the build stage, we just call ninja in each directory in turn. [i.e. we
assume every directory ending in "-build" is a meson build, which is
probably an ok assumption].
Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
devtools/test-meson-builds.sh | 55 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100755 devtools/test-meson-builds.sh
diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
new file mode 100755
index 000000000..07a0f4e3c
--- /dev/null
+++ b/devtools/test-meson-builds.sh
@@ -0,0 +1,55 @@
+#! /bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Intel Corporation
+
+# run meson to auto-configure the various builds
+# * all builds get put in a directory whose name ends in "-build"
+# * if a build-directory already exists we assume it was properly configured
+mesonbuilds ()
+{
+ if [ "$MESON" == "" ]; then
+ MESON=meson;
+ fi;
+ _MESON="$MESON --werror -Dexamples=all";
+
+ # configure shared and static linked builds with gcc and clang
+ for c in gcc clang; do
+ for s in static shared; do
+ builddir=$c-$s-build;
+ if [ -d $builddir ]; then
+ continue;
+ fi
+ echo CC="ccache $c" $_MESON --default-library=$s -Ddefault_library=$s $builddir;
+ CC="ccache $c" $_MESON --default-library=$s -Ddefault_library=$s $builddir || break;
+ done;
+ done;
+
+ # test compilation with minimal x86 instruction set
+ if [ ! -d default-build ] ; then
+ cmd="$_MESON -Dmachine=nehalem default-build";
+ echo $cmd && $cmd || break
+ fi
+
+ # enable cross compilation if gcc cross-compiler is found
+ if command -v aarch64-linux-gnu-gcc >/dev/null 2>&1 ; then
+ for f in config/arm/arm*gcc; do
+ builddir=`basename $f | awk -F'_' '{print $2}'`;
+ builddir=$builddir-build;
+ if [ -d $builddir ]; then
+ continue;
+ fi
+ cmd="$_MESON --cross-file $f $builddir";
+ echo $cmd && $cmd || break;
+ done;
+ fi;
+}
+
+run_ninja ()
+{
+ for d in *-build ; do
+ ninja -C $d || break
+ done
+}
+
+mesonbuilds
+run_ninja
--
2.14.3
More information about the dev
mailing list