X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=devtools%2Ftest-meson-builds.sh;h=aaefa38a2d0a8a79cc093e159442a0c04e2e8f6f;hb=refs%2Fheads%2Fmempool_20200116b;hp=a9d9360a6d58a7a10310f93dc04f5bc8ee3dde49;hpb=272236741258632b3c0177ec0cf09f4a50b737fb;p=dpdk.git diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index a9d9360a6d..aaefa38a2d 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -12,8 +12,12 @@ PIPEFAIL="" set -o | grep -q pipefail && set -o pipefail && PIPEFAIL=1 srcdir=$(dirname $(readlink -f $0))/.. +. $srcdir/devtools/load-devel-config + MESON=${MESON:-meson} use_shared="--default-library=shared" +abi_ref_build_dir=${DPDK_ABI_REF_BUILD_DIR:-reference} +builds_dir=${DPDK_BUILD_TEST_DIR:-.} if command -v gmake >/dev/null 2>&1 ; then MAKE=gmake @@ -28,29 +32,41 @@ else echo "ERROR: ninja is not found" >&2 exit 1 fi +if command -v ccache >/dev/null 2>&1 ; then + CCACHE=ccache +else + CCACHE= +fi default_path=$PATH default_pkgpath=$PKG_CONFIG_PATH +default_cppflags=$CPPFLAGS +default_cflags=$CFLAGS +default_ldflags=$LDFLAGS -reset_env () +load_env () # { + targetcc=$1 export PATH=$default_path export PKG_CONFIG_PATH=$default_pkgpath + export CPPFLAGS=$default_cppflags + 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') + . $srcdir/devtools/load-devel-config } build () # { - builddir=$1 + builddir=$builds_dir/$1 shift targetcc=$1 shift # skip build if compiler not available - command -v $CC >/dev/null 2>&1 || return 0 - command -v $targetcc >/dev/null 2>&1 || return 0 - reset_env - DPDK_TARGET=$($targetcc -v 2>&1 | sed -n 's,^Target: ,,p') - . $srcdir/devtools/load-devel-config + command -v ${CC##* } >/dev/null 2>&1 || return 0 + load_env $targetcc || return 0 if [ ! -f "$builddir/build.ninja" ] ; then options="--werror -Dexamples=all" for option in $DPDK_MESON_OPTIONS ; do @@ -73,6 +89,11 @@ build () # echo "$ninja_cmd -C $builddir" $ninja_cmd -C $builddir fi + + if [ -d $abi_ref_build_dir/$1/dump ]; then + $srcdir/devtools/check-abi-dump.sh $builddir + $abi_ref_build_dir/$1/dump + fi } if [ "$1" = "-vv" ] ; then @@ -90,7 +111,7 @@ fi for c in gcc clang ; do command -v $c >/dev/null 2>&1 || continue for s in static shared ; do - export CC="ccache $c" + export CC="$CCACHE $c" build build-$c-$s $c --default-library=$s done done @@ -111,22 +132,27 @@ export CC="clang" build build-arm64-host-clang $c $use_shared \ --cross-file $srcdir/config/arm/arm64_armv8_linux_gcc # all gcc/arm configurations -for f in $srcdir/config/arm/arm*gcc ; do - export CC="ccache gcc" +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 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=build-x86-default -export DESTDIR=$(pwd)/$build_path/install-root +build_path=$(readlink -f $builds_dir/build-x86-default) +export DESTDIR=$build_path/install-root $ninja_cmd -C $build_path install +load_env cc pc_file=$(find $DESTDIR -name libdpdk.pc) export PKG_CONFIG_PATH=$(dirname $pc_file):$PKG_CONFIG_PATH -for example in cmdline helloworld l2fwd l3fwd skeleton timer; do - echo "## Building $example" - $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean all -done +# if pkg-config defines the necessary flags, test building some examples +if pkg-config --define-prefix libdpdk >/dev/null 2>&1; then + export PKGCONF="pkg-config --define-prefix" + for example in cmdline helloworld l2fwd l3fwd skeleton timer; do + echo "## Building $example" + $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean all + done +fi