This patch enables the `--enable-sccache` flag to enable build caching
using sccache.  Specifically, if the toolchain is one among gcc, clang,
or MSVC and if the sccache version is 0.10 and above, then the build
prefixes all compiler invocations with the path to the sccache binary.

Since sccache is incompatible with ccache and precompiled headers, this
patch makes the build fail if either ccache or precompiled headers are
enabled in addition to sccache at the same time.

Validated this patch on {Linux, Windows, macOS} x {x64, aarch64}
machines.  In the best-case scenario (i.e. when there are no changes to
the source files), the time required to run the "make images" step is
roughly cut in half.  Side note: the individual machines have very
different configurations, so build times _across_ machines aren't
comparable.

- Windows/x64: 2,107s -> 848s
- Windows/ARM64: 1,264s -> 748s
- macOS/x64: 808s -> 243s
- macOS/AArch64: 480s -> 142s
- Linux/x64: 225s -> 111s
- Linux/AArch64: 364s -> 246s

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - Add sccache support to Linux, Windows, and macOS builds

Changes: https://git.openjdk.org/jdk/pull/32059/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32059&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8389209
  Stats: 129 lines in 6 files changed: 126 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/32059.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/32059/head:pull/32059

PR: https://git.openjdk.org/jdk/pull/32059

Reply via email to