Skip to content
Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

llvm-full

Prebuilt LLVM archives with full C/C++ API, clang, and LLD for multiple platforms.

Build Status

Version Status
22.1.0 Build
21.1.4 Build
20.1.8 Build
19.1.7 Build
18.1.8 Build
17.0.6 Build
16.0.6 Build
15.0.7 Build
14.0.6 Build
13.0.1 Build
12.0.1 Build
11.0.1 Build
10.0.1 Build

Why llvm-full?

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

Supported Versions & Targets

Linux

Version x86_64 AArch64 x86_64 (musl) AArch64 (musl) i686
22.1.0 files files files files files
21.1.4 files files files files files
20.1.8 files files files files files
19.1.7 files files files files files
18.1.8 files files files files files
17.0.6 files files files files files
16.0.6 files files files files files
15.0.7 files files files files files
14.0.6 files files files files files
13.0.1 files files files files files
12.0.1 files files files files files
11.0.1 files files files files files
10.0.1 files files files files files

macOS

Version ARM64 x86_64
22.1.0 files files
21.1.4 files files
20.1.8 files files
19.1.7 files files
18.1.8 files files
17.0.6 files files
16.0.6 files files
15.0.7 files files
14.0.6 files files
13.0.1 files files
12.0.1 files files
11.0.1 files files
10.0.1 files files

Windows

Version x64 MSVC x64 GNU ARM64 MSVC i686 MSVC i686 GNU
22.1.0 files files files files files
21.1.4 files files files files files
20.1.8 files files files files files
19.1.7 files files files files files
18.1.8 files files files files files
17.0.6 files files files files files
16.0.6 files files files files files
15.0.7 files files files files files
14.0.6 files files files files files
13.0.1 files files files files files
12.0.1 files files files files files
11.0.1 files files files files files
10.0.1 files files files files files

BSD

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

Usage

GitHub Actions

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. @v1 tracks the latest v1.x action 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-numbered v10.0.1v22.1.0 tags are the prebuilt LLVM archive releases, not action versions.

Inputs

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

Outputs

Output Description
version The full LLVM version installed
prefix The LLVM installation prefix directory

Example with all options

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 --version

Environment variables set

  • LLVM_PREFIX / LLVM_PATH - LLVM installation root
  • LLVM_CONFIG / LLVM_CONFIG_PATH - Path to llvm-config
  • LIBCLANG_PATH - Path to libclang shared library
  • LLVM_INCLUDE_DIR / LLVM_LIBRARY_DIR - Include and library directories
  • LLVM_SYS_<MAJMIN>_PREFIX - For Rust llvm-sys crate
  • LD_LIBRARY_PATH (Linux) / DYLD_LIBRARY_PATH (macOS) - Library search path
  • CC / CXX - Clang paths (when env: true)

Shell Script (Docker / cibuildwheel)

curl -sSL https://raw.githubusercontent.com/yasuo-ozu/llvm-full/v1/install-llvm.sh | bash -s -- 18.1.8

Or 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/local

cibuildwheel (GitHub Actions)

Complete 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)

Rust Crate

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 build

Direct Download

Archives are available from GitHub Releases:

https://github.com/yasuo-ozu/llvm-full/releases/download/v{VERSION}/llvm-{VERSION}-{TARGET}.{EXT}

Supported Targets

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

Archive Contents

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.

Building a Release

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.8

The CI workflows will build LLVM from source for all targets, create archives, and upload them to GitHub Releases tagged v18.1.8.

License

LLVM is distributed under the Apache License 2.0 with LLVM Exceptions.

About

LLVM unofficial prebuild archive with broader APIs and versions from 10 to 22

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages