From 5041bab9f8731b72e3e65789a0d6165c59d64a2f Mon Sep 17 00:00:00 2001 From: momo5502 Date: Thu, 29 May 2025 09:44:04 +0200 Subject: [PATCH] Setup sccache --- .github/workflows/build.yml | 16 ++++++++++++++++ CMakeLists.txt | 3 +++ cmake/sccache.cmake | 15 +++++++++++++++ .../icicle-emulator/icicle-bridge/CMakeLists.txt | 7 ++++++- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 cmake/sccache.cmake diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 27fe8104..61a10823 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -86,6 +86,14 @@ jobs: - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.13.0 + - name: Run sccache-cache + uses: mozilla-actions/sccache-action@v0.0.8 + + - name: Setup Environment Variables + shell: bash + run: | + echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV + - name: CMake Build run: cmake --preset=release && cmake --build --preset=release -t dump-apiset @@ -255,7 +263,15 @@ jobs: ndk-version: r26d add-to-path: false + - name: Run sccache-cache + uses: mozilla-actions/sccache-action@v0.0.8 + - name: Setup Environment Variables + shell: bash + run: | + echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV + + - name: Setup Android Environment Variables shell: bash if: ${{ startsWith(matrix.platform, 'Android') }} run: | diff --git a/CMakeLists.txt b/CMakeLists.txt index ec3e355d..3ddb0b99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,9 @@ endif() # It doesn't support it, even if it thinks it does... set(ENV{ARCHFLAGS} "nope") +########################################## + +include(cmake/sccache.cmake) ########################################## diff --git a/cmake/sccache.cmake b/cmake/sccache.cmake new file mode 100644 index 00000000..4c442585 --- /dev/null +++ b/cmake/sccache.cmake @@ -0,0 +1,15 @@ +include_guard() + +if(CMAKE_GENERATOR STREQUAL "Ninja") + find_program(SCCACHE sccache REQUIRED) + + if (SCCACHE) + set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE}) + set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE}) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded) + + if(POLICY CMP0141) + cmake_policy(SET CMP0141 NEW) + endif() + endif() +endif() diff --git a/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt b/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt index d64c0d21..8399c7bc 100644 --- a/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt +++ b/src/backends/icicle-emulator/icicle-bridge/CMakeLists.txt @@ -35,13 +35,18 @@ endif() set(ICICLE_RUST_LIB ${ICICLE_ARTIFACT_DIR}/${ICICLE_RUST_LIBNAME}) +set(SCCACHE_ENV "MOMO_DUMMY_ENV=1") +if (SCCACHE) + set(SCCACHE_ENV "RUSTC_WRAPPER=${SCCACHE}") +endif() + ExternalProject_Add( icicle-rust-project PREFIX ${CMAKE_CURRENT_BINARY_DIR} SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} BINARY_DIR ${CMAKE_CURRENT_LIST_DIR} CONFIGURE_COMMAND "" - BUILD_COMMAND ${CMAKE_COMMAND} -E env "CARGO_TARGET_DIR=${ICICLE_BUILD_DIR}" cargo build ${CARGO_OPTIONS} --lib --profile $,dev,release> + BUILD_COMMAND ${CMAKE_COMMAND} -E env "CARGO_TARGET_DIR=${ICICLE_BUILD_DIR}" "${SCCACHE_ENV}" -- cargo build ${CARGO_OPTIONS} --lib --profile $,dev,release> INSTALL_COMMAND "" USES_TERMINAL_CONFIGURE 1 USES_TERMINAL_BUILD 1