B := $(DPDK_BUILD_DIR)
I := $(DPDK_INSTALL_DIR)
-DPDK_VERSION ?= 18.02.1
-PKG_SUFFIX ?= vpp1
+DPDK_VERSION ?= 18.08
+PKG_SUFFIX ?= vpp2
DPDK_BASE_URL ?= http://fast.dpdk.org/rel
DPDK_TARBALL := dpdk-$(DPDK_VERSION).tar.xz
DPDK_TAR_URL := $(DPDK_BASE_URL)/$(DPDK_TARBALL)
-DPDK_17.11_TARBALL_MD5_CKSUM := 53ee9e054a8797c9e67ffa0eb5d0c701
-DPDK_18.02.1_TARBALL_MD5_CKSUM := 3bbb5468f662e1f7472d4abc5c4cf08e
-DPDK_SOURCE := $(B)/dpdk-stable-$(DPDK_VERSION)
+DPDK_18.05_TARBALL_MD5_CKSUM := 9fc86367cd9407ff6a8dfea56c4eddc4
+DPDK_18.08_TARBALL_MD5_CKSUM := da5e7fb25ab063c47e53929fb8c58be5
MACHINE=$(shell uname -m)
+# replace dot with space, and if 3rd word exists we deal with stable dpdk rel
+ifeq ($(word 3,$(subst ., ,$(DPDK_VERSION))),)
+DPDK_SOURCE := $(B)/dpdk-$(DPDK_VERSION)
+else
+DPDK_SOURCE := $(B)/dpdk-stable-$(DPDK_VERSION)
+endif
+
NASM_BASE_URL := http://www.nasm.us/pub/nasm/releasebuilds
-NASM_VER := 2.13.01
+NASM_VER := 2.13.03
NASM_TARBALL := nasm-$(NASM_VER).tar.xz
NASM_TAR_URL := $(NASM_BASE_URL)/$(NASM_VER)/$(NASM_TARBALL)
NASM_SOURCE := $(B)/nasm-$(NASM_VER)
-ifeq ($(DPDK_VERSION),17.11)
-IPSEC_MB_VER ?= 0.47
-else
+ifneq (,$(findstring 18.02,$(DPDK_VERSION)))
IPSEC_MB_VER ?= 0.48
+else
+IPSEC_MB_VER ?= 0.49
endif
ifeq ($(MACHINE),$(filter $(MACHINE),x86_64))
# ARM64
##############################################################################
else ifeq ($(MACHINE),aarch64)
-export CROSS=""
+CROSS :=
+export CROSS
DPDK_TARGET ?= arm64-armv8a-linuxapp-$(DPDK_CC)
DPDK_MACHINE ?= armv8a
DPDK_TUNE ?= generic
$(CPU_PART_CAVIUM_THUNDERX_81XX) $(CPU_PART_CAVIUM_THUNDERX_83XX)))
DPDK_TARGET = arm64-thunderx-linuxapp-$(DPDK_CC)
DPDK_MACHINE = thunderx
+DPDK_CACHE_LINE_SIZE := 128
else
$(warning Unknown Cavium CPU)
endif
$(shell grep -c ^processor /proc/cpuinfo), 2)
# compiler/linker custom arguments
+ifeq ($(DPDK_CC),clang)
+DPDK_CPU_CFLAGS := -fPIE -fPIC
+else
DPDK_CPU_CFLAGS := -pie -fPIC
+endif
ifeq ($(DPDK_DEBUG),n)
DPDK_EXTRA_CFLAGS := -g -mtune=$(DPDK_TUNE)
DPDK_EXTRA_CFLAGS := -g -O0
endif
+# -Wimplicit-fallthrough was introduced starting from GCC 7,
+# and it requires newer version of ccache.
+# Disable fallthrough warning for old ccache version.
+ifeq ($(DPDK_CC),gcc)
+GCC_VER_V = "7.0.0"
+CCACHE_VER_V = "3.4.1"
+GCC_VER = $(shell gcc --version | grep ^gcc | sed 's/^.* //g')
+CCACHE_VER = $(shell ccache --version | grep ^ccache | sed 's/^.* //g')
+ifeq ($(shell expr "$(GCC_VER)" ">=" "$(GCC_VER_V)"),1)
+ifeq ($(shell expr "$(CCACHE_VER)" "<" "$(CCACHE_VER_V)"),1)
+DPDK_EXTRA_CFLAGS += -Wimplicit-fallthrough=0
+endif
+endif
+endif
+
+ifeq ($(AESNI),y)
+IPSEC_MB_BUILD_PATH := $(B)/intel-ipsec-mb-$(IPSEC_MB_VER)
+DPDK_EXTRA_CFLAGS += -L$(IPSEC_MB_BUILD_PATH) -I$(IPSEC_MB_BUILD_PATH)
+endif
+
DPDK_MAKE_EXTRA_ARGS += AESNI_MULTI_BUFFER_LIB_PATH=$(AESNIMB_LIB_SOURCE)
# assemble DPDK make arguments
$(call set,RTE_LIBRTE_PMD_AESNI_GCM,$(AESNI))
$(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD))
$(call set,RTE_LIBRTE_MLX5_PMD,$(DPDK_MLX5_PMD))
+ $(call set,RTE_LIBRTE_PMD_SOFTNIC,n)
$(call set,RTE_LIBRTE_MLX4_DLOPEN_DEPS,$(DPDK_MLX4_PMD))
$(call set,RTE_LIBRTE_MLX5_DLOPEN_DEPS,$(DPDK_MLX5_PMD))
$(call set,RTE_LIBRTE_PMD_TAP,$(DPDK_TAP_PMD))
$(call set,RTE_LIBRTE_PMD_FAILSAFE,$(DPDK_FAILSAFE_PMD))
@# not needed
- $(call set,RTE_LIBRTE_TIMER,n)
$(call set,RTE_LIBRTE_CFGFILE,n)
$(call set,RTE_LIBRTE_LPM,n)
$(call set,RTE_LIBRTE_ACL,n)
build-ipsec-mb:
mkdir -p $(I)/lib/
# Do not build GCM stuff if we are building ISA_L
- make -C $(AESNIMB_LIB_SOURCE) -j \
+ make -C $(AESNIMB_LIB_SOURCE) -j SHARED=n \
EXTRA_CFLAGS=-fPIC NASM=$(NASM_SOURCE)/nasm
cp $(AESNIMB_LIB_SOURCE)/libIPSec_MB.a $(I)/lib/