• This repository has been archived on 07/Sep/2023
  • Stars
    star
    208
  • Rank 189,015 (Top 4 %)
  • Language
    C++
  • License
    zlib License
  • Created over 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A build cache

BuildCache Build and Test

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

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:

More Repositories

1

soundbox

SoundBox is an HTML5 synth music tracker/editor, suitable for creating music for small JavaScript demos (4K / 8K).
JavaScript
427
star
2

atomic

Tiny portable C++ library for atomic operations
C++
54
star
3

liblzg

liblzg is a minimal implementation of an LZ77 class compression library.
C
52
star
4

git-tools

Various tools for Git
Python
45
star
5

osbench

Benchmarking tools for measuring operating system performance
C
34
star
6

vasm-mirror

A git mirror of vasm - A portable and retargetable assembler
C
34
star
7

himg

Hadamard based lossy image compression
C++
20
star
8

resseract

A fork of the Tesseract FPS game
C++
14
star
9

libsac

A reference implementation of the SAC (Simple Audio Compression) codec.
C++
14
star
10

microS3

A tiny S3 client library suitable for embedded devices (a.k.a ΞΌS3)
C++
14
star
11

c-comments-to-cpp

A tool to convert C style comments to C++ style comments
Python
12
star
12

cmake-minver

A script for finding the minum required CMake version for a given functionality.
CMake
12
star
13

leanfloat

A simplified version of the IEEE 754 binary floating-point standard
11
star
14

hzr

A Huffman+RLE compression library
C
10
star
15

js-sonant

js-sonant is a JavaScript port of the sound synth Sonant, originally implemented in C.
JavaScript
10
star
16

mfat

A minimal FAT I/O library for embedded systems
C
9
star
17

tinythreadpp

TinyThread++ is a minimalist, portable threading library for C++, modeled after the C++11 standard.
C++
9
star
18

solidaritycsg

A library for quick and robust constructive solid geometry (CSG) operations on triangle meshes
C++
6
star
19

tinypgm

A small I/O library for PGM format image files
C
6
star
20

mc1-doom

DOOM - ported to MC1
C++
6
star
21

mrisc64

The 64-bit evolution of MRISC32
6
star
22

bcl

Basic Compression Library
C
3
star
23

SoftFP

Fork of Fabrice Bellard's SoftFP library, with added support for 16-bit half precision
C
3
star
24

arraymath

ArrayMath is a portable low level C++ library for performing primitive math operations on arrays.
C++
3
star
25

mc1-quake

Quake - ported to the MC1/MRISC32 architecture
C
2
star
26

bs

This may become something awesome in the future
Python
2
star
27

refrepo-ace

A tool for maintaining and using Git reference repositories
Python
2
star
28

openctm

This is the home of development of the OpenCTM project.
C
2
star
29

lomc

Experimental lossless movie compression
C++
2
star
30

css-styles

Some simple generic CSS styles for plain HTML documents
CSS
2
star
31

meson2ide

Generate IDE project files from a Meson build project
Python
2
star
32

fpga-ip

Various vendor IP components for FPGA:s
VHDL
1
star
33

viewer

A 3D model viewer
C++
1
star
34

html-generator

Simple C++ HTML generator classes.
C++
1
star
35

mageray

This project may eventually evolve into a functional C++ ray tracer.
C++
1
star
36

wishbone-blocks

Testing out Wishbone designs in VHDL
VHDL
1
star
37

ccperf

A tool for measuring C/C++ compilation performance metrics.
Python
1
star
38

dhrystone

Dhrystone 2.1 (clone of the 1988 original C source code)
Shell
1
star