Skip to content

Commit

Permalink
CI: Add Linux aarch64 support
Browse files Browse the repository at this point in the history
Signed-off-by: sekaiacg <[email protected]>
  • Loading branch information
sekaiacg committed Jan 26, 2025
1 parent f6296ee commit 25e34ba
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/build-erofs-utils.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ jobs:
CCACHE_NOHASHDIR: "true"
CCACHE_MAXSIZE: "50M"
CCACHE_HARDLINK: "true"
AARCH64_TOOLS_PATH: "/opt/aarch64"
LOONGARCH64_TOOLS_PATH: "/opt/loongarch64"

steps:
Expand Down Expand Up @@ -77,6 +78,24 @@ jobs:
tar -xf clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz -C /opt
echo "CUSTOM_CLANG_PATH=/opt/clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04" >> $GITHUB_ENV
- name: Set up cache aarch64 tools
id: cache-aarch64-tools
uses: actions/cache@v3
with:
path: ${{ env.AARCH64_TOOLS_PATH }}
key: ${{ runner.os }}-aarch64_tools_230927

- name: Download and install aarch64 tools
if: steps.cache-aarch64-tools.outputs.cache-hit != 'true'
run: |
wget https://github.com/sekaiacg/erofs-utils/releases/download/v1.7-230924/gcc-linaro-13.0.0-2022.11-x86_64_aarch64-linux-gnu.tar.xz
mkdir ${AARCH64_TOOLS_PATH}
tar -xf gcc-linaro-13.0.0-2022.11-x86_64_aarch64-linux-gnu.tar.xz -C ${AARCH64_TOOLS_PATH}
- name: Set up aarch64 tools
run: |
echo "AARCH64_GCC_PATH=${AARCH64_TOOLS_PATH}/gcc-linaro-13.0.0-2022.11-x86_64_aarch64-linux-gnu" >> $GITHUB_ENV
- name: Set up cache loongarch64 tools
id: cache-loongarch64-tools
uses: actions/cache@v3
Expand Down Expand Up @@ -132,6 +151,9 @@ jobs:
echo "wslX86x64Dir=target/WSL_x86_64" >> $GITHUB_OUTPUT
wslX86x64Name=`ls -d target/WSL_x86_64/erofs-utils-v*/ | awk -F '(/|.zip)' '{print $3}'` && echo "wslX86x64Name=$wslX86x64Name" >> $GITHUB_OUTPUT
echo "linuxAarch64Dir=target/Linux_aarch64" >> $GITHUB_OUTPUT
linuxAarch64Name=`ls -d target/Linux_aarch64/erofs-utils-v*/ | awk -F '(/|.zip)' '{print $3}'` && echo "linuxAarch64Name=$linuxAarch64Name" >> $GITHUB_OUTPUT
echo "linuxLoongarch64Dir=target/Linux_loongarch64" >> $GITHUB_OUTPUT
linuxLoongarch64Name=`ls -d target/Linux_loongarch64/erofs-utils-v*/ | awk -F '(/|.zip)' '{print $3}'` && echo "linuxLoongarch64Name=$linuxLoongarch64Name" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -177,6 +199,13 @@ jobs:
name: ${{ steps.Artifact.outputs.wslX86x64Name }}
path: '${{ steps.Artifact.outputs.wslX86x64Dir }}/${{ steps.Artifact.outputs.wslX86x64Name }}/*'

- name: Upload erofs-utils Linux_aarch64
if: success()
uses: actions/upload-artifact@v3
with:
name: ${{ steps.Artifact.outputs.linuxAarch64Name }}
path: '${{ steps.Artifact.outputs.linuxAarch64Dir }}/${{ steps.Artifact.outputs.linuxAarch64Name }}/*'

- name: Upload erofs-utils Linux_loongarch64
if: success()
uses: actions/upload-artifact@v3
Expand Down
18 changes: 18 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,23 @@ cmake_build()
-DCMAKE_CXX_FLAGS="" \
-DENABLE_FULL_LTO="ON" \
-DMAX_BLOCK_SIZE="4096"
elif [[ ${ABI} == "aarch64" ]]; then
cmake -S ${BUILD_DIR} -B ${OUT} ${BUILD_METHOD} \
-DCMAKE_SYSTEM_NAME="Linux" \
-DCMAKE_SYSTEM_PROCESSOR="aarch64" \
-DCMAKE_BUILD_TYPE="Release" \
-DRUN_ON_WSL="${WSL}" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_C_COMPILER="${CUSTOM_CLANG_PATH}/bin/clang" \
-DCMAKE_CXX_COMPILER="${CUSTOM_CLANG_PATH}/bin/clang++" \
-DCMAKE_SYSROOT="${AARCH64_GCC_PATH}/aarch64-linux-gnu/libc" \
-DCMAKE_C_COMPILER_TARGET="aarch64-linux-gnu" \
-DCMAKE_CXX_COMPILER_TARGET="aarch64-linux-gnu" \
-DCMAKE_C_FLAGS="--gcc-toolchain=${AARCH64_GCC_PATH}" \
-DCMAKE_CXX_FLAGS="--gcc-toolchain=${AARCH64_GCC_PATH}" \
-DENABLE_FULL_LTO="ON" \
-DMAX_BLOCK_SIZE="4096"
elif [[ ${ABI} == "loongarch64" ]]; then
cmake -S ${BUILD_DIR} -B ${OUT} ${BUILD_METHOD} \
-DCMAKE_SYSTEM_NAME="Linux" \
Expand Down Expand Up @@ -117,6 +134,7 @@ build "Android" "x86_64" "android-31"
build "Android" "x86" "android-31"
build "Linux" "x86_64"
build "Linux" "x86_64" "WSL"
build "Linux" "aarch64"
build "Linux" "loongarch64"

exit 0

0 comments on commit 25e34ba

Please sign in to comment.