From 61efa140b1f44e0c568697fbc31cf3f430131ab2 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Fri, 22 Jan 2016 08:23:09 -0500 Subject: aarch64 CPU arch / ThunderX platform initial support Change-Id: Ia2edd3cee2c25c26c7c47a9023744b97226434c7 Signed-off-by: Dave Barach --- build-data/packages/cavium-dpdk.mk | 55 +++++++++++++++++++++++++ build-data/packages/sample-plugin.mk | 2 +- build-data/packages/vlib-api-cavium-dpdk.mk | 6 +++ build-data/packages/vlib-api.mk | 2 - build-data/packages/vlib-cavium-dpdk.mk | 7 ++++ build-data/packages/vnet-cavium-dpdk.mk | 29 +++++++++++++ build-data/packages/vpp-api-test-cavium-dpdk.mk | 32 ++++++++++++++ build-data/packages/vpp-api-test-no-dpdk.mk | 3 +- build-data/packages/vpp-api-test.mk | 27 ++++++------ build-data/packages/vpp-cavium-dpdk.mk | 30 ++++++++++++++ build-data/packages/vpp-no-dpdk.mk | 25 ++++++----- build-data/packages/vpp.mk | 3 +- 12 files changed, 187 insertions(+), 34 deletions(-) create mode 100644 build-data/packages/cavium-dpdk.mk create mode 100644 build-data/packages/vlib-api-cavium-dpdk.mk create mode 100644 build-data/packages/vlib-cavium-dpdk.mk create mode 100644 build-data/packages/vnet-cavium-dpdk.mk create mode 100644 build-data/packages/vpp-api-test-cavium-dpdk.mk create mode 100644 build-data/packages/vpp-cavium-dpdk.mk (limited to 'build-data/packages') diff --git a/build-data/packages/cavium-dpdk.mk b/build-data/packages/cavium-dpdk.mk new file mode 100644 index 00000000..ce8ee228 --- /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 4532817c..e9f2789a 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 00000000..7a4fe2cd --- /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 f4bd67d9..29b0d17d 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 00000000..0f2f132d --- /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 00000000..4c35b04d --- /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 00000000..e352317f --- /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 b511f2ca..7aab11c3 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 eb7f466a..6ad70bc5 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 00000000..704e3a95 --- /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 f509bdf3..81f3f75a 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 ff2c5519..02aca4e6 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)) -- cgit 1.2.3-korg