From cb9f343549d00e443d072251ec96ac868350b044 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 23 Aug 2024 00:22:48 +0300 Subject: [PATCH] github: Add LLVM toolchain to CI. --- .github/workflows/firmware.yml | 12 +++++++++--- tools/ci.sh | 25 +++++++++++++++---------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/.github/workflows/firmware.yml b/.github/workflows/firmware.yml index 8e4b8b30d..dfc166943 100644 --- a/.github/workflows/firmware.yml +++ b/.github/workflows/firmware.yml @@ -43,8 +43,10 @@ jobs: uses: actions/cache@v4.0.2 id: cache with: - path: ~/cache/gcc - key: 'arm-gnu-toolchain-13.2.rel1' + path: | + ~/cache/gcc + ~/cache/llvm + key: 'toolchain' - name: '🐍 Install Python' uses: actions/setup-python@v5 @@ -57,10 +59,14 @@ jobs: pip install ethos-u-vela==3.12.0 vela --version - - name: '🛠 Install toolchain ' + - name: '🛠 Install GCC toolchain ' if: steps.cache.outputs.cache-hit != 'true' run: source tools/ci.sh && ci_install_arm_gcc + - name: '🛠 Install LLVM toolchain ' + if: steps.cache.outputs.cache-hit != 'true' + run: source tools/ci.sh && ci_install_arm_llvm + - name: '🏗 Build firmware' run: source tools/ci.sh && ci_build_target ${{ matrix.target }} diff --git a/tools/ci.sh b/tools/ci.sh index 7ce8f3250..77ba171da 100755 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -2,19 +2,24 @@ ######################################################################################## # Install ARM GCC. -TOOLCHAIN_PATH=${HOME}/cache/gcc -TOOLCHAIN_URL="https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz" +GCC_TOOLCHAIN_PATH=${HOME}/cache/gcc +GCC_TOOLCHAIN_URL="https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz" -ci_install_arm_gcc_apt() { - sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi +LLVM_TOOLCHAIN_PATH=${HOME}/cache/llvm +LLVM_TOOLCHAIN_URL="https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-18.1.3/LLVM-ET-Arm-18.1.3-Linux-x86_64.tar.xz" + +ci_install_arm_gcc() { + mkdir -p ${GCC_TOOLCHAIN_PATH} + wget --no-check-certificate -O - ${GCC_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${GCC_TOOLCHAIN_PATH} + export PATH=${GCC_TOOLCHAIN_PATH}/bin:${PATH} arm-none-eabi-gcc --version } -ci_install_arm_gcc() { - mkdir -p ${TOOLCHAIN_PATH} - wget --no-check-certificate -O - ${TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${TOOLCHAIN_PATH} - export PATH=${TOOLCHAIN_PATH}/bin:${PATH} - arm-none-eabi-gcc --version +ci_install_arm_llvm() { + mkdir -p ${LLVM_TOOLCHAIN_PATH} + wget --no-check-certificate -O - ${LLVM_TOOLCHAIN_URL} | tar --strip-components=1 -Jx -C ${LLVM_TOOLCHAIN_PATH} + export PATH=${LLVM_TOOLCHAIN_PATH}/bin:${PATH} + clang --version } ######################################################################################## @@ -30,7 +35,7 @@ ci_update_submodules() { # Build Targets. ci_build_target() { - export PATH=${TOOLCHAIN_PATH}/bin:${PATH} + export PATH=${GCC_TOOLCHAIN_PATH}/bin:${PATH} make -j$(nproc) -C src/micropython/mpy-cross make -j$(nproc) TARGET=${1} -C src mv src/build/bin ${1}