diff --git a/tools/ci/cibuild.sh b/tools/ci/cibuild.sh index 5058dfbf8b8..829cd26412b 100755 --- a/tools/ci/cibuild.sh +++ b/tools/ci/cibuild.sh @@ -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++ diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile index 7e268698753..8d89c385c21 100644 --- a/tools/ci/docker/linux/Dockerfile +++ b/tools/ci/docker/linux/Dockerfile @@ -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++ && \