From 48e1668917cf5bb1d368ddd42f3c7a064f570eb4 Mon Sep 17 00:00:00 2001 From: Sergio Gonzalez Monroy Date: Tue, 6 Jun 2017 15:29:16 +0100 Subject: dpdk: update build Current optional DPDK PMDs are: - AESNI MB PMD (SW crypto) - AESNI GCM PMD (SW crypto) - MLX4 PMD - MLX5 PMD This change will always build DPDK SW crypto PMDs and required SW crypto libraries, while MLX PMDs are still optional and the user has to build required libraries. Now the configure script detects if any of the optional DPDK PMDs were built and link against their required libraries/dependencies. Change-Id: I1560bebd71035d6486483f22da90042ec2ce40a1 Signed-off-by: Sergio Gonzalez Monroy --- src/configure.ac | 48 +++++++++++++++++++++++++++++++++++++++++++++--- src/plugins/dpdk.am | 7 ++++++- 2 files changed, 51 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/configure.ac b/src/configure.ac index 173b3153807..92a2d86e1b1 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -80,6 +80,23 @@ AC_DEFUN([PLUGIN_DISABLED], AC_DEFUN([PRINT_VAL], [ AC_MSG_RESULT(AC_HELP_STRING($1,$2)) ]) +AC_DEFUN([DPDK_IS_PMD_ENABLED], +[ + AC_MSG_CHECKING([for $1 in rte_config.h]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return RTE_$1;]], + )], + [with_$2=yes] + [AC_MSG_RESULT([yes])], + [with_$2=no] + [AC_MSG_RESULT([no])] + ) + AM_CONDITIONAL(m4_toupper(WITH_$2), test "$with_$2" = "yes") + m4_append_uniq([list_of_with], [$2], [, ]) +]) + ############################################################################### # configure arguments ############################################################################### @@ -97,8 +114,6 @@ DISABLE_ARG(papi, [Disable Python API bindings]) DISABLE_ARG(japi, [Disable Java API bindings]) # --with-X -WITH_ARG(dpdk_crypto_sw,[Use DPDK cryptodev SW PMDs]) -WITH_ARG(dpdk_mlx5_pmd, [Use DPDK with mlx5 PMD]) # --without-X WITHOUT_ARG(libssl, [Disable libssl]) @@ -130,7 +145,6 @@ AC_SUBST(PRE_DATA_SIZE, [$with_pre_data]) AC_SUBST(APICLI, [-DVPP_API_TEST_BUILTIN=${n_with_apicli}]) AC_DEFINE_UNQUOTED(DPDK_SHARED_LIB, [${n_enable_dpdk_shared}]) -AC_DEFINE_UNQUOTED(DPDK_CRYPTO_SW, [${n_with_dpdk_crypto_sw}]) AC_DEFINE_UNQUOTED(WITH_LIBSSL, [${n_with_libssl}]) @@ -170,6 +184,34 @@ AM_COND_IF([ENABLE_DPDK_SHARED], [AC_MSG_ERROR([DPDK shared library not found])],) ]) +DPDK_IS_PMD_ENABLED(LIBRTE_PMD_AESNI_MB, dpdk_aesni_mb_pmd) +AM_COND_IF([WITH_DPDK_AESNI_MB_PMD], +[ + AC_CHECK_LIB([IPSec_MB], [submit_job_sse], [], + [AC_MSG_ERROR([IPSec_MB library not found])]) +]) + +DPDK_IS_PMD_ENABLED(LIBRTE_PMD_AESNI_GCM, dpdk_aesni_gcm_pmd) +AM_COND_IF([WITH_DPDK_AESNI_GCM_PMD], +[ + AC_CHECK_LIB([isal_crypto], [aesni_gcm128_init], [], + [AC_MSG_ERROR([isal_crypto library not found])]) +]) + +DPDK_IS_PMD_ENABLED(LIBRTE_MLX5_PMD, dpdk_mlx5_pmd) +AM_COND_IF([WITH_DPDK_MLX5_PMD], +[ + AC_CHECK_LIB([ibverbs], [ibv_fork_init], [], + [AC_MSG_ERROR([ibverbs library not found])]) +]) + +DPDK_IS_PMD_ENABLED(LIBRTE_MLX4_PMD, dpdk_mlx4_pmd) +AM_COND_IF([WITH_DPDK_MLX4_PMD], +[ + AC_CHECK_LIB([ibverbs], [ibv_fork_init], [], + [AC_MSG_ERROR([ibverbs library not found])]) +]) + AM_COND_IF([ENABLE_G2], [ PKG_CHECK_MODULES(g2, gtk+-2.0) diff --git a/src/plugins/dpdk.am b/src/plugins/dpdk.am index 75bfb967af6..3a1ffeeb4a2 100644 --- a/src/plugins/dpdk.am +++ b/src/plugins/dpdk.am @@ -19,14 +19,19 @@ dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -ldpdk else dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive endif -if WITH_DPDK_CRYPTO_SW +if WITH_DPDK_AESNI_MB_PMD dpdk_plugin_la_LDFLAGS += -Wl,--exclude-libs,libIPSec_MB.a,-l:libIPSec_MB.a +endif +if WITH_DPDK_AESNI_GCM_PMD dpdk_plugin_la_LDFLAGS += -Wl,--exclude-libs,libisal_crypto.a,-l:libisal_crypto.a endif dpdk_plugin_la_LDFLAGS += -Wl,-lm,-ldl if WITH_DPDK_MLX5_PMD dpdk_plugin_la_LDFLAGS += -Wl,-libverbs endif +if WITH_DPDK_MLX4_PMD +dpdk_plugin_la_LDFLAGS += -Wl,-libverbs +endif dpdk_plugin_la_SOURCES = \ dpdk/main.c \ -- cgit 1.2.3-korg