On 21.02.2019 16:48, Flavio Leitner wrote: > 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?
Unfortunately, not. It's used in 'eal_plugins_init()' inside lib/librte_eal/common/eal_common_options.c. And it's not guarded by any CONFIG. So, we have to look for library with 'dlopen' in any configuration. > 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
