On Thu, Feb 21, 2019 at 04:54:39PM +0300, Ilya Maximets wrote: > 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. True, I missed that when I grep'ed.
Acked-by: Flavio Leitner <f...@sysclose.org> > > 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 <i.maxim...@samsung.com> > >> --- > >> 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 > >> d...@openvswitch.org > >> https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > > > > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev