X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=devtools%2Ftest-meson-builds.sh;h=daf817ac3e57fa3ac7137110b551d4ce050f6dba;hb=1ba12b75097706e834df71db77e0bb760dead760;hp=7280b7a93d53f5049e751aa85240edf935a4c5cc;hpb=996a8658adc28197b30196ea525b79e57601f6c2;p=dpdk.git diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh index 7280b7a93d..daf817ac3e 100755 --- a/devtools/test-meson-builds.sh +++ b/devtools/test-meson-builds.sh @@ -146,13 +146,15 @@ install_target () # DESTDIR=$2 $ninja_cmd -C $1 install >&$veryverbose } -build () # +build () # [meson options] { targetdir=$1 shift crossfile= [ -r $1 ] && crossfile=$1 || targetcc=$1 shift + abicheck=$1 + shift # skip build if compiler not available command -v ${CC##* } >/dev/null 2>&1 || return 0 if [ -n "$crossfile" ] ; then @@ -165,7 +167,7 @@ build () # load_env $targetcc || return 0 config $srcdir $builds_dir/$targetdir $cross --werror $* compile $builds_dir/$targetdir - if [ -n "$DPDK_ABI_REF_VERSION" ]; then + if [ -n "$DPDK_ABI_REF_VERSION" -a "$abicheck" = ABI ] ; then abirefdir=${DPDK_ABI_REF_DIR:-reference}/$DPDK_ABI_REF_VERSION if [ ! -d $abirefdir/$targetdir ]; then # clone current sources @@ -191,10 +193,15 @@ build () # install_target $builds_dir/$targetdir \ $(readlink -f $builds_dir/$targetdir/install) + echo "Checking ABI compatibility of $targetdir" >&$verbose + echo $srcdir/devtools/gen-abi.sh \ + $(readlink -f $builds_dir/$targetdir/install) >&$veryverbose $srcdir/devtools/gen-abi.sh \ - $(readlink -f $builds_dir/$targetdir/install) + $(readlink -f $builds_dir/$targetdir/install) >&$veryverbose + echo $srcdir/devtools/check-abi.sh $abirefdir/$targetdir \ + $(readlink -f $builds_dir/$targetdir/install) >&$veryverbose $srcdir/devtools/check-abi.sh $abirefdir/$targetdir \ - $(readlink -f $builds_dir/$targetdir/install) + $(readlink -f $builds_dir/$targetdir/install) >&$verbose fi } @@ -202,8 +209,13 @@ build () # for c in gcc clang ; do command -v $c >/dev/null 2>&1 || continue for s in static shared ; do + if [ $s = shared ] ; then + abicheck=ABI + else + abicheck=skipABI # save time and disk space + fi export CC="$CCACHE $c" - build build-$c-$s $c --default-library=$s + build build-$c-$s $c $abicheck --default-library=$s unset CC done done @@ -211,11 +223,12 @@ done # test compilation with minimal x86 instruction set # Set the install path for libraries to "lib" explicitly to prevent problems # with pkg-config prefixes if installed in "lib/x86_64-linux-gnu" later. -default_machine='nehalem' -if ! check_cc_flags "-march=$default_machine" ; then - default_machine='corei7' +generic_machine='nehalem' +if ! check_cc_flags "-march=$generic_machine" ; then + generic_machine='corei7' fi -build build-x86-default cc -Dlibdir=lib -Dmachine=$default_machine $use_shared +build build-x86-generic cc skipABI -Dcheck_includes=true \ + -Dlibdir=lib -Dmachine=$generic_machine $use_shared # 32-bit with default compiler if check_cc_flags '-m32' ; then @@ -230,40 +243,40 @@ if check_cc_flags '-m32' ; then export PKG_CONFIG_LIBDIR='/usr/lib/pkgconfig' fi target_override='i386-pc-linux-gnu' - build build-32b cc -Dc_args='-m32' -Dc_link_args='-m32' + build build-32b cc ABI -Dc_args='-m32' -Dc_link_args='-m32' target_override= unset PKG_CONFIG_LIBDIR fi # x86 MinGW -build build-x86-mingw $srcdir/config/x86/cross-mingw -Dexamples=helloworld +build build-x86-mingw $srcdir/config/x86/cross-mingw skipABI \ + -Dexamples=helloworld # generic armv8a with clang as host compiler f=$srcdir/config/arm/arm64_armv8_linux_gcc export CC="clang" -build build-arm64-host-clang $f $use_shared +build build-arm64-host-clang $f ABI $use_shared unset CC # some gcc/arm configurations for f in $srcdir/config/arm/arm64_[bdo]*gcc ; do export CC="$CCACHE gcc" - build build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) $f $use_shared + targetdir=build-$(basename $f | tr '_' '-' | cut -d'-' -f-2) + build $targetdir $f skipABI $use_shared unset CC done # ppc configurations for f in $srcdir/config/ppc/ppc* ; do - build build-$(basename $f | cut -d'-' -f-2) $f $use_shared + targetdir=build-$(basename $f | cut -d'-' -f-2) + build $targetdir $f ABI $use_shared done -# Test installation of the x86-default target, to be used for checking +# Test installation of the x86-generic target, to be used for checking # the sample apps build using the pkg-config file for cflags and libs load_env cc -build_path=$(readlink -f $builds_dir/build-x86-default) +build_path=$(readlink -f $builds_dir/build-x86-generic) export DESTDIR=$build_path/install -# No need to reinstall if ABI checks are enabled -if [ -z "$DPDK_ABI_REF_VERSION" ]; then - install_target $build_path $DESTDIR -fi +install_target $build_path $DESTDIR pc_file=$(find $DESTDIR -name libdpdk.pc) export PKG_CONFIG_PATH=$(dirname $pc_file):$PKG_CONFIG_PATH libdir=$(dirname $(find $DESTDIR -name librte_eal.so)) @@ -274,7 +287,8 @@ if pkg-config --define-prefix libdpdk >/dev/null 2>&1; then export PKGCONF="pkg-config --define-prefix" for example in $examples; do echo "## Building $example" + [ $example = helloworld ] && static=static || static= # save disk space $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example \ - clean shared static >&$veryverbose + clean shared $static >&$veryverbose done fi