From 49c1bc845d0bc77542982f85cc64f57e2b5b70f6 Mon Sep 17 00:00:00 2001 From: "Lijian.Zhang" Date: Wed, 27 Feb 2019 18:17:34 +0800 Subject: Build packages for generic Arm architecture The current aarch64 version of VPP package distro in cloud repository (https://packagecloud.io/fdio/master/ubuntu), is built on a ThunderX server, using some arch-specific options, for example, 128Byte cache line size, T=arm64-thunderx-linuxapp-gcc, RTE_MACHINE=thunderx The patch is trying to build package distro with aarch64 generic features, for both binary type targets, e.g., build/build-release, and package type targets, e.g., pkg-deb/pkg-rpm, with the generic options, e.g., 128Byte cache line size, T=arm64-armv8a-linuxapp-gcc, RTE_MACHINE=armv8a If end users want to build arch specific optimized image, TARGET_PLATFORM variable could be used, as below example, $ make build-release/pkg-deb TARGET_PLATFORM=thunderx Change-Id: If78bca8709fe83db6a95e8c26346f206bf5ea71d Signed-off-by: Lijian Zhang Reviewed-by: Sirshak Das Reviewed-by: Honnappa Nagarahalli --- build-data/packages/external.mk | 4 ++++ build-data/packages/vpp.mk | 5 +++++ build/external/packages/dpdk.mk | 9 ++++++++- src/cmake/cpu.cmake | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/build-data/packages/external.mk b/build-data/packages/external.mk index 9bc04d3ef03..0c0c24375b0 100644 --- a/build-data/packages/external.mk +++ b/build-data/packages/external.mk @@ -44,6 +44,10 @@ ifneq ($(DPDK_PLATFORM_TARGET),) DPDK_MAKE_ARGS += DPDK_TARGET=$(DPDK_PLATFORM_TARGET) endif +ifneq (,$(TARGET_PLATFORM)) +DPDK_MAKE_ARGS += DPDK_AARCH64_GENERIC=n +endif + DPDK_MAKE_EXTRA_ARGS = $(strip $($(PLATFORM)_dpdk_make_extra_args)) ifneq ($(DPDK_MAKE_EXTRA_ARGS),) DPDK_MAKE_ARGS += DPDK_MAKE_EXTRA_ARGS="$(DPDK_MAKE_EXTRA_ARGS)" diff --git a/build-data/packages/vpp.mk b/build-data/packages/vpp.mk index 9ce557a9946..ec61083455e 100644 --- a/build-data/packages/vpp.mk +++ b/build-data/packages/vpp.mk @@ -31,6 +31,11 @@ vpp_cmake_args += -DCMAKE_PREFIX_PATH:PATH="$(vpp_cmake_prefix_path)" ifeq ("$(V)","1") vpp_cmake_args += -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON endif +ifeq (,$(TARGET_PLATFORM)) +ifeq ($(MACHINE),aarch64) +vpp_cmake_args += -DVPP_LOG2_CACHE_LINE_SIZE=7 +endif +endif # Use devtoolset on centos 7 ifneq ($(wildcard /opt/rh/devtoolset-7/enable),) diff --git a/build/external/packages/dpdk.mk b/build/external/packages/dpdk.mk index a551151bba7..9cbcf020a23 100644 --- a/build/external/packages/dpdk.mk +++ b/build/external/packages/dpdk.mk @@ -15,6 +15,7 @@ DPDK_PKTMBUF_HEADROOM ?= 128 DPDK_CACHE_LINE_SIZE ?= 64 DPDK_DOWNLOAD_DIR ?= $(DL_CACHE_DIR) DPDK_DEBUG ?= n +DPDK_AARCH64_GENERIC ?= y DPDK_MLX4_PMD ?= n DPDK_MLX5_PMD ?= n DPDK_TAP_PMD ?= n @@ -67,7 +68,10 @@ export CROSS DPDK_TARGET ?= arm64-armv8a-linuxapp-$(DPDK_CC) DPDK_MACHINE ?= armv8a DPDK_TUNE ?= generic - +ifeq (y, $(DPDK_AARCH64_GENERIC)) +DPDK_CACHE_LINE_SIZE := 128 +# assign aarch64 variant specific options +else CPU_IMP_ARM = 0x41 CPU_IMP_CAVIUM = 0x43 @@ -112,6 +116,9 @@ $(warning Unknown Cavium CPU) endif endif +# finish of assigning aarch64 variant specific options +endif + ############################################################################## # Unknown platform ############################################################################## diff --git a/src/cmake/cpu.cmake b/src/cmake/cpu.cmake index 60cf3b9dcf0..df52053bab5 100644 --- a/src/cmake/cpu.cmake +++ b/src/cmake/cpu.cmake @@ -17,6 +17,8 @@ if(CMAKE_CROSSCOMPILING) message(STATUS "Cross-compiling - cache line size detection disabled") set(VPP_LOG2_CACHE_LINE_SIZE 6) +elseif(DEFINED VPP_LOG2_CACHE_LINE_SIZE) + # Cache line size assigned via cmake args elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") file(READ "/proc/cpuinfo" cpuinfo) string(REPLACE "\n" ";" cpuinfo ${cpuinfo}) -- cgit 1.2.3-korg