Christian Ehrhardt <[email protected]> writes:

> DPDK 18.11 builds using the more modern meson build system no more
> provide the -ldpdk linker script. Instead it is expected to use
> pkgconfig for linker options as well.
>
> This change will set DPDK_LIB from pkg-config (if pkg-config was
> available) and since that already carries the whole-archive flags around
> the PMDs skips the further wrapping in more whole-archive if that is
> already part of DPDK_LIB.
>
> Signed-off-by: Christian Ehrhardt <[email protected]>
> ---
>  acinclude.m4 | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index f038fd457..a45411860 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -223,9 +223,9 @@ AC_DEFUN([OVS_CHECK_DPDK], [
>      case "$with_dpdk" in
>        yes)
>          DPDK_AUTO_DISCOVER="true"
> -        PKG_CHECK_MODULES([DPDK], [libdpdk],
> -                          [DPDK_INCLUDE="$DPDK_CFLAGS"],
> -                          [DPDK_INCLUDE="-I/usr/local/include/dpdk 
> -I/usr/include/dpdk"])
> +        PKG_CHECK_MODULES_STATIC([DPDK], [libdpdk],
> +                                 [DPDK_INCLUDE="$DPDK_CFLAGS", 
> DPDK_LIB="$DPDK_LIBS"],
> +
> [DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk",
> DPDK_LIB="-ldpdk"])

Something about this autoconf check caused all of the travis builds to
fail:

  https://travis-ci.org/ovsrobot/ovs/builds/483986081

The PKG_CHECK_MODULES_STATIC seems to have been added in a later version
of autoconf than is shipped in the travis environment, so it might be
something we need to test against and provide an alternative
implementation, ala the following bug report:

  https://bugs.freedesktop.org/show_bug.cgi?id=19541

Thinking about it, is there a reason to change from dynamic linking to
static linking?  Especially since we can achieve something similar via
the `PKG_CONFIG="$PKG_CONFIG --static"` override?

>          ;;
>        *)
>          DPDK_AUTO_DISCOVER="false"
> @@ -238,10 +238,10 @@ AC_DEFUN([OVS_CHECK_DPDK], [
>             DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH/dpdk"
>          fi
>          DPDK_LIB_DIR="$with_dpdk/lib"
> +        DPDK_LIB="-ldpdk"
>          ;;
>      esac
>  
> -    DPDK_LIB="-ldpdk"
>      DPDK_EXTRA_LIB=""
>  
>      ovs_save_CFLAGS="$CFLAGS"
> @@ -346,7 +346,14 @@ AC_DEFUN([OVS_CHECK_DPDK], [
>      #
>      # These options are specified inside a single -Wl directive to prevent
>      # autotools from reordering them.
> -    DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
> +    #
> +    # OTOH newer versions of dpdk pkg-config (generated with Meson)
> +    # will already have flagged just the right set of libs with
> +    # --whole-archive - in those cases do not wrap it once more.
> +    case "$DPDK_LIB" in
> +      *whole-archive*) DPDK_vswitchd_LDFLAGS=$DPDK_LIB;;
> +      *) 
> DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
> +    esac
>      AC_SUBST([DPDK_vswitchd_LDFLAGS])
>      AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
>    fi
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to