Skip to main content

Installing LLVM

Host Machine

  • Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
  • 40 GB RAM
  • 1 TB SSD

Dependencies

  • git 2.25.1
  • cmake 3.16.3
  • ninja 1.10.0
  • clang++ 10.0.0
  • python 3.8.10

Build

  • Use ninja instead of make.
  • Use lld or gold for the linker.
  • Build with RelWithDebInfo to save on memory but have some debug info.
  • Specify the target to save time on compilation.
  • Build shared library instead of static.
  • Build optimized tblgen to save compilation time.
  • Use clang++ to build using the new PassManager and save on compile time.
  • Example commands:
git clone --branch llvmorg-12.0.0 https://github.com/llvm/llvm-project
cd llvm-project
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_ENABLE_PROJECTS="clang;compiler-rt" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLLVM_USE_LINKER=lld \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DBUILD_SHARED_LIBS=ON \
-DLLVM_OPTIMIZED_TABLEGEN=ON \
-DLLVM_USE_NEWPM=ON \
../llvm
ninja -j8
ninja check-all

Useful LLVM/CMake Variables

  • CMAKE_INSTALL_PREFIX
  • CMAKE_BUILD_TYPE
  • CMAKE_C_FLAGS
  • CMAKE_CXX_FLAGS
  • CMAKE_MODULE_PATH
  • PYTHON_EXECUTABLE
  • LLVM_TARGETS_TO_BUILD
  • LLVM_ENABLE_PROJECTS
  • LLVM_ENABLE_ASSERTIONS
  • LLVM_ENABLE_EXPENSIVE_CHECKS
  • LLVM_APPEND_VC_REV
  • LLVM_ENABLE_THREADS
  • LLVM_ENABLE_EH
  • LLVM_ENABLE_RTTI
  • LLVM_ENABLE_WARNINGS
  • LLVM_ENABLE_PEDANTIC
  • LLVM_ENABLE_WERROR
  • LLVM_OPTIMIZED_TABLEGEN
  • LLVM_USE_SPLIT_DWARF