mempool: fix slow allocation of large mempools
[dpdk.git] / devtools / test-build.sh
index 2bedbdb..8cb5b56 100755 (executable)
@@ -7,6 +7,7 @@ default_path=$PATH
 # Load config options:
 # - ARMV8_CRYPTO_LIB_PATH
 # - DPDK_BUILD_TEST_CONFIGS (defconfig1+option1+option2 defconfig2)
+# - DPDK_BUILD_TEST_DIR
 # - DPDK_DEP_ARCHIVE
 # - DPDK_DEP_BPF (y/[n])
 # - DPDK_DEP_CFLAGS
@@ -29,7 +30,8 @@ default_path=$PATH
 # - LIBSSO_SNOW3G_PATH
 # - LIBSSO_KASUMI_PATH
 # - LIBSSO_ZUC_PATH
-. $(dirname $(readlink -f $0))/load-devel-config
+devtools_dir=$(dirname $(readlink -f $0))
+. $devtools_dir/load-devel-config
 
 print_usage () {
        echo "usage: $(basename $0) [-h] [-jX] [-s] [config1 [config2] ...]]"
@@ -63,6 +65,8 @@ print_help () {
 [ -z $MAKE ] && echo "Cannot find make or gmake" && exit 1
 
 J=$DPDK_MAKE_JOBS
+abi_ref_build_dir=${DPDK_ABI_REF_BUILD_DIR:-reference}
+builds_dir=${DPDK_BUILD_TEST_DIR:-.}
 short=false
 unset verbose
 maxerr=-Wfatal-errors
@@ -95,7 +99,7 @@ trap "signal=INT ; trap - INT ; kill -INT $$" INT
 # notify result on exit
 trap on_exit EXIT
 
-cd $(dirname $(readlink -f $0))/..
+cd $devtools_dir/..
 
 reset_env ()
 {
@@ -147,7 +151,7 @@ config () # <directory> <target> <options>
                ! echo $3 | grep -q '+debug' || ( \
                sed -ri=""  's,(RTE_LOG_DP_LEVEL=).*,\1RTE_LOG_DEBUG,' $1/.config
                sed -ri=""           's,(_DEBUG.*=)n,\1y,' $1/.config
-               sed -ri=""            's,(_STAT.*=)n,\1y,' $1/.config
+               sed -ri=""  's,(_STAT)([S_].*=|=)n,\1\2y,' $1/.config
                sed -ri="" 's,(TEST_PMD_RECORD_.*=)n,\1y,' $1/.config )
 
                # Automatic configuration
@@ -231,24 +235,32 @@ for conf in $configs ; do
        # reload config with DPDK_TARGET set
        DPDK_TARGET=$target
        reset_env
-       . $(dirname $(readlink -f $0))/load-devel-config
+       . $devtools_dir/load-devel-config
 
        options=$(echo $conf | sed 's,[^~+]*,,')
-       dir=$conf
+       dir=$builds_dir/$conf
        config $dir $target $options
 
-       echo "================== Build $dir"
+       echo "================== Build $conf"
        ${MAKE} -j$J EXTRA_CFLAGS="$maxerr $DPDK_DEP_CFLAGS" \
                EXTRA_LDFLAGS="$DPDK_DEP_LDFLAGS" $verbose O=$dir
        ! $short || break
-       echo "================== Build examples for $dir"
-       export RTE_SDK=$(pwd)
-       export RTE_TARGET=$dir
+       export RTE_TARGET=$target
+       rm -rf $dir/install
+       ${MAKE} install O=$dir DESTDIR=$dir/install prefix=
+       if [ -d $abi_ref_build_dir/$conf/dump ]; then
+               echo "================== Check ABI $conf"
+               $devtools_dir/check-abi-dump.sh $dir/install \
+                       $abi_ref_build_dir/$conf/dump
+       fi
+       echo "================== Build examples for $conf"
+       export RTE_SDK=$(readlink -f $dir)/install/share/dpdk
+       ln -sTf $(pwd)/lib $RTE_SDK/lib # workaround for vm_power_manager
        ${MAKE} -j$J -sC examples \
                EXTRA_LDFLAGS="$DPDK_DEP_LDFLAGS" $verbose \
                O=$(readlink -f $dir)/examples
        unset RTE_TARGET
-       echo "################## $dir done."
+       echo "################## $conf done."
        unset dir
 done