DPDK uses dlopen to load plugins and we need to search for library containing this function. But we should not do this in a loop because 'AC_SEARCH_LIBS' could do this for us. Also, 'AC_SEARCH_LIBS' prints user-visible messages that are useful for debuging. Also added the new 'checking' message and code normalized to be more readable.
With this change we'll have following additional messages: checking for library containing dlopen... -ldl checking whether linking with dpdk works... yes Signed-off-by: Ilya Maximets <[email protected]> --- acinclude.m4 | 50 +++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 2bb82b9c2..e4aed4690 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -294,36 +294,28 @@ AC_DEFUN([OVS_CHECK_DPDK], [ ], [[#include <rte_config.h>]]) ], [], [[#include <rte_config.h>]]) - # 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 + # DPDK uses dlopen to load plugins. + OVS_FIND_DEPENDENCY([dlopen], [dl], [libdl]) + + AC_MSG_CHECKING([whether linking with dpdk works]) + LIBS="$DPDK_LIB $LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include <rte_config.h> + #include <rte_eal.h>], + [int rte_argc; char ** rte_argv; + rte_eal_init(rte_argc, rte_argv);])], + [AC_MSG_RESULT([yes]) + DPDKLIB_FOUND=true], + [AC_MSG_RESULT([no]) + if test "$DPDK_AUTO_DISCOVER" = "true"; then + AC_MSG_ERROR(m4_normalize([ + Could not find DPDK library in default search path, Use --with-dpdk + to specify the DPDK library installed in non-standard location])) + else + AC_MSG_ERROR([Could not find DPDK libraries in $DPDK_LIB_DIR]) + fi + ]) - DPDKLIB_FOUND=false - save_LIBS=$LIBS - for extras in "" "-ldl"; do - LIBS="$DPDK_LIB $extras $save_LIBS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include <rte_config.h> - #include <rte_eal.h>], - [int rte_argc; char ** rte_argv; - rte_eal_init(rte_argc, rte_argv);])], - [DPDKLIB_FOUND=true]) - if $DPDKLIB_FOUND; then - break - fi - done - - # If linking unsuccessful - if test "$DPDKLIB_FOUND" = "false" ; then - if $DPDK_AUTO_DISCOVER; then - AC_MSG_ERROR([Could not find DPDK library in default search path, Use --with-dpdk to specify the DPDK library installed in non-standard location]) - else - AC_MSG_ERROR([Could not find DPDK libraries in $DPDK_LIB_DIR]) - fi - fi CFLAGS="$ovs_save_CFLAGS" LDFLAGS="$ovs_save_LDFLAGS" if test "$DPDK_AUTO_DISCOVER" = "false"; then -- 2.17.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
