From: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>

Add testcase compiling and running ODP with shared DPDK lib

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>
---
/** Email created from pull request 416 (lumag:trav-dpdk-shared)
 ** https://github.com/Linaro/odp/pull/416
 ** Patch: https://github.com/Linaro/odp/pull/416.patch
 ** Base sha: 3ce9d6ab16d064b0f83508e2f0b2e476d64b15e1
 ** Merge commit sha: 03435fd2ad14f3faf8bb7e41c71ef9fc054b8662
 **/
 .travis.yml | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index f3babf359..f957ba36e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -75,6 +75,7 @@ env:
         - CONF="--enable-schedule-scalable"
         - CONF="--enable-dpdk-zero-copy"
         - CONF="--disable-static-applications"
+        - DPDK_SHARED="y" CONF="--disable-static-applications"
         - CROSS_ARCH="arm64"
         - CROSS_ARCH="armhf" CFLAGS="-march=armv7-a"
         - CROSS_ARCH="powerpc"
@@ -207,7 +208,14 @@ install:
           esac
         - |
           if [ -n "$TARGET" ] ; then
-           if [ ! -f "dpdk/${TARGET}/lib/libdpdk.a" ] ; then
+           # force DPDK rebuild if it does not match shared/non-shared 
requirement
+           if [ -n "$DPDK_SHARED" -a ! -f "dpdk/${TARGET}/lib/libdpdk.so" ] ; 
then
+            rm -rf dpdk/"$TARGET"
+           fi
+           if [ -z "$DPDK_SHARED" -a ! -f "dpdk/${TARGET}/lib/libdpdk.a" ] ; 
then
+            rm -rf dpdk/"$TARGET"
+           fi
+           if [ ! -f "dpdk/${TARGET}/lib/libdpdk.a" -a ! -f 
"dpdk/${TARGET}/lib/libdpdk.so" ]; then
             git -c advice.detachedHead=false clone -q --depth=1 
--single-branch --branch=v${DPDK_VERS} http://dpdk.org/git/dpdk dpdk
             pushd dpdk
             git log --oneline --decorate
@@ -223,6 +231,11 @@ install:
             if test -n "${DPDK_MACHINE}" ; then
               sed -ri 's,(CONFIG_RTE_MACHINE=).*,\1"'${DPDK_MACHINE}'",' 
.config
             fi
+            if test -n "${DPDK_SHARED}" ; then
+              sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1y,' .config
+              export LD_LIBRARY_PATH="`pwd`/${TARGET}:$LD_LIBRARY_PATH"
+              echo $LD_LIBRARY_PATH
+            fi
             if test -n "$CROSS_ARCH" ; then
               sed -ri -e 's,(CONFIG_RTE_EAL_IGB_UIO=).*,\1n,' .config
               sed -ri -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1n,' .config
@@ -267,11 +280,17 @@ script:
         - pushd $HOME
         - echo "Dynamic link.."
         - ${CC} ${CFLAGS} ${OLDPWD}/example/hello/odp_hello.c -o 
odp_hello_inst_dynamic 
`PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig:${PKG_CONFIG_PATH} 
pkg-config --cflags --libs libodp-linux`
-        - echo "Static link.."
-        - ${CC} ${CFLAGS} ${OLDPWD}/example/hello/odp_hello.c -o 
odp_hello_inst_static 
`PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig:${PKG_CONFIG_PATH} 
pkg-config --cflags --libs libodp-linux --static` -static
         - if [ -z "$CROSS_ARCH" ] ; then
-          LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" 
./odp_hello_inst_dynamic ;
-          ./odp_hello_inst_static ;
+            LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" 
./odp_hello_inst_dynamic ;
+          fi
+        - echo "Static link.."
+        - |
+          # it is not possible to do static linking if we only have shared 
DPDK library. Compiler complains about missing -ldpdk
+          if [ -z "$TARGET" -o -z "$DPDK_SHARED" ] ; then
+            ${CC} ${CFLAGS} ${OLDPWD}/example/hello/odp_hello.c -o 
odp_hello_inst_static 
`PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig:${PKG_CONFIG_PATH} 
pkg-config --cflags --libs libodp-linux --static` -static || exit 1
+            if [ -z "$CROSS_ARCH" ] ; then
+            ./odp_hello_inst_static || exit 1;
+            fi
           fi
         - popd
         - ccache -s

Reply via email to