mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
Add ccache support for faster incremental builds (#301)
## Description of change Adds `ccache` support for local compiling and Github Actions environments. This significantly speeds up incremental builds, but cold starts will take a little longer to compile. The build script now has an `-i` flag to ignore the build cache if needed. You can also manually delete the `.ccache` folder to force a fresh build too. For the GA workflow, it uses the [`ccache-action`](https://github.com/hendrikmuhs/ccache-action) action to manage and store the cached build objects. This cache should be accessible to all branches. I also removed the `--no-cache` flag when building the `spicetools/spice` image since Docker will automatically invalidate `COPY` layers if it detects the copied files have changed. ### Compile times Compiled with a 7800X3D, 32GB 6000MT/s RAM. | `main` | `ccache` (fresh) | `ccache` (cached) | `ccache` (ignore cache) | |--------|--------|--------|--------| | 2m46.047s | 3m8.886s | 0m32.638s | 2m45.148s | ## Testing Tested incremental builds by using another branch that's rebased on top of this.
This commit is contained in:
@@ -19,6 +19,25 @@ function trap_error_exit {
|
||||
trap trap_error_dbg DEBUG
|
||||
trap trap_error_exit EXIT
|
||||
|
||||
IGNORE_CACHE=0
|
||||
|
||||
# Parse options
|
||||
while getopts "ih" opt; do
|
||||
case $opt in
|
||||
i) IGNORE_CACHE=1 ;;
|
||||
h)
|
||||
echo "Usage: $0 [-i]"
|
||||
echo " -i: Ignore build cache"
|
||||
echo " -h: Show this help"
|
||||
exit 0
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# settings
|
||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2> /dev/null || echo "none")
|
||||
GIT_HEAD=$(git rev-parse HEAD || echo "none")
|
||||
@@ -74,6 +93,15 @@ echo "Build Type: $BUILD_TYPE"
|
||||
echo "Cores: $CORES"
|
||||
echo ""
|
||||
|
||||
if ((IGNORE_CACHE > 0))
|
||||
then
|
||||
echo "Ignoring build cache..."
|
||||
else
|
||||
export CCACHE_DIR="$(pwd)/.ccache"
|
||||
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||
export CMAKE_C_COMPILER_LAUNCHER=ccache
|
||||
fi
|
||||
|
||||
time (
|
||||
# 32 bit
|
||||
echo "Building 32bit targets..."
|
||||
|
||||
Reference in New Issue
Block a user