75 lines · plain
1CMake Caches2============3 4This directory contains CMake cache scripts that pre-populate the CMakeCache in5a build directory with commonly used settings.6 7You can use the caches files with the following CMake invocation:8 9cmake -G <build system>10 -C <path to cache file>11 [additional CMake options (i.e. -DCMAKE_INSTALL_PREFIX=<install path>)]12 <path to llvm>13 14Options specified on the command line will override options in the cache files.15 16The following cache files exist.17 18Apple-stage119------------20 21The Apple stage1 cache configures a two stage build similar to how Apple builds22the clang shipped with Xcode. The build files generated from this invocation has23a target named "stage2" which performs an LTO build of clang.24 25The Apple-stage2 cache can be used directly to match the build settings Apple26uses in shipping builds without doing a full bootstrap build.27 28PGO29---30 31The PGO CMake cache can be used to generate a multi-stage instrumented compiler.32You can configure your build directory with the following invocation of CMake:33 34cmake -G <generator> -C <path_to_clang>/cmake/caches/PGO.cmake <source dir>35 36After configuration the following additional targets will be generated:37 38stage2-instrumented:39Builds a stage1 x86 compiler, runtime, and required tools (llvm-config,40llvm-profdata) then uses that compiler to build an instrumented stage2 compiler.41 42stage2-instrumented-generate-profdata:43Depends on "stage2-instrumented" and will use the instrumented compiler to44generate profdata based on the training files in <clang>/utils/perf-training45 46stage2:47Depends on "stage2-instrumented-generate-profdata" and will use the stage148compiler with the stage2 profdata to build a PGO-optimized compiler.49 50stage2-check-llvm:51Depends on stage2 and runs check-llvm using the stage3 compiler.52 53stage2-check-clang:54Depends on stage2 and runs check-clang using the stage3 compiler.55 56stage2-check-all:57Depends on stage2 and runs check-all using the stage3 compiler.58 59stage2-test-suite:60Depends on stage2 and runs the test-suite using the stage3 compiler (requires61in-tree test-suite).62 633-stage64-------65 66This cache file can be used to generate a 3-stage clang build. You can configure67using the following CMake command:68 69cmake -C <path to clang>/cmake/caches/3-stage.cmake -G Ninja <path to llvm>70 71You can then run "ninja stage3-clang" to build stage1, stage2 and stage3 clangs.72 73This is useful for finding non-determinism the compiler by verifying that stage274and stage3 are identical.75