Open-Source Wikis

/

LLVM

/

Reference

/

Dependencies

llvm/llvm-project

Dependencies

A short reference for the third-party software the project depends on, both at build time and at runtime, and what the policies around adding new dependencies look like.

Vendored third-party libraries

These live under third-party/:

Library Path Purpose
Google Test / Google Mock third-party/unittest/ Unit-test framework used by every subproject's unittests/
Google Benchmark third-party/benchmark/ Microbenchmark framework
Boost Math third-party/boost-math/ Reference high-precision math used in libc and libc++ tests
SipHash third-party/siphash/ Fast keyed-hash; pulled in for the rare uses

Update scripts ship alongside each:

The Integer Set Library (ISL) used by Polly is not under third-party/; it lives under polly/lib/External/ with its own update flow.

Build-time tools

Tool Required? Notes
CMake Yes ≥ 3.20
Python Yes ≥ 3.8
Ninja Recommended The default for any non-toy build
ccache / sccache Optional -DLLVM_CCACHE_BUILD=ON
C++17 host compiler Yes GCC ≥ 7.4, Clang ≥ 5, MSVC ≥ recent
lit Bundled Built/installed from llvm/utils/lit/ as needed
FileCheck Bundled Built from llvm/utils/FileCheck/

For documentation builds, Sphinx plus a couple of extensions is needed; the relevant requirements are pinned in each subproject's docs/ directory.

Runtime dependencies

The runtime story varies by subproject:

Subproject Runtime dependency
clang The C++ runtime (libc++ or libstdc++) of the host build at runtime; compiler-rt builtins for codegen
lld Just the host C++ runtime
lldb Python (for the script bridge), platform debug-server libraries, ptrace/equivalent on the host
flang flang-rt, MLIR static libs, LLVM static libs
compiler-rt sanitizers Host kernel features (ptrace, /proc, mmap protections), often glibc-specific entry points
libcxx libc++abi, libunwind
libc++abi libunwind
libunwind None beyond the OS
openmp A pthreads implementation, the host C library
offload Vendor SDKs at runtime — CUDA driver / ROCm runtime / HSA, etc.
bolt None at apply time; needs perf to collect input profile

Adding a new dependency

The project policy is conservative: new third-party dependencies require a public discussion thread on Discourse and clear justification (no smaller in-tree alternative; license compatible with Apache 2.0 with LLVM Exceptions; a maintainer willing to keep it updated). Most contributions rewrite or vendor a small piece rather than introduce a system dependency.

For dependencies that already live in third-party/, updates are made through the corresponding update_*.sh script and reviewed alongside the actual import.

Reference

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Dependencies – LLVM wiki | Factory