devtools: fix debug build test
[dpdk.git] / devtools / test-build.sh
index 3c029ce..52305fb 100755 (executable)
@@ -7,19 +7,21 @@ 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
 # - DPDK_DEP_ELF (y/[n])
 # - DPDK_DEP_ISAL (y/[n])
 # - DPDK_DEP_JSON (y/[n])
 # - DPDK_DEP_LDFLAGS
 # - DPDK_DEP_MLX (y/[n])
+# - DPDK_DEP_NFB (y/[n])
 # - DPDK_DEP_NUMA ([y]/n)
 # - DPDK_DEP_PCAP (y/[n])
 # - DPDK_DEP_SSL (y/[n])
 # - DPDK_DEP_IPSEC_MB (y/[n])
 # - DPDK_DEP_SZE (y/[n])
-# - DPDK_DEP_NFB (y/[n])
 # - DPDK_DEP_ZLIB (y/[n])
 # - DPDK_MAKE_JOBS (int)
 # - DPDK_NOTIFY (notify-send)
@@ -62,6 +64,7 @@ print_help () {
 [ -z $MAKE ] && echo "Cannot find make or gmake" && exit 1
 
 J=$DPDK_MAKE_JOBS
+builds_dir=${DPDK_BUILD_TEST_DIR:-.}
 short=false
 unset verbose
 maxerr=-Wfatal-errors
@@ -101,12 +104,14 @@ reset_env ()
        export PATH=$default_path
        unset CROSS
        unset DPDK_DEP_ARCHIVE
+       unset DPDK_DEP_BPF
        unset DPDK_DEP_CFLAGS
        unset DPDK_DEP_ELF
        unset DPDK_DEP_ISAL
        unset DPDK_DEP_JSON
        unset DPDK_DEP_LDFLAGS
        unset DPDK_DEP_MLX
+       unset DPDK_DEP_NFB
        unset DPDK_DEP_NUMA
        unset DPDK_DEP_PCAP
        unset DPDK_DEP_SSL
@@ -144,7 +149,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
@@ -154,10 +159,14 @@ config () # <directory> <target> <options>
                sed -ri=""             's,(BYPASS=)n,\1y,' $1/.config
                test "$DPDK_DEP_ARCHIVE" != y || \
                sed -ri=""       's,(RESOURCE_TAR=)n,\1y,' $1/.config
+               test "$DPDK_DEP_BPF" != y || \
+               sed -ri=""         's,(PMD_AF_XDP=)n,\1y,' $1/.config
                test "$DPDK_DEP_ISAL" != y || \
                sed -ri=""           's,(PMD_ISAL=)n,\1y,' $1/.config
                test "$DPDK_DEP_MLX" != y || \
                sed -ri=""           's,(MLX._PMD=)n,\1y,' $1/.config
+               test "$DPDK_DEP_NFB" != y || \
+               sed -ri=""            's,(NFB_PMD=)n,\1y,' $1/.config
                test "$DPDK_DEP_SZE" != y || \
                sed -ri=""       's,(PMD_SZEDATA2=)n,\1y,' $1/.config
                test "$DPDK_DEP_ZLIB" != y || \
@@ -227,21 +236,24 @@ for conf in $configs ; do
        . $(dirname $(readlink -f $0))/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=
+       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