From: Daniele Di Proietto Date: Tue, 3 Jun 2014 18:29:53 +0000 (-0700) Subject: acinclude.m4: dpdk: link with -ldl if necessary X-Git-Tag: v2.4.0~2019 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=c1223b11d498b66f27c889f4438ad88394299fc0 acinclude.m4: dpdk: link with -ldl if necessary On some systems libintel_dpdk.a fails to link with libopenvswitch unless -ldl is used. This should address the issue Signed-off-by: Daniele Di Proietto Signed-off-by: Ben Pfaff --- diff --git a/acinclude.m4 b/acinclude.m4 index bd71a82a7..69d65f052 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -170,10 +170,34 @@ AC_DEFUN([OVS_CHECK_DPDK], [ DPDK_INCLUDE=$RTE_SDK/include DPDK_LIB_DIR=$RTE_SDK/lib - DPDK_LIBS="$DPDK_LIB_DIR/libintel_dpdk.a" - LIBS="$DPDK_LIBS $LIBS" - CPPFLAGS="-I$DPDK_INCLUDE $CPPFLAGS" + LDFLAGS="$LDFLAGS -L$DPDK_LIB_DIR" + CFLAGS="$CFLAGS -I$DPDK_INCLUDE" + + # On some systems we have to add -ldl to link with dpdk + # + # This code, at first, tries to link without -ldl (""), + # then adds it and tries again. + # Before each attempt the search cache must be unset, + # otherwise autoconf will stick with the old result + + found=false + save_LIBS=$LIBS + for extras in "" "-ldl"; do + LIBS="-lintel_dpdk $extras $save_LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include + #include ], + [int rte_argc; char ** rte_argv; + rte_eal_init(rte_argc, rte_argv);])], + [found=true]) + if $found; then + break + fi + done + if $found; then :; else + AC_MSG_ERROR([cannot link with dpdk]) + fi AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.]) else