toolchain.mk: Add support for Rust toolchain for aarch{32/64}
Rather than invoking custom setup.sh script provided by OP-TEE Rust SDK,
add Rust toolchain installation support as part of toolchain Makefile.
This allows to separate OP-TEE specific Rust toolchain installation
from default Rust toolchain installation. Now all OP-TEE specific Rust
toolchains will be installed under: $(ROOT)/toolchains/rust/.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
Acked-by: Yuan Zhuang <yuanz@apache.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
diff --git a/toolchain.mk b/toolchain.mk
index d8be58f..8cfc982 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -56,8 +56,10 @@
AARCH64_GCC_VERSION ?= arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu
SRC_AARCH64_GCC ?= https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/$(AARCH64_GCC_VERSION).tar.xz
+RUST_TOOLCHAIN_PATH ?= $(TOOLCHAIN_ROOT)/rust
+
.PHONY: toolchains
-toolchains: aarch32-toolchain aarch64-toolchain
+toolchains: aarch32-toolchain aarch64-toolchain rust-toolchain
.PHONY: aarch32-toolchain
aarch32-toolchain:
@@ -67,6 +69,24 @@
aarch64-toolchain:
$(call dltc,$(AARCH64_PATH),$(SRC_AARCH64_GCC),$(AARCH64_GCC_VERSION))
+# Download the Rust toolchain
+define dl-rust-toolchain
+ @if [ ! -d "$(1)" ]; then \
+ mkdir -p $(1) && \
+ export RUSTUP_HOME=$(1)/.rustup && \
+ export CARGO_HOME=$(1)/.cargo && \
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path && \
+ source "$(1)/.cargo/env" && \
+ rustup target install aarch64-unknown-linux-gnu && \
+ rustup target install arm-unknown-linux-gnueabihf && \
+ rustup default nightly-2023-12-18; \
+ fi
+endef
+
+.PHONY: rust-toolchain
+rust-toolchain:
+ $(call dl-rust-toolchain,$(RUST_TOOLCHAIN_PATH))
+
CLANG_VER ?= 12.0.0
CLANG_PATH ?= $(ROOT)/clang-$(CLANG_VER)