Improve build cache (#14014)
* Improve build cache: use it in deps, add sccache * Add a way to to set `ccache` or `sccache` using CMAKE_CCACHE
This commit is contained in:
committed by
GitHub
parent
2abfa512ef
commit
3e2373c86e
+17
-6
@@ -504,13 +504,24 @@ if [[ -n "${USE_LLD}" ]] ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Auto-detect ccache for faster rebuilds
|
|
||||||
export CMAKE_CCACHE_ARGS=()
|
export CMAKE_CCACHE_ARGS=()
|
||||||
if command -v ccache >/dev/null 2>&1 ; then
|
CMAKE_CCACHE=${CMAKE_CCACHE:-}
|
||||||
echo "ccache found at $(command -v ccache), enabling compiler caching..."
|
if [ -n "$CMAKE_CCACHE" ]; then
|
||||||
export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache)
|
echo "Checking ${CMAKE_CCACHE} environment variable for compiler cache program..."
|
||||||
|
CMAKE_CCACHE=$(command -v "${CMAKE_CCACHE}") || {
|
||||||
|
echo "CMAKE_CCACHE environment variable is set to '${CMAKE_CCACHE}' but it was not found in PATH."
|
||||||
|
CMAKE_CCACHE=""
|
||||||
|
}
|
||||||
|
elif command -v sccache >/dev/null 2>&1 ; then
|
||||||
|
CMAKE_CCACHE=$(command -v sccache)
|
||||||
|
elif command -v ccache >/dev/null 2>&1 ; then
|
||||||
|
CMAKE_CCACHE=$(command -v ccache)
|
||||||
|
fi
|
||||||
|
if [ -n "${CMAKE_CCACHE}" ] ; then
|
||||||
|
echo "${CMAKE_CCACHE} found, enabling compiler caching..."
|
||||||
|
export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER="${CMAKE_CCACHE}" -DCMAKE_CXX_COMPILER_LAUNCHER="${CMAKE_CCACHE}")
|
||||||
else
|
else
|
||||||
echo "Note: ccache not found. Install ccache for faster rebuilds."
|
echo "Note: ccache or sccache are not found. Install either of them for faster rebuilds."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "${BUILD_DEPS}" ]] ; then
|
if [[ -n "${BUILD_DEPS}" ]] ; then
|
||||||
@@ -525,7 +536,7 @@ if [[ -n "${BUILD_DEPS}" ]] ; then
|
|||||||
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
|
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}"
|
print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" "${CMAKE_CCACHE_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}"
|
||||||
print_and_run cmake --build deps/$BUILD_DIR -j1
|
print_and_run cmake --build deps/$BUILD_DIR -j1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
@@ -196,6 +196,8 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
|||||||
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
||||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
||||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER}
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER}
|
||||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
||||||
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
|
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
|
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
|
||||||
@@ -241,6 +243,8 @@ else()
|
|||||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
||||||
-DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH}
|
-DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH}
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER}
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER}
|
||||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
${_cmake_osx_arch}
|
${_cmake_osx_arch}
|
||||||
"${_configs_line}"
|
"${_configs_line}"
|
||||||
|
|||||||
Reference in New Issue
Block a user