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 <sergio.gonzalez.monroy@intel.com>
This commit is contained in:

committed by
Dave Wallace

parent
19e9d954bd
commit
3b12cdc59c
@ -19,14 +19,13 @@ DPDK_INSTALL_DIR ?= $(CURDIR)/_install
|
|||||||
DPDK_PKTMBUF_HEADROOM ?= 128
|
DPDK_PKTMBUF_HEADROOM ?= 128
|
||||||
DPDK_DOWNLOAD_DIR ?= $(HOME)/Downloads
|
DPDK_DOWNLOAD_DIR ?= $(HOME)/Downloads
|
||||||
DPDK_DEBUG ?= n
|
DPDK_DEBUG ?= n
|
||||||
DPDK_CRYPTO_SW_PMD ?= n
|
|
||||||
DPDK_MLX4_PMD ?= n
|
DPDK_MLX4_PMD ?= n
|
||||||
DPDK_MLX5_PMD ?= n
|
DPDK_MLX5_PMD ?= n
|
||||||
|
|
||||||
B := $(DPDK_BUILD_DIR)
|
B := $(DPDK_BUILD_DIR)
|
||||||
I := $(DPDK_INSTALL_DIR)
|
I := $(DPDK_INSTALL_DIR)
|
||||||
DPDK_VERSION ?= 17.05
|
DPDK_VERSION ?= 17.05
|
||||||
PKG_SUFFIX ?= vpp5
|
PKG_SUFFIX ?= vpp6
|
||||||
DPDK_BASE_URL ?= http://fast.dpdk.org/rel
|
DPDK_BASE_URL ?= http://fast.dpdk.org/rel
|
||||||
DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
|
DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
|
||||||
DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
|
DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
|
||||||
@ -34,14 +33,15 @@ DPDK_17.02_TARBALL_MD5_CKSUM := 6b9f7387c35641f4e8dbba3e528f2376
|
|||||||
DPDK_17.05_TARBALL_MD5_CKSUM := 0a68c31cd6a6cabeed0a4331073e4c05
|
DPDK_17.05_TARBALL_MD5_CKSUM := 0a68c31cd6a6cabeed0a4331073e4c05
|
||||||
DPDK_SOURCE := $(B)/dpdk-$(DPDK_VERSION)
|
DPDK_SOURCE := $(B)/dpdk-$(DPDK_VERSION)
|
||||||
|
|
||||||
ifeq ($(DPDK_CRYPTO_SW_PMD),y)
|
IPSEC_MB_VER := 0.45
|
||||||
AESNIMB_LIB_TARBALL := v0.44-gcm.2.tar.gz
|
AESNIMB_LIB_TARBALL := v$(IPSEC_MB_VER).tar.gz
|
||||||
AESNIMB_LIB_TARBALL_URL := http://github.com/01org/intel-ipsec-mb/archive/$(AESNIMB_LIB_TARBALL)
|
AESNIMB_LIB_TARBALL_URL := http://github.com/01org/intel-ipsec-mb/archive/$(AESNIMB_LIB_TARBALL)
|
||||||
AESNIMB_LIB_SOURCE := $(B)/intel-ipsec-mb-0.44-gcm.2
|
AESNIMB_LIB_SOURCE := $(B)/intel-ipsec-mb-$(IPSEC_MB_VER)
|
||||||
ISA_L_CRYPTO_LIB_TARBALL := isa_l_crypto.tar.gz
|
ISA_L_CRYPTO_VER := 2.18.0
|
||||||
ISA_L_CRYPTO_LIB_TARBALL_URL := http://github.com/01org/isa-l_crypto/archive/master.tar.gz
|
ISA_L_CRYPTO_LIB_TARBALL := v$(ISA_L_CRYPTO_VER).tar.gz
|
||||||
ISA_L_CRYPTO_LIB_SOURCE := $(B)/isa-l_crypto-master
|
ISA_L_CRYPTO_LIB_TARBALL_URL := http://github.com/01org/isa-l_crypto/archive/$(ISA_L_CRYPTO_LIB_TARBALL)
|
||||||
endif
|
ISA_L_CRYPTO_LIB_SOURCE := $(B)/isa-l_crypto-$(ISA_L_CRYPTO_VER)
|
||||||
|
ISA_L_CRYPTO_INSTALL_DIR := $(ISA_L_CRYPTO_LIB_SOURCE)/install
|
||||||
|
|
||||||
ifneq (,$(findstring clang,$(CC)))
|
ifneq (,$(findstring clang,$(CC)))
|
||||||
DPDK_CC=clang
|
DPDK_CC=clang
|
||||||
@ -95,11 +95,9 @@ else
|
|||||||
DPDK_EXTRA_CFLAGS := -g -O0
|
DPDK_EXTRA_CFLAGS := -g -O0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(DPDK_CRYPTO_SW_PMD),y)
|
DPDK_EXTRA_CFLAGS += -I$(ISA_L_CRYPTO_INSTALL_DIR)/include -Wl,-z,muldefs
|
||||||
DPDK_EXTRA_CFLAGS += -I$(I)/include
|
|
||||||
DPDK_EXTRA_LDFLAGS += -L$(I)/lib
|
DPDK_EXTRA_LDFLAGS += -L$(I)/lib
|
||||||
DPDK_MAKE_EXTRA_ARGS += AESNI_MULTI_BUFFER_LIB_PATH=$(AESNIMB_LIB_SOURCE)
|
DPDK_MAKE_EXTRA_ARGS += AESNI_MULTI_BUFFER_LIB_PATH=$(AESNIMB_LIB_SOURCE)
|
||||||
endif
|
|
||||||
|
|
||||||
# assemble DPDK make arguments
|
# assemble DPDK make arguments
|
||||||
DPDK_MAKE_ARGS := -C $(DPDK_SOURCE) -j $(JOBS) \
|
DPDK_MAKE_ARGS := -C $(DPDK_SOURCE) -j $(JOBS) \
|
||||||
@ -111,8 +109,6 @@ DPDK_MAKE_ARGS := -C $(DPDK_SOURCE) -j $(JOBS) \
|
|||||||
DESTDIR=$(I) \
|
DESTDIR=$(I) \
|
||||||
$(DPDK_MAKE_EXTRA_ARGS)
|
$(DPDK_MAKE_EXTRA_ARGS)
|
||||||
|
|
||||||
DPDK_SOURCE_FILES := $(shell [ -e $(DPDK_SOURCE) ] && find $(DPDK_SOURCE) -name "*.[chS]")
|
|
||||||
|
|
||||||
define set
|
define set
|
||||||
@if grep -q CONFIG_$1 $@ ; \
|
@if grep -q CONFIG_$1 $@ ; \
|
||||||
then sed -i -e 's/.*\(CONFIG_$1=\).*/\1$2/' $@ ; \
|
then sed -i -e 's/.*\(CONFIG_$1=\).*/\1$2/' $@ ; \
|
||||||
@ -143,8 +139,8 @@ $(B)/custom-config: $(B)/.patch.ok Makefile
|
|||||||
$(call set,RTE_LIBRTE_PMD_BOND,y)
|
$(call set,RTE_LIBRTE_PMD_BOND,y)
|
||||||
$(call set,RTE_LIBRTE_IP_FRAG,y)
|
$(call set,RTE_LIBRTE_IP_FRAG,y)
|
||||||
$(call set,RTE_LIBRTE_PMD_QAT,y)
|
$(call set,RTE_LIBRTE_PMD_QAT,y)
|
||||||
$(call set,RTE_LIBRTE_PMD_AESNI_MB,$(DPDK_CRYPTO_SW_PMD))
|
$(call set,RTE_LIBRTE_PMD_AESNI_MB,y)
|
||||||
$(call set,RTE_LIBRTE_PMD_AESNI_GCM,$(DPDK_CRYPTO_SW_PMD))
|
$(call set,RTE_LIBRTE_PMD_AESNI_GCM,y)
|
||||||
$(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD))
|
$(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD))
|
||||||
$(call set,RTE_LIBRTE_MLX5_PMD,$(DPDK_MLX5_PMD))
|
$(call set,RTE_LIBRTE_MLX5_PMD,$(DPDK_MLX5_PMD))
|
||||||
@# not needed
|
@# not needed
|
||||||
@ -181,10 +177,8 @@ $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL):
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
DPDK_DOWNLOADS = $(CURDIR)/$(DPDK_TARBALL)
|
DPDK_DOWNLOADS = $(CURDIR)/$(DPDK_TARBALL)
|
||||||
ifeq ($(DPDK_CRYPTO_SW_PMD),y)
|
|
||||||
DPDK_DOWNLOADS += $(CURDIR)/$(AESNIMB_LIB_TARBALL)
|
DPDK_DOWNLOADS += $(CURDIR)/$(AESNIMB_LIB_TARBALL)
|
||||||
DPDK_DOWNLOADS += $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
|
DPDK_DOWNLOADS += $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
|
||||||
endif
|
|
||||||
|
|
||||||
$(B)/.download.ok: $(DPDK_DOWNLOADS)
|
$(B)/.download.ok: $(DPDK_DOWNLOADS)
|
||||||
@mkdir -p $(B)
|
@mkdir -p $(B)
|
||||||
@ -200,12 +194,10 @@ download: $(B)/.download.ok
|
|||||||
$(B)/.extract.ok: $(B)/.download.ok
|
$(B)/.extract.ok: $(B)/.download.ok
|
||||||
@echo --- extracting $(DPDK_TARBALL) ---
|
@echo --- extracting $(DPDK_TARBALL) ---
|
||||||
@tar --directory $(B) --extract --file $(CURDIR)/$(DPDK_TARBALL)
|
@tar --directory $(B) --extract --file $(CURDIR)/$(DPDK_TARBALL)
|
||||||
ifeq ($(DPDK_CRYPTO_SW_PMD),y)
|
|
||||||
@echo --- extracting $(AESNIMB_LIB_TARBALL) ---
|
@echo --- extracting $(AESNIMB_LIB_TARBALL) ---
|
||||||
@tar --directory $(B) --extract --file $(CURDIR)/$(AESNIMB_LIB_TARBALL)
|
@tar --directory $(B) --extract --file $(CURDIR)/$(AESNIMB_LIB_TARBALL)
|
||||||
@echo --- extracting $(ISA_L_CRYPTO_LIB_TARBALL) ---
|
@echo --- extracting $(ISA_L_CRYPTO_LIB_TARBALL) ---
|
||||||
@tar --directory $(B) --extract --file $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
|
@tar --directory $(B) --extract --file $(CURDIR)/$(ISA_L_CRYPTO_LIB_TARBALL)
|
||||||
endif
|
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
.PHONY: extract
|
.PHONY: extract
|
||||||
@ -231,18 +223,29 @@ $(B)/.config.ok: $(B)/.patch.ok $(B)/custom-config
|
|||||||
.PHONY: config
|
.PHONY: config
|
||||||
config: $(B)/.config.ok
|
config: $(B)/.config.ok
|
||||||
|
|
||||||
$(B)/.build.ok: $(DPDK_SOURCE_FILES)
|
# Order matters
|
||||||
@if [ ! -e $(B)/.config.ok ] ; then echo 'Please run "make config" first' && false ; fi
|
BUILD_TARGETS += build-ipsec-mb build-isal-crypto build-dpdk
|
||||||
ifeq ($(DPDK_CRYPTO_SW_PMD),y)
|
|
||||||
# Build IPsec_MB library
|
.PHONY: build-ipsec-mb
|
||||||
|
build-ipsec-mb:
|
||||||
mkdir -p $(I)/lib/
|
mkdir -p $(I)/lib/
|
||||||
make -C $(AESNIMB_LIB_SOURCE) -j NO_GCM=y
|
make -C $(AESNIMB_LIB_SOURCE) -j NO_GCM=y
|
||||||
cp $(AESNIMB_LIB_SOURCE)/libIPSec_MB.a $(I)/lib/
|
cp $(AESNIMB_LIB_SOURCE)/libIPSec_MB.a $(I)/lib/
|
||||||
# Build ISA-L Crypto library
|
|
||||||
cd $(ISA_L_CRYPTO_LIB_SOURCE) && ./autogen.sh && ./configure --prefix=$(I)
|
.PHONY: build-isal-crypto
|
||||||
|
build-isal-crypto:
|
||||||
|
mkdir -p $(I)/lib/
|
||||||
|
cd $(ISA_L_CRYPTO_LIB_SOURCE) && ./autogen.sh && \
|
||||||
|
./configure --prefix=$(ISA_L_CRYPTO_INSTALL_DIR) CFLAGS='-fPIC -DPIC -O2'
|
||||||
make -C $(ISA_L_CRYPTO_LIB_SOURCE) -j install
|
make -C $(ISA_L_CRYPTO_LIB_SOURCE) -j install
|
||||||
endif
|
cp $(ISA_L_CRYPTO_INSTALL_DIR)/lib/libisal_crypto.a $(I)/lib/
|
||||||
|
|
||||||
|
.PHONY: build-dpdk
|
||||||
|
build-dpdk:
|
||||||
|
@if [ ! -e $(B)/.config.ok ] ; then echo 'Please run "make config" first' && false ; fi
|
||||||
@make $(DPDK_MAKE_ARGS) install
|
@make $(DPDK_MAKE_ARGS) install
|
||||||
|
|
||||||
|
$(B)/.build.ok: $(BUILD_TARGETS)
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
.PHONY: build
|
.PHONY: build
|
||||||
@ -323,7 +326,7 @@ build-rpm: $(DEV_RPM)
|
|||||||
|
|
||||||
install-rpm:
|
install-rpm:
|
||||||
ifneq ($(INSTALLED_RPM_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
|
ifneq ($(INSTALLED_RPM_VER),$(DPDK_VERSION)-$(PKG_SUFFIX))
|
||||||
@make $(DEV_RPM)
|
@$(MAKE) $(DEV_RPM)
|
||||||
sudo rpm -Uih $(DEV_RPM)
|
sudo rpm -Uih $(DEV_RPM)
|
||||||
else
|
else
|
||||||
@echo "=========================================================="
|
@echo "=========================================================="
|
||||||
|
@ -80,6 +80,23 @@ AC_DEFUN([PLUGIN_DISABLED],
|
|||||||
|
|
||||||
AC_DEFUN([PRINT_VAL], [ AC_MSG_RESULT(AC_HELP_STRING($1,$2)) ])
|
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 <rte_config.h>]],
|
||||||
|
[[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
|
# configure arguments
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -97,8 +114,6 @@ DISABLE_ARG(papi, [Disable Python API bindings])
|
|||||||
DISABLE_ARG(japi, [Disable Java API bindings])
|
DISABLE_ARG(japi, [Disable Java API bindings])
|
||||||
|
|
||||||
# --with-X
|
# --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-X
|
||||||
WITHOUT_ARG(libssl, [Disable libssl])
|
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_SUBST(APICLI, [-DVPP_API_TEST_BUILTIN=${n_with_apicli}])
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(DPDK_SHARED_LIB, [${n_enable_dpdk_shared}])
|
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}])
|
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])],)
|
[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],
|
AM_COND_IF([ENABLE_G2],
|
||||||
[
|
[
|
||||||
PKG_CHECK_MODULES(g2, gtk+-2.0)
|
PKG_CHECK_MODULES(g2, gtk+-2.0)
|
||||||
|
@ -19,14 +19,19 @@ dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -ldpdk
|
|||||||
else
|
else
|
||||||
dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive
|
dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive
|
||||||
endif
|
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
|
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
|
dpdk_plugin_la_LDFLAGS += -Wl,--exclude-libs,libisal_crypto.a,-l:libisal_crypto.a
|
||||||
endif
|
endif
|
||||||
dpdk_plugin_la_LDFLAGS += -Wl,-lm,-ldl
|
dpdk_plugin_la_LDFLAGS += -Wl,-lm,-ldl
|
||||||
if WITH_DPDK_MLX5_PMD
|
if WITH_DPDK_MLX5_PMD
|
||||||
dpdk_plugin_la_LDFLAGS += -Wl,-libverbs
|
dpdk_plugin_la_LDFLAGS += -Wl,-libverbs
|
||||||
endif
|
endif
|
||||||
|
if WITH_DPDK_MLX4_PMD
|
||||||
|
dpdk_plugin_la_LDFLAGS += -Wl,-libverbs
|
||||||
|
endif
|
||||||
|
|
||||||
dpdk_plugin_la_SOURCES = \
|
dpdk_plugin_la_SOURCES = \
|
||||||
dpdk/main.c \
|
dpdk/main.c \
|
||||||
|
Reference in New Issue
Block a user