mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-13 10:42:05 +00:00
aba5b91b69
This patch writes the full -cc1 command into the resulting .OBJ, like MSVC does. This allows for external tools (Recode, Live++) to rebuild a source file without any external dependency but the .OBJ itself (other than the compiler) and without knowledge of the build system. The LF_BUILDINFO record stores a full path to the compiler, the PWD (CWD at program startup), a relative or absolute path to the source, and the full CC1 command line. The stored command line is self-standing (does not depend on the environment). In the same way, MSVC doesn't exactly store the provided command-line, but an expanded version (a somehow equivalent of CC1) which is also self-standing. For more information see PR36198 and D43002. Differential Revision: https://reviews.llvm.org/D80833 |
||
---|---|---|
.. | ||
3-stage-base.cmake | ||
3-stage.cmake | ||
Android-stage2.cmake | ||
Android.cmake | ||
Apple-stage1.cmake | ||
Apple-stage2-ThinLTO.cmake | ||
Apple-stage2.cmake | ||
BaremetalARM.cmake | ||
CrossWinToARMLinux.cmake | ||
DistributionExample-stage2.cmake | ||
DistributionExample.cmake | ||
Fuchsia-stage2.cmake | ||
Fuchsia.cmake | ||
MultiDistributionExample.cmake | ||
PGO-stage2-instrumented.cmake | ||
PGO-stage2.cmake | ||
PGO.cmake | ||
README.txt |
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.