acinclude.m4: Restore --whole-archive option for DPDK.
authorDaniele Di Proietto <diproiettod@vmware.com>
Fri, 20 Mar 2015 13:02:13 +0000 (06:02 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Fri, 20 Mar 2015 16:55:20 +0000 (09:55 -0700)
The --whole-archive option is required to link vswitchd with DPDK,
otherwise the PMD drivers are not going to be included.  Omitting the
option is not going to cause build failures, but OVS won't be able to
use most physical NICs.

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
acinclude.m4

index a56d160..5ed70c1 100644 (file)
@@ -170,7 +170,8 @@ AC_DEFUN([OVS_CHECK_DPDK], [
 
     DPDK_INCLUDE=$RTE_SDK/include
     DPDK_LIB_DIR=$RTE_SDK/lib
-    DPDK_LIB="-lintel_dpdk -lfuse "
+    DPDK_LIB="-lintel_dpdk"
+    DPDK_EXTRA_LIB="-lfuse"
 
     ovs_save_CFLAGS="$CFLAGS"
     ovs_save_LDFLAGS="$LDFLAGS"
@@ -187,7 +188,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
     found=false
     save_LIBS=$LIBS
     for extras in "" "-ldl"; do
-        LIBS="$DPDK_LIB $extras $save_LIBS"
+        LIBS="$DPDK_LIB $extras $save_LIBS $DPDK_EXTRA_LIB"
         AC_LINK_IFELSE(
            [AC_LANG_PROGRAM([#include <rte_config.h>
                              #include <rte_eal.h>],
@@ -206,7 +207,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
     OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
     OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE"
 
-    # DPDK 1.7 pmd drivers are not linked unless --whole-archive is used.
+    # DPDK pmd drivers are not linked unless --whole-archive is used.
     #
     # This happens because the rest of the DPDK code doesn't use any symbol in
     # the pmd driver objects, and the drivers register themselves using an
@@ -214,7 +215,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
     #
     # These options are specified inside a single -Wl directive to prevent
     # autotools from reordering them.
-    DPDK_vswitchd_LDFLAGS=-Wl,$DPDK_LIB
+    DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
     AC_SUBST([DPDK_vswitchd_LDFLAGS])
     AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
   else