[ovs-dev] [PATCH 2/2] acinclude: Use AC_SEARCH_LIBS for linking with dl.
Ilya Maximets
i.maximets at samsung.com
Thu Feb 21 13:54:39 UTC 2019
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 <i.maximets at 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
>> dev at openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
>
More information about the dev
mailing list