75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
CMake Caches
|
|
============
|
|
|
|
This directory contains CMake cache scripts that pre-populate the CMakeCache in
|
|
a build directory with commonly used settings.
|
|
|
|
You can use the caches files with the following CMake invocation:
|
|
|
|
cmake -G <build system>
|
|
-C <path to cache file>
|
|
[additional CMake options (i.e. -DCMAKE_INSTALL_PREFIX=<install path>)]
|
|
<path to llvm>
|
|
|
|
Options specified on the command line will override options in the cache files.
|
|
|
|
The following cache files exist.
|
|
|
|
Apple-stage1
|
|
------------
|
|
|
|
The Apple stage1 cache configures a two stage build similar to how Apple builds
|
|
the clang shipped with Xcode. The build files generated from this invocation has
|
|
a target named "stage2" which performs an LTO build of clang.
|
|
|
|
The Apple-stage2 cache can be used directly to match the build settings Apple
|
|
uses in shipping builds without doing a full bootstrap build.
|
|
|
|
PGO
|
|
---
|
|
|
|
The PGO CMake cache can be used to generate a multi-stage instrumented compiler.
|
|
You can configure your build directory with the following invocation of CMake:
|
|
|
|
cmake -G <generator> -C <path_to_clang>/cmake/caches/PGO.cmake <source dir>
|
|
|
|
After configuration the following additional targets will be generated:
|
|
|
|
stage2-instrumented:
|
|
Builds a stage1 x86 compiler, runtime, and required tools (llvm-config,
|
|
llvm-profdata) then uses that compiler to build an instrumented stage2 compiler.
|
|
|
|
stage2-instrumented-generate-profdata:
|
|
Depends on "stage2-instrumented" and will use the instrumented compiler to
|
|
generate profdata based on the training files in <clang>/utils/perf-training
|
|
|
|
stage2:
|
|
Depends on "stage2-instrumented-generate-profdata" and will use the stage1
|
|
compiler with the stage2 profdata to build a PGO-optimized compiler.
|
|
|
|
stage2-check-llvm:
|
|
Depends on stage2 and runs check-llvm using the stage3 compiler.
|
|
|
|
stage2-check-clang:
|
|
Depends on stage2 and runs check-clang using the stage3 compiler.
|
|
|
|
stage2-check-all:
|
|
Depends on stage2 and runs check-all using the stage3 compiler.
|
|
|
|
stage2-test-suite:
|
|
Depends on stage2 and runs the test-suite using the stage3 compiler (requires
|
|
in-tree test-suite).
|
|
|
|
3-stage
|
|
-------
|
|
|
|
This cache file can be used to generate a 3-stage clang build. You can configure
|
|
using the following CMake command:
|
|
|
|
cmake -C <path to clang>/cmake/caches/3-stage.cmake -G Ninja <path to llvm>
|
|
|
|
You can then run "ninja stage3-clang" to build stage1, stage2 and stage3 clangs.
|
|
|
|
This is useful for finding non-determinism the compiler by verifying that stage2
|
|
and stage3 are identical.
|