From: Bruce Richardson <bruce.richard...@intel.com> 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 starting with "build-" is a meson build, which is probably an ok assumption]. It can use the same configuration file as for the legacy test-build.sh. Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> Signed-off-by: Thomas Monjalon <tho...@monjalon.net> --- v2: it is a rework with 3 major changes - automatically stop on error thanks to -e - directory name starts with "build-" - optionally load a config file to get some environment variables --- MAINTAINERS | 1 + devtools/test-meson-builds.sh | 75 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100755 devtools/test-meson-builds.sh diff --git a/MAINTAINERS b/MAINTAINERS index e56c72687..4d015fe53 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -86,6 +86,7 @@ F: devtools/get-maintainer.sh F: devtools/git-log-fixes.sh F: devtools/load-devel-config F: devtools/test-build.sh +F: devtools/test-meson-builds.sh F: license/ diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh new file mode 100755 index 000000000..8ce0a1d31 --- /dev/null +++ b/devtools/test-meson-builds.sh @@ -0,0 +1,75 @@ +#! /bin/sh -e +# 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 starts with "build-" +# * if a build-directory already exists we assume it was properly configured +# Run ninja after configuration is done. + +default_path=$PATH + +# Load config options +. $(dirname $(readlink -e $0))/load-devel-config + +reset_env () +{ + export PATH=$default_path + unset CROSS + unset ARMV8_CRYPTO_LIB_PATH + unset FLEXRAN_SDK + unset LIBMUSDK_PATH + unset LIBSSO_SNOW3G_PATH + unset LIBSSO_KASUMI_PATH + unset LIBSSO_ZUC_PATH + unset PQOS_INSTALL_PATH +} + +cd $(dirname $(readlink -m $0))/.. + +load_config () +{ + reset_env + . $(dirname $(readlink -e $0))/load-devel-config + MESON=${MESON:-meson} +} + +build () # <directory> <meson options> +{ + dir=$1 + shift + if [ ! -d "$dir" ] ; then + options="--werror -Dexamples=all $*" + # TODO: the configuration variables $DPDK_DEP_CFLAGS + # and $DPDK_DEP_LDFLAGS are not handled in this script + echo "$MESON $options $dir" + $MESON $options $dir + unset CC + fi + echo "ninja -C $dir" + ninja -C $dir +} + +# shared and static linked builds with gcc and clang +for c in gcc clang ; do + for s in static shared ; do + load_config + export CC="ccache $c" + build build-$c-$s --default-library=$s + done +done + +# test compilation with minimal x86 instruction set +load_config +build build-x86-default -Dmachine=nehalem + +# enable cross compilation if gcc cross-compiler is found +for f in config/arm/arm*gcc ; do + DPDK_TARGET=$(basename $f | tr '_' '-') + load_config + CROSS=${CROSS:-aarch64-linux-gnu-} + if ! command -v ${CROSS}gcc >/dev/null 2>&1 ; then + continue + fi + build build-$(echo $DPDK_TARGET | cut -d'-' -f-2) --cross-file $f +done -- 2.16.2