]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
ci: Add glibc build and release on linux-riscv64 (#1718)
authorLudovic Henry <ludovic@rivosinc.com>
Sun, 12 Apr 2026 08:15:27 +0000 (10:15 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 12 Apr 2026 08:16:05 +0000 (10:16 +0200)
(cherry picked from commit 564105b39dc140171e962c257f8eaca83725ed9f)

.github/workflows/build.yaml
ci/generate-release-notes
ci/prepare-release
toolchains/riscv64-linux-gnu.cmake [new file with mode: 0644]

index 0cb053b94b8283eb7d480fd6864a57864de8b8bd..536f0201f4e4fa4dfa074b116324daf18faf767f 100644 (file)
@@ -318,6 +318,33 @@ jobs:
           path: install/ccache
           retention-days: 3
 
+  build_linux_riscv64_binary_glibc:
+    timeout-minutes: 30
+    name: Linux riscv64 binary (glibc)
+    runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+    steps:
+      - name: Prepare environment
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y g++-riscv64-linux-gnu libc6-dev-arm64-cross
+      - name: Get source
+        uses: actions/checkout@v4
+      - name: Build binary
+        env:
+          CMAKE_GENERATOR: Ninja
+          CMAKE_PARAMS: |
+            -D CMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.cmake
+            -D CMAKE_EXE_LINKER_FLAGS_INIT=-static-libstdc++
+        run: ci/build-binary
+      - name: Upload binary
+        uses: actions/upload-artifact@v4
+        with:
+          name: linux-riscv64-glibc-binary
+          path: install/ccache
+          retention-days: 3
+
   build_linux_musl_static_binary:
     timeout-minutes: 30
     name: Linux ${{ matrix.arch }} binary (musl static)
@@ -644,6 +671,7 @@ jobs:
       - build_linux_aarch64_binary_glibc
       - build_linux_musl_static_binary
       - build_linux_x86_64_binary_glibc
+      - build_linux_riscv64_binary_glibc
       - build_windows_binary
     runs-on: ubuntu-24.04
     steps:
index f0b52228ba088e95b88f5a48542d2175d9c5620b..9fd9dc94cac76d2c7835496c18feaf5973a354e6 100755 (executable)
@@ -9,7 +9,7 @@ url_prefix="https://github.com/ccache/ccache/releases/download/v${version}"
 source_extensions=(tar.gz tar.xz)
 linux_bin_extensions=(tar.gz tar.xz)
 
-linux_archs=(aarch64 x86_64)
+linux_archs=(aarch64 riscv64 x86_64)
 # windows_archs=(aarch64 i686 x86_64)
 windows_archs=(aarch64 x86_64)
 
@@ -41,7 +41,12 @@ for arch in "${linux_archs[@]}"; do
         add "Linux ${arch} binary release glibc ${ext}" "ccache-${version}-linux-${arch}-glibc.${ext}"
     done
     for ext in "${linux_bin_extensions[@]}"; do
-        add "Linux ${arch} binary release musl static ${ext}" "ccache-${version}-linux-${arch}-musl-static.${ext}"
+        if [ "${arch}" == "riscv64" ]; then
+            # Not available, lacking native Github-hosted runners
+            true
+        else
+            add "Linux ${arch} binary release musl static ${ext}" "ccache-${version}-linux-${arch}-musl-static.${ext}"
+        fi
     done
 done
 for arch in "${windows_archs[@]}"; do
index 76a3c0818c1b5489c7dfc924391ee71c0c973566..d5e98e0886885ecbcd7f61b6aabf6c614b5e6f17 100755 (executable)
@@ -76,6 +76,7 @@ prepare_source_release
 prepare_posix_binary_release darwin gz
 prepare_posix_binary_release linux-aarch64-glibc gz xz
 prepare_posix_binary_release linux-aarch64-musl-static gz xz
+prepare_posix_binary_release linux-riscv64-glibc gz xz
 prepare_posix_binary_release linux-x86_64-glibc gz xz
 prepare_posix_binary_release linux-x86_64-musl-static gz xz
 
diff --git a/toolchains/riscv64-linux-gnu.cmake b/toolchains/riscv64-linux-gnu.cmake
new file mode 100644 (file)
index 0000000..d97a8d3
--- /dev/null
@@ -0,0 +1,8 @@
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_PROCESSOR riscv64)
+set(TOOLCHAIN_PREFIX riscv64-linux-gnu)
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)