aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordundargoc <33953936+dundargoc@users.noreply.github.com>2023-01-28 00:42:13 +0100
committerGitHub <noreply@github.com>2023-01-28 00:42:13 +0100
commit881d4adb5942301a26ccd45315e146eccb114519 (patch)
treec9326939507b7de0b8a910bc8c1b928d6e492a49
parent2cde6a18b5dea27fdff673baa876c505696d297f (diff)
downloadrneovim-881d4adb5942301a26ccd45315e146eccb114519.tar.gz
rneovim-881d4adb5942301a26ccd45315e146eccb114519.tar.bz2
rneovim-881d4adb5942301a26ccd45315e146eccb114519.zip
build: enable ccache by default if available (#22020)
Initial benchmarks show that this gives a nice 50% compile time reduction for neovim. This shouldn't affect users or CI, but it's a nice speedup for local development. The C_COMPILER_LAUNCHER target property is only supported by Makefiles and Ninja generators only, so this won't give a speedup when using the Xcode and Visual Studio generators even if ccache is available.
-rw-r--r--CONTRIBUTING.md5
-rwxr-xr-xsrc/nvim/CMakeLists.txt7
2 files changed, 12 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ce0f2ace05..f1c7ca1cb3 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -42,6 +42,11 @@ Developer guidelines
make distclean
make # Nvim build system uses ninja automatically, if available.
```
+- Install `ccache` for faster rebuilds of Nvim. Nvim will use it automatically
+ if it's found. To disable caching use:
+ ```
+ CCACHE_DISABLE=true make
+ ```
Pull requests (PRs)
---------------------
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index 77ed0490d8..d1bf08f3fb 100755
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -688,6 +688,13 @@ set_target_properties(nvim
EXPORT_COMPILE_COMMANDS ON
ENABLE_EXPORTS TRUE)
+find_program(CCACHE_PRG ccache)
+if(CCACHE_PRG)
+ set_target_properties(nvim
+ PROPERTIES
+ C_COMPILER_LAUNCHER "${CMAKE_COMMAND};-E;env;CCACHE_SLOPPINESS=pch_defines,time_macros;${CCACHE_PRG}")
+endif()
+
if(${CMAKE_VERSION} VERSION_LESS 3.20)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()