BuildCache
BuildCache is an advanced compiler accelerator that caches and reuses build results to avoid unnecessary re-compilations, and thereby speeding up the build process.
It is similar in spirit to ccache, sccache and clcache.
Download
Pre-built binaries of BuildCache can be downloaded here.
Features
- Works on different operating systems:
- Linux
- macOS
- Windows
- Though untested, it probably works on most BSD:s
- A modular compiler support system:
- Built-in support for popular compilers.
- Extensible via custom Lua scripts.
- In addition to caching compilation results, BuildCache can be used for caching almost any reproducible program artifacts (e.g. test results, rendered images, etc).
- A fast local file system cache.
- Suppports both preprocessor-based and fast preprocessorless cache lookup.
- Can optionally use a remote, shared server as a second level cache.
- Compression with LZ4 or optionally ZSTD (with negligable overhead).
Supported compilers and languages
Currently the following compilers and languages are supported:
Compiler | Languages | Support |
---|---|---|
GCC | C, C++ | Built-in |
Clang | C, C++ | Built-in |
Microsoft Visual C++ | C, C++ | Built-in |
clang-cl | C, C++ | Built-in |
QNX SDP (qcc) | C, C++ | Built-in |
Green Hills Optimizing Compilers | C, C++ | Built-in |
TI TMS320C6000 Optimizing Compiler | C, C++ | Built-in |
TI ARM Optimizing C/C++ Compiler | C, C++ | Built-in |
TI ARP32 Optimizing C/C++ Compiler | C, C++ | Built-in |
scan-build static analyzer | C, C++ | Built-in |
Clang-Tidy | C, C++ | Lua example |
New backends are relatively easy to add, both as built-in wrappers in C++ and as Lua wrappers.
Status
BuildCache has been used daily in production environments for years with near zero issues (any problem that has emerged has of course been fixed), which gives it a good track record.
With that said, BuildCache is still considered to be under development and things like configuration parameters and cache formats may change between 0.x versions.
Once BuildCache has reached version 1.0, all releases will be fully backwards compatible within a major version (e.g. 1.x).
Documentation
- Building BuildCache
- Using BuildCache
- Configuration
- Using custom Lua plugins
- Contributing to BuildCache
- Benchmarks
The BuildCache internals are documented using Doxygen, and the latest generated documentation can be found here:
Feel free to ask questions and discuss ideas at: