tools: ci : add cibuild rule for arm64

Summary:

1. add aarch64-none-elf toolchain for cibuild rule

Signed-off-by: qinwei <qinwei1@xiaomi.com>
This commit is contained in:
qinwei 2022-06-22 10:24:54 +08:00 committed by Xiang Xiao
parent 19fd0a5587
commit 881c896c06
2 changed files with 42 additions and 2 deletions

View File

@ -37,7 +37,7 @@ EXTRA_PATH=
case ${os} in
Darwin)
install="python-tools u-boot-tools elf-toolchain gen-romfs kconfig-frontends rust arm-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain avr-gcc-toolchain c-cache binutils"
install="python-tools u-boot-tools elf-toolchain gen-romfs kconfig-frontends rust arm-gcc-toolchain arm64-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain avr-gcc-toolchain c-cache binutils"
mkdir -p "${prebuilt}"/homebrew
export HOMEBREW_CACHE=${prebuilt}/homebrew
# https://github.com/actions/virtual-environments/issues/2322#issuecomment-749211076
@ -46,7 +46,7 @@ case ${os} in
brew update --quiet
;;
Linux)
install="python-tools gen-romfs gperf kconfig-frontends rust arm-gcc-toolchain mips-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain rx-gcc-toolchain sparc-gcc-toolchain c-cache"
install="python-tools gen-romfs gperf kconfig-frontends rust arm-gcc-toolchain arm64-gcc-toolchain mips-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain rx-gcc-toolchain sparc-gcc-toolchain c-cache"
;;
esac
@ -172,6 +172,29 @@ function arm-gcc-toolchain {
arm-none-eabi-gcc --version
}
function arm64-gcc-toolchain {
add_path "${prebuilt}"/gcc-aarch64-none-elf/bin
if [ ! -f "${prebuilt}/gcc-aarch64-none-elf/bin/aarch64-none-elf-gcc" ]; then
local flavor
case ${os} in
Darwin)
flavor=darwin-x86_64
;;
Linux)
flavor=x86_64
;;
esac
cd "${prebuilt}"
wget --quiet https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf.tar.xz
xz -d gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf.tar.xz
tar xf gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf.tar
mv gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf gcc-aarch64-none-elf
rm gcc-arm-11.2-2022.02-${flavor}-aarch64-none-elf.tar
fi
aarch64-none-elf-gcc --version
}
function mips-gcc-toolchain {
add_path "${prebuilt}"/pinguino-compilers/linux64/p32/bin
@ -336,6 +359,8 @@ function c-cache {
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/g++
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/arm-none-eabi-gcc
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/arm-none-eabi-g++
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/aarch64-none-elf-gcc
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/aarch64-none-elf-g++
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/p32-gcc
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/riscv64-unknown-elf-gcc
ln -sf "$(which ccache)" "${prebuilt}"/ccache/bin/riscv64-unknown-elf-g++

View File

@ -87,6 +87,15 @@ RUN mkdir gcc-arm-none-eabi && \
curl -s -L "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2" \
| tar -C gcc-arm-none-eabi --strip-components 1 -xj
###############################################################################
# Build image for tool required by ARM64 builds
###############################################################################
FROM nuttx-toolchain-base AS nuttx-toolchain-arm64
# Download the latest ARM64 GCC toolchain prebuilt by ARM
RUN mkdir gcc-aarch64-none-elf && \
curl -s -L "https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xz" \
| tar -C gcc-aarch64-none-elf --strip-components 1 -xJ
###############################################################################
# Build image for tool required by Pinguino builds
###############################################################################
@ -273,6 +282,10 @@ ENV PATH="/tools/rust/cargo/bin:$PATH"
COPY --from=nuttx-toolchain-arm /tools/gcc-arm-none-eabi/ gcc-arm-none-eabi/
ENV PATH="/tools/gcc-arm-none-eabi/bin:$PATH"
# ARM64 toolchain
COPY --from=nuttx-toolchain-arm64 /tools/gcc-aarch64-none-elf/ gcc-aarch64-none-elf/
ENV PATH="/tools/gcc-aarch64-none-elf/bin:$PATH"
# MIPS toolchain
COPY --from=nuttx-toolchain-pinguino /tools/pinguino-compilers/p32/ pinguino-compilers/p32/
ENV PATH="/tools/pinguino-compilers/p32/bin:$PATH"
@ -318,6 +331,8 @@ RUN mkdir -p /tools/ccache/bin && \
ln -sf `which ccache` /tools/ccache/bin/g++ && \
ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-gcc && \
ln -sf `which ccache` /tools/ccache/bin/arm-none-eabi-g++ && \
ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-gcc && \
ln -sf `which ccache` /tools/ccache/bin/aarch64-none-elf-g++ && \
ln -sf `which ccache` /tools/ccache/bin/p32-gcc && \
ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-gcc && \
ln -sf `which ccache` /tools/ccache/bin/riscv64-unknown-elf-g++ && \