Prebuilt LLVM archives with full C/C++ API, clang, and LLD for multiple platforms.
| Version | Status |
|---|---|
| 22.1.0 | |
| 21.1.4 | |
| 20.1.8 | |
| 19.1.7 | |
| 18.1.8 | |
| 17.0.6 | |
| 16.0.6 | |
| 15.0.7 | |
| 14.0.6 | |
| 13.0.1 | |
| 12.0.1 | |
| 11.0.1 | |
| 10.0.1 |
| Feature | llvm-full | apt.llvm.org | Homebrew | Official releases |
|---|---|---|---|---|
| Full LLVM C/C++ API (headers + libs) | Yes | Yes | Yes | Partial |
llvm-config / llvm-config.exe |
Yes | Yes | Yes | Not on Windows |
| Clang + LLD included | Yes | Separate pkgs | Yes | Yes |
| Windows MSVC prebuilt | Yes | No | No | No |
| Windows MinGW/GNU prebuilt | Yes | No | No | No |
| Older LLVM versions (10+) | Yes | Limited | Limited | Archives removed |
| Single archive download | Yes | No | No | Yes |
| Works in Docker / cibuildwheel | Yes | Yes | N/A | Manual |
| Version | x86_64 | AArch64 | x86_64 (musl) | AArch64 (musl) | i686 |
|---|---|---|---|---|---|
| 22.1.0 | |||||
| 21.1.4 | |||||
| 20.1.8 | |||||
| 19.1.7 | |||||
| 18.1.8 | |||||
| 17.0.6 | |||||
| 16.0.6 | |||||
| 15.0.7 | |||||
| 14.0.6 | |||||
| 13.0.1 | |||||
| 12.0.1 | |||||
| 11.0.1 | |||||
| 10.0.1 |
| Version | ARM64 | x86_64 |
|---|---|---|
| 22.1.0 | ||
| 21.1.4 | ||
| 20.1.8 | ||
| 19.1.7 | ||
| 18.1.8 | ||
| 17.0.6 | ||
| 16.0.6 | ||
| 15.0.7 | ||
| 14.0.6 | ||
| 13.0.1 | ||
| 12.0.1 | ||
| 11.0.1 | ||
| 10.0.1 |
| Version | x64 MSVC | x64 GNU | ARM64 MSVC | i686 MSVC | i686 GNU |
|---|---|---|---|---|---|
| 22.1.0 | |||||
| 21.1.4 | |||||
| 20.1.8 | |||||
| 19.1.7 | |||||
| 18.1.8 | |||||
| 17.0.6 | |||||
| 16.0.6 | |||||
| 15.0.7 | |||||
| 14.0.6 | |||||
| 13.0.1 | |||||
| 12.0.1 | |||||
| 11.0.1 | |||||
| 10.0.1 |
| Version | FreeBSD x86_64 | FreeBSD i686 | NetBSD x86_64 | NetBSD AArch64 | NetBSD i686 | OpenBSD x86_64 | OpenBSD AArch64 | OpenBSD i686 |
|---|---|---|---|---|---|---|---|---|
| 22.1.0 | files | files | files | files | files | files | files | files |
| 21.1.4 | files | files | files | files | files | files | files | files |
| 20.1.8 | files | files | files | files | files | files | files | files |
| 19.1.7 | files | files | files | files | files | files | files | files |
| 18.1.8 | files | files | files | files | files | files | files | files |
| 17.0.6 | files | files | files | files | files | files | files | files |
| 16.0.6 | files | files | files | files | files | files | files | files |
| 15.0.7 | files | files | files | files | files | files | files | files |
| 14.0.6 | files | files | files | files | files | files | files | files |
| 13.0.1 | files | files | files | files | files | files | files | files |
| 12.0.1 | files | files | files | files | files | files | files | files |
| 11.0.1 | files | files | files | files | files | files | files | files |
| 10.0.1 | files | files | files | files | files | files | files | files |
steps:
- name: Install LLVM and Clang
uses: yasuo-ozu/llvm-full@v1
id: llvm
with:
version: "18.1.8"This first tries to download a prebuilt archive from this project's releases. If unavailable, it falls back to building from source (with caching) or installing via apt/brew.
Versioning.
@v1tracks the latestv1.xaction release and receives backward-compatible fixes automatically. Pin to an exact release (e.g.@v1.0.0) for fully reproducible builds. Action releases use low major versions (v1,v2, …); the high-numberedv10.0.1…v22.1.0tags are the prebuilt LLVM archive releases, not action versions.
| Input | Required | Default | Description |
|---|---|---|---|
version |
Yes | LLVM version, e.g. 18.1.8 |
|
directory |
No | platform default | Installation directory |
target |
No | auto-detected | Target override (see targets below) |
env |
No | false |
Set CC and CXX to the installed Clang |
fallback |
No | true |
Fall back to apt/brew/source if prebuilt unavailable |
| Output | Description |
|---|---|
version |
The full LLVM version installed |
prefix |
The LLVM installation prefix directory |
steps:
- name: Install LLVM
uses: yasuo-ozu/llvm-full@v1
id: llvm
with:
version: "18.1.8"
directory: ${{ runner.temp }}/llvm
env: true
- name: Use LLVM
run: |
echo "LLVM installed at ${{ steps.llvm.outputs.prefix }}"
clang --versionLLVM_PREFIX/LLVM_PATH- LLVM installation rootLLVM_CONFIG/LLVM_CONFIG_PATH- Path tollvm-configLIBCLANG_PATH- Path to libclang shared libraryLLVM_INCLUDE_DIR/LLVM_LIBRARY_DIR- Include and library directoriesLLVM_SYS_<MAJMIN>_PREFIX- For Rustllvm-syscrateLD_LIBRARY_PATH(Linux) /DYLD_LIBRARY_PATH(macOS) - Library search pathCC/CXX- Clang paths (whenenv: true)
curl -sSL https://raw.githubusercontent.com/yasuo-ozu/llvm-full/v1/install-llvm.sh | bash -s -- 18.1.8Or with a custom install prefix:
curl -sSL https://raw.githubusercontent.com/yasuo-ozu/llvm-full/v1/install-llvm.sh | bash -s -- 18.1.8 /usr/localComplete example for building Python wheels that depend on LLVM using cibuildwheel:
name: Build wheels
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-14, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
# Install LLVM on the host for Windows (not containerized)
- name: Install LLVM (Windows)
if: runner.os == 'Windows'
uses: yasuo-ozu/llvm-full@v1
with:
version: "18.1.8"
env: true
- name: Build wheels
uses: pypa/cibuildwheel@v2
env:
# Linux: install inside the manylinux/musllinux container
CIBW_BEFORE_ALL_LINUX: >
curl -sSL https://raw.githubusercontent.com/yasuo-ozu/llvm-full/v1/install-llvm.sh
| bash -s -- 18.1.8
CIBW_ENVIRONMENT_LINUX: >
LLVM_PREFIX=/opt/llvm
LLVM_CONFIG=/opt/llvm/bin/llvm-config
LIBCLANG_PATH=/opt/llvm/lib
PATH=/opt/llvm/bin:$PATH
# macOS: install via the shell script
CIBW_BEFORE_ALL_MACOS: >
curl -sSL https://raw.githubusercontent.com/yasuo-ozu/llvm-full/v1/install-llvm.sh
| bash -s -- 18.1.8
CIBW_ENVIRONMENT_MACOS: >
LLVM_PREFIX=/opt/llvm
LLVM_CONFIG=/opt/llvm/bin/llvm-config
LIBCLANG_PATH=/opt/llvm/lib
PATH=/opt/llvm/bin:$PATH
# Windows: uses the host-installed LLVM (set by the action above)Add to your Cargo.toml with a version feature flag:
[build-dependencies]
llvm-full = { version = "0.1", features = ["llvm18-1"] }Available features: llvm10-0, llvm11-0, llvm12-0, llvm13-0, llvm14-0,
llvm15-0, llvm16-0, llvm17-0, llvm18-1, llvm19-1, llvm20-1, llvm21-1, llvm22-1.
The build script automatically downloads and extracts the correct LLVM archive for your target platform, and sets up cargo:rustc-link-search and DEP_LLVM_FULL_ROOT for downstream crates.
You can also use it as a git dependency:
[build-dependencies]
llvm-full = { git = "https://github.com/yasuo-ozu/llvm-full", features = ["llvm18-1"] }To skip download and use a pre-installed LLVM, set LLVM_FULL_PREFIX:
LLVM_FULL_PREFIX=/usr/lib/llvm-18 cargo buildArchives are available from GitHub Releases:
https://github.com/yasuo-ozu/llvm-full/releases/download/v{VERSION}/llvm-{VERSION}-{TARGET}.{EXT}
| Target | Rust triple | Archive format |
|---|---|---|
linux-x86_64 |
x86_64-unknown-linux-gnu |
.tar.xz |
linux-aarch64 |
aarch64-unknown-linux-gnu |
.tar.xz |
linux-x86_64-musl |
x86_64-unknown-linux-musl |
.tar.xz |
linux-aarch64-musl |
aarch64-unknown-linux-musl |
.tar.xz |
linux-i686 |
i686-unknown-linux-gnu |
.tar.xz |
macos-aarch64 |
aarch64-apple-darwin |
.tar.xz |
macos-x86_64 |
x86_64-apple-darwin |
.tar.xz |
windows-msvc |
x86_64-pc-windows-msvc |
.zip |
windows-gnu |
x86_64-pc-windows-gnu |
.zip |
windows-aarch64-msvc |
aarch64-pc-windows-msvc |
.zip |
windows-i686-msvc |
i686-pc-windows-msvc |
.zip |
windows-i686-gnu |
i686-pc-windows-gnu |
.zip |
freebsd-x86_64 |
x86_64-unknown-freebsd |
.tar.xz |
freebsd-i686 |
i686-unknown-freebsd |
.tar.xz |
netbsd-x86_64 |
x86_64-unknown-netbsd |
.tar.xz |
netbsd-aarch64 |
aarch64-unknown-netbsd |
.tar.xz |
netbsd-i686 |
i686-unknown-netbsd |
.tar.xz |
openbsd-x86_64 |
x86_64-unknown-openbsd |
.tar.xz |
openbsd-aarch64 |
aarch64-unknown-openbsd |
.tar.xz |
openbsd-i686 |
i686-unknown-openbsd |
.tar.xz |
Each archive contains a complete LLVM installation:
bin/ # clang, lld, llvm-config, llvm-ar, ...
include/ # Full LLVM/Clang C and C++ headers
clang/
clang-c/
llvm/
llvm-c/
lib/ # Static/shared libraries, cmake modules
cmake/
clang/
share/ # Documentation, scan-build, etc.
To trigger a build for LLVM version XX.Y.Z, push a branch named bXX.Y.Z:
git checkout -b b18.1.8
git push origin b18.1.8The CI workflows will build LLVM from source for all targets, create archives, and upload them to GitHub Releases tagged v18.1.8.
LLVM is distributed under the Apache License 2.0 with LLVM Exceptions.