diff options
author | Dave Barach <dave@barachs.net> | 2016-01-22 08:23:09 -0500 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2016-01-22 08:23:27 -0500 |
commit | 61efa140b1f44e0c568697fbc31cf3f430131ab2 (patch) | |
tree | 780880f2fce0882840b204eb26bd7465ed7c7e09 /build-data | |
parent | bfdedbd5a3ba7e6fdc036d212253aa55c9062211 (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.mk | 55 | ||||
-rw-r--r-- | build-data/packages/sample-plugin.mk | 2 | ||||
-rw-r--r-- | build-data/packages/vlib-api-cavium-dpdk.mk | 6 | ||||
-rw-r--r-- | build-data/packages/vlib-api.mk | 2 | ||||
-rw-r--r-- | build-data/packages/vlib-cavium-dpdk.mk | 7 | ||||
-rw-r--r-- | build-data/packages/vnet-cavium-dpdk.mk | 29 | ||||
-rw-r--r-- | build-data/packages/vpp-api-test-cavium-dpdk.mk | 32 | ||||
-rw-r--r-- | build-data/packages/vpp-api-test-no-dpdk.mk | 3 | ||||
-rw-r--r-- | build-data/packages/vpp-api-test.mk | 27 | ||||
-rw-r--r-- | build-data/packages/vpp-cavium-dpdk.mk | 30 | ||||
-rw-r--r-- | build-data/packages/vpp-no-dpdk.mk | 25 | ||||
-rw-r--r-- | build-data/packages/vpp.mk | 3 | ||||
-rw-r--r-- | build-data/platforms/thunder.mk | 36 |
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 + + |