On Tue, Feb 19, 2019 at 10:12:28AM +0300, Ilya Maximets wrote:
> 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:


I think -ldl is only needed if MLX PMDs are enabled, right?
After this patch a library providing dlopen becomes mandatory, then
embedded folks might not like this new dependency.

Otherwise the patch looks good to me.
fbl

> 
>   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

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to