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
