summaryrefslogtreecommitdiffstats
path: root/build-data
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2016-01-22 08:23:09 -0500
committerDave Barach <dave@barachs.net>2016-01-22 08:23:27 -0500
commit61efa140b1f44e0c568697fbc31cf3f430131ab2 (patch)
tree780880f2fce0882840b204eb26bd7465ed7c7e09 /build-data
parentbfdedbd5a3ba7e6fdc036d212253aa55c9062211 (diff)
aarch64 CPU arch / ThunderX platform initial support
Change-Id: Ia2edd3cee2c25c26c7c47a9023744b97226434c7 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'build-data')
-rw-r--r--build-data/packages/cavium-dpdk.mk55
-rw-r--r--build-data/packages/sample-plugin.mk2
-rw-r--r--build-data/packages/vlib-api-cavium-dpdk.mk6
-rw-r--r--build-data/packages/vlib-api.mk2
-rw-r--r--build-data/packages/vlib-cavium-dpdk.mk7
-rw-r--r--build-data/packages/vnet-cavium-dpdk.mk29
-rw-r--r--build-data/packages/vpp-api-test-cavium-dpdk.mk32
-rw-r--r--build-data/packages/vpp-api-test-no-dpdk.mk3
-rw-r--r--build-data/packages/vpp-api-test.mk27
-rw-r--r--build-data/packages/vpp-cavium-dpdk.mk30
-rw-r--r--build-data/packages/vpp-no-dpdk.mk25
-rw-r--r--build-data/packages/vpp.mk3
-rw-r--r--build-data/platforms/thunder.mk36
13 files changed, 223 insertions, 34 deletions
diff --git a/build-data/packages/cavium-dpdk.mk b/build-data/packages/cavium-dpdk.mk
new file mode 100644
index 00000000000..ce8ee228429
--- /dev/null
+++ b/build-data/packages/cavium-dpdk.mk
@@ -0,0 +1,55 @@
+# Temporary until Cavium upstreams their work
+
+cavium-dpdk_configure = \
+ src_dir=$(call find_source_fn,$(PACKAGE_SOURCE)) ; \
+ dst_dir=$(PACKAGE_BUILD_DIR) ; \
+ tar -C $${src_dir} -cf - . | tar -C $${dst_dir} -xf - ; \
+ cd $${dst_dir} ; \
+ : colossal hemorrhoid to configure headroom ; \
+ if [ x$($(PACKAGE)_configure_args_$(PLATFORM)) = "x" ] ; then \
+ HR=256 ; \
+ else \
+ dpdk_configure_args=$($(PACKAGE)_configure_args_$(PLATFORM)) ; \
+ if [ $$dpdk_configure_args = "--with-headroom=256" ] ; then \
+ HR=256 ; \
+ elif [ $$dpdk_configure_args = "--with-headroom=384" ] ; then \
+ HR=384 ; \
+ else \
+ HR=256 ; \
+ fi ; \
+ fi ; \
+ env HR=$$HR \
+ spp -o \
+ $(PACKAGE_BUILD_DIR)/config/common_linuxapp \
+ $(PACKAGE_BUILD_DIR)/config/common_linuxapp.spp \
+ ; \
+ env $(CONFIGURE_ENV) \
+ make config T=arm64-thunderx-linuxapp-gcc RTE_ARCH=arm64 \
+ CC=aarch64-thunderx-linux-gnu-gcc V=0 \
+ RTE_SDK=$(PACKAGE_BUILD_DIR) \
+ RTE_TARGET=arm-default-linuxapp-gcc
+
+# Note: add e.g. "-O0" to EXTRA_CFLAGS if desired: EXTRA_CFLAGS='-g -O0'
+
+cavium-dpdk_make_args = install T=arm64-thunderx-linuxapp-gcc RTE_ARCH=arm64 \
+ CC=aarch64-thunderx-linux-gnu-gcc V=0 \
+ RTE_SDK=$(PACKAGE_BUILD_DIR) \
+ RTE_TARGET=arm-default-linuxapp-gcc
+
+cavium-dpdk_install = \
+ src_dir=$(PACKAGE_BUILD_DIR) ; \
+ dst_dir=$(PACKAGE_INSTALL_DIR) ; \
+ tar -h -C $${src_dir}/arm64-thunderx-linuxapp-gcc -cf - . \
+ | tar -C $${dst_dir} -xf -
+
+# dpdk libraries end up in .../lib not .../lib64. Fix it.
+cavium-dpdk_post_install = \
+ if [ "$(arch_lib_dir)" != "lib" ] ; then \
+ mkdir -p $(PACKAGE_INSTALL_DIR)/$(arch_lib_dir) ; \
+ cd $(PACKAGE_INSTALL_DIR)/lib ; \
+ tar cf - . | ( cd $(PACKAGE_INSTALL_DIR)/$(arch_lib_dir); tar xf - ) ; \
+ fi
+
+# nothing to install, all static libraries
+cavium-dpdk_image_include = echo
+
diff --git a/build-data/packages/sample-plugin.mk b/build-data/packages/sample-plugin.mk
index 4532817c766..e9f2789aa49 100644
--- a/build-data/packages/sample-plugin.mk
+++ b/build-data/packages/sample-plugin.mk
@@ -9,7 +9,7 @@ sample-plugin_configure_depend = \
vpp-api-test-install
#
-sample-plugin_configure_args = --with-q-platform=$(PLATFORM) --with-dpdk
+sample-plugin_configure_args = --with-dpdk
sample-plugin_CPPFLAGS = $(call installed_includes_fn, \
vppinfra \
diff --git a/build-data/packages/vlib-api-cavium-dpdk.mk b/build-data/packages/vlib-api-cavium-dpdk.mk
new file mode 100644
index 00000000000..7a4fe2cd718
--- /dev/null
+++ b/build-data/packages/vlib-api-cavium-dpdk.mk
@@ -0,0 +1,6 @@
+vlib-api-cavium-dpdk_source = vlib-api
+
+vlib-api-cavium-dpdk_configure_depend = vppinfra-install svm-install vlib-cavium-dpdk-install
+
+vlib-api-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, vppinfra svm vlib-cavium-dpdk)
+vlib-api-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, vppinfra svm vlib-cavium-dpdk)
diff --git a/build-data/packages/vlib-api.mk b/build-data/packages/vlib-api.mk
index f4bd67d9c15..29b0d17dba2 100644
--- a/build-data/packages/vlib-api.mk
+++ b/build-data/packages/vlib-api.mk
@@ -2,5 +2,3 @@ vlib-api_configure_depend = vppinfra-install svm-install vlib-install
vlib-api_CPPFLAGS = $(call installed_includes_fn, vppinfra svm vlib)
vlib-api_LDFLAGS = $(call installed_libs_fn, vppinfra svm vlib)
-
-vlib-api_top_srcdir = $(call find_source_fn,vlib-api)
diff --git a/build-data/packages/vlib-cavium-dpdk.mk b/build-data/packages/vlib-cavium-dpdk.mk
new file mode 100644
index 00000000000..0f2f132d05c
--- /dev/null
+++ b/build-data/packages/vlib-cavium-dpdk.mk
@@ -0,0 +1,7 @@
+vlib-cavium-dpdk_source = vlib
+vlib-cavium-dpdk_configure_depend = vppinfra-install cavium-dpdk-install
+
+vlib-cavium-dpdk_configure_args += --with-dpdk
+
+vlib-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, vppinfra cavium-dpdk)
+vlib-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, vppinfra cavium-dpdk)
diff --git a/build-data/packages/vnet-cavium-dpdk.mk b/build-data/packages/vnet-cavium-dpdk.mk
new file mode 100644
index 00000000000..4c35b04dce8
--- /dev/null
+++ b/build-data/packages/vnet-cavium-dpdk.mk
@@ -0,0 +1,29 @@
+vnet-cavium-dpdk_source = vnet
+
+vnet-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install
+
+
+vnet-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk)
+
+vnet-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk)
+
+# Platform dependent configure flags
+vnet-cavium-dpdk_configure_args += $(vnet-cavium-dpdk_configure_args_$(PLATFORM))
+
diff --git a/build-data/packages/vpp-api-test-cavium-dpdk.mk b/build-data/packages/vpp-api-test-cavium-dpdk.mk
new file mode 100644
index 00000000000..e352317ff8d
--- /dev/null
+++ b/build-data/packages/vpp-api-test-cavium-dpdk.mk
@@ -0,0 +1,32 @@
+vpp-api-test-cavium-dpdk_source = vpp-api-test
+
+vpp-api-test-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install \
+ vnet-cavium-dpdk-install \
+ vpp-cavium-dpdk-install
+
+#
+vpp-api-test-cavium-dpdk_configure_args = --with-dpdk
+
+vpp-api-test-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk \
+ vpp-cavium-dpdk)
+
+vpp-api-test-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk \
+ vpp-cavium-dpdk)
+
diff --git a/build-data/packages/vpp-api-test-no-dpdk.mk b/build-data/packages/vpp-api-test-no-dpdk.mk
index b511f2caf9b..7aab11c3a46 100644
--- a/build-data/packages/vpp-api-test-no-dpdk.mk
+++ b/build-data/packages/vpp-api-test-no-dpdk.mk
@@ -9,8 +9,7 @@ vpp-api-test-no-dpdk_configure_depend = \
vpp-no-dpdk-install
#
-vpp-api-test-no-dpdk_configure_args = --with-q-platform=$(PLATFORM) \
- --with-q-plugin-prefix=$(MU_BUILD_ROOT_DIR)/packages-$(PLATFORM)
+vpp-api-test-no-dpdk_configure_args =
vpp-api-test-no-dpdk_CPPFLAGS = $(call installed_includes_fn, \
vppinfra \
diff --git a/build-data/packages/vpp-api-test.mk b/build-data/packages/vpp-api-test.mk
index eb7f466a24a..6ad70bc527d 100644
--- a/build-data/packages/vpp-api-test.mk
+++ b/build-data/packages/vpp-api-test.mk
@@ -8,24 +8,23 @@ vpp-api-test_configure_depend = \
vpp-install
#
-vpp-api-test_configure_args = --with-q-platform=$(PLATFORM) --with-dpdk \
- --with-q-plugin-prefix=$(MU_BUILD_ROOT_DIR)/packages-$(PLATFORM)
+vpp-api-test_configure_args = --with-dpdk
vpp-api-test_CPPFLAGS = $(call installed_includes_fn, \
- vppinfra \
- dpdk \
- svm \
- vlib \
- vlib-api \
- vnet \
+ vppinfra \
+ dpdk \
+ svm \
+ vlib \
+ vlib-api \
+ vnet \
vpp)
vpp-api-test_LDFLAGS = $(call installed_libs_fn, \
- vppinfra \
- dpdk \
- svm \
- vlib \
- vlib-api \
- vnet \
+ vppinfra \
+ dpdk \
+ svm \
+ vlib \
+ vlib-api \
+ vnet \
vpp)
diff --git a/build-data/packages/vpp-cavium-dpdk.mk b/build-data/packages/vpp-cavium-dpdk.mk
new file mode 100644
index 00000000000..704e3a95535
--- /dev/null
+++ b/build-data/packages/vpp-cavium-dpdk.mk
@@ -0,0 +1,30 @@
+vpp-cavium-dpdk_source = vpp
+
+vpp-cavium-dpdk_configure_depend = \
+ vppinfra-install \
+ cavium-dpdk-install \
+ svm-install \
+ vlib-api-cavium-dpdk-install \
+ vlib-cavium-dpdk-install \
+ vnet-cavium-dpdk-install
+
+# Platform dependent configure flags
+vpp-cavium-dpdk_configure_args += $(vpp-cavium-dpdk_configure_args_$(PLATFORM))
+
+vpp-cavium-dpdk_CPPFLAGS = $(call installed_includes_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk)
+
+vpp-cavium-dpdk_LDFLAGS = $(call installed_libs_fn, \
+ vppinfra \
+ cavium-dpdk \
+ openssl \
+ svm \
+ vlib-cavium-dpdk \
+ vlib-api-cavium-dpdk \
+ vnet-cavium-dpdk)
diff --git a/build-data/packages/vpp-no-dpdk.mk b/build-data/packages/vpp-no-dpdk.mk
index f509bdf399f..81f3f75a100 100644
--- a/build-data/packages/vpp-no-dpdk.mk
+++ b/build-data/packages/vpp-no-dpdk.mk
@@ -1,33 +1,32 @@
vpp-no-dpdk_source = vpp
-vpp-no-dpdk_configure_depend = \
+vpp-no-dpdk_configure_depend = \
vppinfra-install \
- openssl-install \
+ openssl-install \
svm-install \
- vlib-api-no-dpdk-install \
- vlib-no-dpdk-install \
- vnet-no-dpdk-install \
+ vlib-api-no-dpdk-install \
+ vlib-no-dpdk-install \
+ vnet-no-dpdk-install
#
-vpp-no-dpdk_configure_args = --with-q-platform=$(PLATFORM) \
- --with-q-plugin-prefix=$(MU_BUILD_ROOT_DIR)/packages-$(PLATFORM)
+vpp-no-dpdk_configure_args =
# Platform dependent configure flags
vpp-no-dpdk_configure_args += $(vpp-no-dpdk_configure_args_$(PLATFORM))
vpp-no-dpdk_CPPFLAGS = $(call installed_includes_fn, \
- vppinfra \
- openssl \
- svm \
+ vppinfra \
+ openssl \
+ svm \
vlib-no-dpdk \
vlib-api-no-dpdk \
vnet-no-dpdk)
-vpp-no-dpdk_LDFLAGS = $(call installed_libs_fn, \
+vpp-no-dpdk_LDFLAGS = $(call installed_libs_fn, \
vppinfra \
openssl \
svm \
- vlib-no-dpdk \
- vlib-api-no-dpdk \
+ vlib-no-dpdk \
+ vlib-api-no-dpdk \
vnet-no-dpdk)
diff --git a/build-data/packages/vpp.mk b/build-data/packages/vpp.mk
index ff2c551965a..02aca4e6426 100644
--- a/build-data/packages/vpp.mk
+++ b/build-data/packages/vpp.mk
@@ -7,8 +7,7 @@ vpp_configure_depend = \
vnet-install \
#
-vpp_configure_args = --with-q-platform=$(PLATFORM) \
- --with-q-plugin-prefix=$(MU_BUILD_ROOT_DIR)/packages-$(PLATFORM)
+vpp_configure_args =
# Platform dependent configure flags
vpp_configure_args += $(vpp_configure_args_$(PLATFORM))
diff --git a/build-data/platforms/thunder.mk b/build-data/platforms/thunder.mk
new file mode 100644
index 00000000000..8fb00456b05
--- /dev/null
+++ b/build-data/platforms/thunder.mk
@@ -0,0 +1,36 @@
+# Override OS so we can use the sdk toolchain instead of building one
+thunder_os = thunderx-linux-gnu
+
+# Override CROSS_LDFLAGS so we can use
+# /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 instead of building glibc
+thunder_cross_ldflags = \
+ -Wl,--dynamic-linker=/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 \
+ -Wl,-rpath -Wl,$(lots_of_slashes_to_pad_names)$(TOOL_INSTALL_LIB_DIR)
+
+thunder_arch = aarch64
+# suppress -march=foo, the cross compiler doesn't understand it
+thunder_march = " "
+
+thunder_root_packages = vppinfra vlib-cavium-dpdk vnet-cavium-dpdk cavium-dpdk \
+ vpp-cavium-dpdk vpp-api-test-cavium-dpdk
+
+vnet-cavium-dpdk_configure_args_thunder = \
+ --with-dpdk --without-ipsec --without-vcgn --without-ipv6sr
+
+vpp-cavium-dpdk_configure_args_thunder = \
+ --with-dpdk --without-ipsec --without-vcgn --without-ipv6sr
+
+cavium-dpdk_configure_args_thunder = --with-headroom=256
+
+vlib-cavium-dpdk_configure_args_thunder = --with-pre-data=128
+
+# native tool chain additions for this platform
+thunder_native_tools = vppapigen
+
+thunder_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG
+thunder_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG
+
+thunder_TAG_CFLAGS = -g -O2
+thunder_TAG_LDFLAGS = -g -O2
+
+