Build packages for generic Arm architecture 78/18278/16
authorLijian.Zhang <Lijian.Zhang@arm.com>
Wed, 27 Feb 2019 10:17:34 +0000 (18:17 +0800)
committerDamjan Marion <dmarion@me.com>
Tue, 14 May 2019 15:32:11 +0000 (15:32 +0000)
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 <Lijian.Zhang@arm.com>
Reviewed-by: Sirshak Das <Sirshak.Das@arm.com>
Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
build-data/packages/external.mk
build-data/packages/vpp.mk
build/external/packages/dpdk.mk
src/cmake/cpu.cmake

index 9bc04d3..0c0c243 100644 (file)
@@ -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)"
index 9ce557a..ec61083 100644 (file)
@@ -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),)
index a551151..9cbcf02 100644 (file)
@@ -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
 ##############################################################################
index 60cf3b9..df52053 100644 (file)
@@ -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})