Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
openvswitch.11325
openvswitch-2.5.0-detect-dpdk-installation.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openvswitch-2.5.0-detect-dpdk-installation.patch of Package openvswitch.11325
From patchwork Tue Apr 12 10:44:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [ovs-dev, v5] acinclude: Autodetect DPDK location when configuring OVS From: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com> X-Patchwork-Id: 609339 Message-Id: <1460457855-58572-1-git-send-email-bhanuprakash.bodireddy@intel.com> To: blp@ovn.org Cc: dev@openvswitch.org Date: Tue, 12 Apr 2016 11:44:15 +0100 When using DPDK datapath, the OVS configure script requires the DPDK build directory passed on --with-dpdk. This can be avoided if DPDK library, headers are in standard compiler search paths. This patch fixes the problem by searching for DPDK libraries in standard locations and configure OVS sources for dpdk datapath. If the install location is manually specified in "--with-dpdk" autodiscovery shall be skipped. v4->v5 - Minor code fixes and indentation changes as suggested by Ben Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com> --- acinclude.m4 | 76 +++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index f345c31..acd7ce7 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -163,27 +163,50 @@ AC_DEFUN([OVS_CHECK_DPDK], [ [AC_HELP_STRING([--with-dpdk=/path/to/dpdk], [Specify the DPDK build directory])]) - if test X"$with_dpdk" != X; then - RTE_SDK=$with_dpdk + AC_MSG_CHECKING([whether dpdk datapath is enabled]) + if test -z "$with_dpdk" || test "$with_dpdk" = no; then + AC_MSG_RESULT([no]) + DPDKLIB_FOUND=false + else + AC_MSG_RESULT([yes]) + case "$with_dpdk" in + yes) + DPDK_AUTO_DISCOVER="true" + DPDK_INCLUDE="/usr/local/include/dpdk -I/usr/include/dpdk" + ;; + *) + DPDK_AUTO_DISCOVER="false" + DPDK_INCLUDE="$with_dpdk/include" + # If 'with_dpdk' is passed install directory, point to headers + # installed in $DESTDIR/$prefix/include/dpdk + AC_CHECK_FILE([$DPDK_INCLUDE/rte_config.h], [], + [AC_CHECK_FILE([$DPDK_INCLUDE/dpdk/rte_config.h], + [DPDK_INCLUDE=$DPDK_INCLUDE/dpdk], [])]) + DPDK_LIB_DIR="$with_dpdk/lib" + ;; + esac - DPDK_INCLUDE=$RTE_SDK/include - DPDK_LIB_DIR=$RTE_SDK/lib DPDK_LIB="-ldpdk" DPDK_EXTRA_LIB="" - RTE_SDK_FULL=`readlink -f $RTE_SDK` - - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([#include <$RTE_SDK_FULL/include/rte_config.h> -#if !RTE_LIBRTE_VHOST_USER -#error -#endif], [])], - [], [AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse support enabled, vhost-user disabled.]) - DPDK_EXTRA_LIB="-lfuse"]) ovs_save_CFLAGS="$CFLAGS" ovs_save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -L$DPDK_LIB_DIR" CFLAGS="$CFLAGS -I$DPDK_INCLUDE" + if test "$DPDK_AUTO_DISCOVER" = "false"; then + LDFLAGS="$LDFLAGS -L${DPDK_LIB_DIR}" + fi + + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [ + #include <rte_config.h> +#if !RTE_LIBRTE_VHOST_USER +#error +#endif + ], []) + ], [], + [AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse support enabled, vhost-user disabled.]) + DPDK_EXTRA_LIB="-lfuse"]) # On some systems we have to add -ldl to link with dpdk # @@ -192,7 +215,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [ # Before each attempt the search cache must be unset, # otherwise autoconf will stick with the old result - found=false + DPDKLIB_FOUND=false save_LIBS=$LIBS for extras in "" "-ldl"; do LIBS="$DPDK_LIB $extras $save_LIBS $DPDK_EXTRA_LIB" @@ -201,17 +224,25 @@ AC_DEFUN([OVS_CHECK_DPDK], [ #include <rte_eal.h>], [int rte_argc; char ** rte_argv; rte_eal_init(rte_argc, rte_argv);])], - [found=true]) - if $found; then + [DPDKLIB_FOUND=true]) + if $DPDKLIB_FOUND; then break fi done - if $found; then :; else - AC_MSG_ERROR([cannot link with dpdk]) + + # 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" - OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR" + if test "$DPDK_AUTO_DISCOVER" = "false"; then + OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR" + fi OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE" OVS_ENABLE_OPTION([-mssse3]) @@ -226,12 +257,9 @@ AC_DEFUN([OVS_CHECK_DPDK], [ DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive AC_SUBST([DPDK_vswitchd_LDFLAGS]) AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.]) - - else - RTE_SDK= fi - AM_CONDITIONAL([DPDK_NETDEV], test -n "$RTE_SDK") + AM_CONDITIONAL([DPDK_NETDEV], test "$DPDKLIB_FOUND" = true) ]) dnl OVS_GREP_IFELSE(FILE, REGEX, [IF-MATCH], [IF-NO-MATCH])
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor