devtools: shrink cross-compilation test definition
authorThomas Monjalon <thomas@monjalon.net>
Sun, 14 Jun 2020 22:03:29 +0000 (00:03 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 29 Jun 2020 23:18:35 +0000 (01:18 +0200)
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>
Reviewed-by: David Christensen <drc@linux.vnet.ibm.com>
devtools/test-meson-builds.sh

index 18b874f..bee55ec 100755 (executable)
@@ -117,16 +117,24 @@ install_target () # <builddir> <installdir>
        fi
 }
 
        fi
 }
 
-build () # <directory> <target compiler> <meson options>
+build () # <directory> <target compiler | cross file> <meson options>
 {
        targetdir=$1
        shift
 {
        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
        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
        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
        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
                        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
                        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
 
 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
 # generic armv8a with clang as host compiler
+f=$srcdir/config/arm/arm64_armv8_linux_gcc
 export CC="clang"
 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
 unset CC
-# all gcc/arm configurations
+# some gcc/arm configurations
 for f in $srcdir/config/arm/arm64_[bdo]*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
+       build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $f $use_shared
        unset CC
 done
 
        unset CC
 done