Skip to content

Commit

Permalink
build: Remove DPDK make build references.
Browse files Browse the repository at this point in the history
Building DPDK using Make is removed since DPDK 20.08.
Hence, remove its references in OVS as well.

Fixes: 540e70f ("build: Add support for DPDK meson build.")
Signed-off-by: Sunil Pai G <sunil.pai.g@intel.com>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
  • Loading branch information
Sunil Pai G authored and istokes committed Nov 25, 2020
1 parent 6124302 commit ac0db97
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 151 deletions.
4 changes: 2 additions & 2 deletions .travis/linux-build.sh
Expand Up @@ -145,12 +145,12 @@ function install_dpdk()

CC=gcc meson $DPDK_OPTS build
ninja -C build
sudo ninja -C build install
ninja -C build install

# Update the library paths.
sudo ldconfig

echo "Installed DPDK source"
echo "Installed DPDK source in $(pwd)"
popd
echo "${DPDK_VER}" > ${VERSION_FILE}
}
Expand Down
2 changes: 1 addition & 1 deletion Documentation/intro/install/afxdp.rst
Expand Up @@ -396,7 +396,7 @@ PVP using vhostuser device
--------------------------
First, build OVS with DPDK and AFXDP::

./configure --enable-afxdp --with-dpdk=shared|static|<dpdk path>
./configure --enable-afxdp --with-dpdk=shared|static
make -j4 && make install

Create a vhost-user port from OVS::
Expand Down
75 changes: 20 additions & 55 deletions Documentation/intro/install/dpdk.rst
Expand Up @@ -80,62 +80,37 @@ Install DPDK

#. Configure and install DPDK using Meson

Meson is the preferred tool to build recent DPDK releases
as Make support is deprecated and will be removed from DPDK 20.11.
OVS supports DPDK Meson builds from DPDK 19.11 onwards.

Build and install the DPDK library::

$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
$ meson $DPDK_TARGET
$ ninja -C $DPDK_TARGET
$ sudo ninja -C $DPDK_TARGET install
$ export DPDK_BUILD=$DPDK_DIR/build
$ meson build
$ ninja -C build
$ sudo ninja -C build install
$ sudo ldconfig

Detailed information can be found at `DPDK documentation`_.

#. (Optional) Configure DPDK as a shared library
#. (Optional) Configure and export the DPDK shared library location

Since DPDK is built both as static and shared library by default, no extra
configuration is required for the build.

When using Meson, DPDK is built both as static and shared library.
So no extra configuration is required in this case.
Exporting the path to library is not necessary if the DPDK libraries are
system installed. For libraries installed using a prefix, export the path
to this library and also update the $PKG_CONFIG_PATH for use
before building OVS::

In case of Make, DPDK can be built as either a static library or a shared
library. By default, it is configured for the former. If you wish to use
the latter, set
``CONFIG_RTE_BUILD_SHARED_LIB=y`` in ``$DPDK_DIR/config/common_base``.
$ export LD_LIBRARY_PATH=/path/to/installed/DPDK/libraries
$ export PKG_CONFIG_PATH=/path/to/installed/".pc" file/for/DPDK

.. note::

Minor performance loss is expected when using OVS with a shared DPDK
library compared to a static DPDK library.

#. Configure and install DPDK using Make

Build and install the DPDK library::

$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
$ make install T=$DPDK_TARGET DESTDIR=install

#. (Optional) Export the DPDK shared library location

If DPDK was built as a shared library using Make, export the path to this
library for use when building OVS::

$ export LD_LIBRARY_PATH=$DPDK_DIR/x86_64-native-linuxapp-gcc/lib

In case of Meson, exporting the path to library is not necessary if
the DPDK libraries are system installed. For libraries installed using
a prefix(assuming $DPDK_INSTALL in the below case), export the path to this
library and also update the $PKG_CONFIG_PATH for use before building OVS::

$ export $DPDK_LIB=$DPDK_INSTALL/lib/x86_64-linux-gnu
$ export LD_LIBRARY_PATH=$DPDK_LIB/:$LD_LIBRARY_PATH
$ export PKG_CONFIG_PATH=$DPDK_LIB/pkgconfig/:$PKG_CONFIG_PATH

.. _DPDK sources: http://dpdk.org/rel
.. _DPDK documentation: https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html
.. _DPDK documentation:
https://doc.dpdk.org/guides-20.08/linux_gsg/build_dpdk.html

Install OVS
~~~~~~~~~~~
Expand All @@ -156,24 +131,14 @@ has to be configured to build against the DPDK library (``--with-dpdk``).

#. Configure the package using the ``--with-dpdk`` flag:

Depending on the tool used to build DPDK and the type of
DPDK library to use, one can configure OVS as follows:

When DPDK is built using Meson, and OVS must consume DPDK shared libraries
(also equivalent to leaving --with-dpdk option empty)::

$ ./configure --with-dpdk=shared

When DPDK is built using Meson, and OVS must consume DPDK static libraries::
If OVS must consume DPDK static libraries
(also equivalent to ``--with-dpdk=yes`` )::

$ ./configure --with-dpdk=static

When DPDK is built using Make(for shared or static)::
If OVS must consume DPDK shared libraries::

$ ./configure --with-dpdk=$DPDK_BUILD

where ``DPDK_BUILD`` is the path to the built DPDK library. This can be
skipped if DPDK library is installed in its default location.
$ ./configure --with-dpdk=shared

.. note::
While ``--with-dpdk`` is required, you can pass any other configuration
Expand Down
90 changes: 29 additions & 61 deletions acinclude.m4
Expand Up @@ -334,10 +334,9 @@ dnl
dnl Configure DPDK source tree
AC_DEFUN([OVS_CHECK_DPDK], [
AC_ARG_WITH([dpdk],
[AC_HELP_STRING([--with-dpdk=static|shared|/path/to/dpdk],
[AC_HELP_STRING([--with-dpdk=static|shared|yes],
[Specify "static" or "shared" depending on the
DPDK libraries to use only if built using Meson
OR the DPDK build directory in case of Make])],
DPDK libraries to use])],
[have_dpdk=true])
AC_MSG_CHECKING([whether dpdk is enabled])
Expand All @@ -347,46 +346,25 @@ AC_DEFUN([OVS_CHECK_DPDK], [
else
AC_MSG_RESULT([yes])
case "$with_dpdk" in
"shared" | "static" | "yes")
DPDK_AUTO_DISCOVER="true"
case "$with_dpdk" in
"shared" | "yes")
PKG_CHECK_MODULES([DPDK], [libdpdk], [
DPDK_INCLUDE="$DPDK_CFLAGS"
DPDK_LIB="$DPDK_LIBS"], [
DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"
DPDK_LIB="-ldpdk"])
;;
"static")
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"])
;;
esac
;;
*)
DPDK_AUTO_DISCOVER="false"
DPDK_INCLUDE_PATH="$with_dpdk/include"
# If 'with_dpdk' is passed install directory, point to headers
# installed in $DESTDIR/$prefix/include/dpdk
if test -e "$DPDK_INCLUDE_PATH/rte_config.h"; then
DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH"
elif test -e "$DPDK_INCLUDE_PATH/dpdk/rte_config.h"; then
DPDK_INCLUDE="-I$DPDK_INCLUDE_PATH/dpdk"
fi
DPDK_LIB_DIR="$with_dpdk/lib"
DPDK_LIB="-ldpdk"
;;
"shared")
PKG_CHECK_MODULES([DPDK], [libdpdk], [
DPDK_INCLUDE="$DPDK_CFLAGS"
DPDK_LIB="$DPDK_LIBS"], [
DPDK_INCLUDE="-I/usr/local/include/dpdk -I/usr/include/dpdk"
DPDK_LIB="-ldpdk"])
;;
"static" | "yes")
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"])
;;
esac
ovs_save_CFLAGS="$CFLAGS"
ovs_save_LDFLAGS="$LDFLAGS"
CFLAGS="$CFLAGS $DPDK_INCLUDE"
if test "$DPDK_AUTO_DISCOVER" = "false"; then
LDFLAGS="$LDFLAGS -L${DPDK_LIB_DIR}"
fi
AC_CHECK_HEADERS([rte_config.h], [], [
AC_MSG_ERROR([unable to find rte_config.h in $with_dpdk])
Expand Down Expand Up @@ -435,21 +413,14 @@ AC_DEFUN([OVS_CHECK_DPDK], [
[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, update
PKG_CONFIG_PATH for pkg-config to find the .pc file in
non-standard location]))
else
AC_MSG_ERROR([Could not find DPDK libraries in $DPDK_LIB_DIR])
fi
AC_MSG_ERROR(m4_normalize([
Could not find DPDK library in default search path, update
PKG_CONFIG_PATH for pkg-config to find the .pc file in
non-standard location]))
])
CFLAGS="$ovs_save_CFLAGS"
LDFLAGS="$ovs_save_LDFLAGS"
if test "$DPDK_AUTO_DISCOVER" = "false"; then
OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
fi
OVS_CFLAGS="$OVS_CFLAGS $DPDK_INCLUDE"
OVS_ENABLE_OPTION([-mssse3])
Expand All @@ -458,18 +429,15 @@ AC_DEFUN([OVS_CHECK_DPDK], [
# This happens because the rest of the DPDK code doesn't use any symbol in
# the pmd driver objects, and the drivers register themselves using an
# __attribute__((constructor)) function.
#
# These options are specified inside a single -Wl directive to prevent
# autotools from reordering them.
#
# 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.
if [[ "$pkg_failed" != "no" ]];then
DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive
else
DPDK_vswitchd_LDFLAGS=`python3 ${srcdir}/python/build/pkgcfg.py $DPDK_LIB`
fi
# Wrap the DPDK libraries inside a single -Wl directive
# after comma separation to prevent autotools from reordering them.
DPDK_vswitchd_LDFLAGS=$(echo "$DPDK_LIB"| tr -s ' ' ',' | sed 's/-Wl,//g')
# Replace -pthread with -lpthread for LD and remove the last extra comma.
DPDK_vswitchd_LDFLAGS=$(echo "$DPDK_vswitchd_LDFLAGS"| sed 's/,$//' | \
sed 's/-pthread/-lpthread/g')
# Prepend "-Wl,".
DPDK_vswitchd_LDFLAGS="-Wl,$DPDK_vswitchd_LDFLAGS"
AC_SUBST([DPDK_vswitchd_LDFLAGS])
AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.])
Expand Down
3 changes: 1 addition & 2 deletions python/automake.mk
Expand Up @@ -47,8 +47,7 @@ ovs_pyfiles = \
EXTRA_DIST += \
python/build/__init__.py \
python/build/nroff.py \
python/build/soutil.py \
python/build/pkgcfg.py
python/build/soutil.py

# PyPI support.
EXTRA_DIST += \
Expand Down
30 changes: 0 additions & 30 deletions python/build/pkgcfg.py

This file was deleted.

0 comments on commit ac0db97

Please sign in to comment.