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>
-build () # <directory> <target compiler> <meson options>
+build () # <directory> <target compiler | cross file> <meson options>
+ 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
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
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
# generic armv8a with clang as host compiler
# generic armv8a with clang as host compiler
+f=$srcdir/config/arm/arm64_armv8_linux_gcc
-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
-# 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