Files
distro/recipes/llvm.py
T
2026-06-02 21:38:47 +02:00

73 lines
2.7 KiB
Python

version = "21.1.6"
revision = 1
description = "LLVM compiler infrastructure (target libLLVM for Mesa)"
license = "Apache-2.0 WITH LLVM-exception"
url = "https://llvm.org/"
source = tarball(
url=f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/llvm-project-{version}.src.tar.xz",
sha256="ae67086eb04bed7ca11ab880349b5f1ab6f50e1b88cda376eaf8a845b935762b",
)
host_deps = ["binutils", "gcc", "pkgconf"]
# Pinned independently of the host LLVM (22.x): this must be a release that
# Mesa 25.3 accepts. Provides target libLLVM for the llvmpipe/radeonsi gallium
# drivers; X86 + AMDGPU backends cover software rendering and AMD GPUs.
deps = [profile["libc"], "ncurses", "zlib", "zstd", "libffi", "libxml2"]
def configure(self):
p = self.options
self.run(
"cmake",
"-S",
self.source_dir / "llvm",
"-B",
self.build_dir,
"-GNinja",
"-DCMAKE_BUILD_TYPE=Release",
f"-DCMAKE_INSTALL_PREFIX={p.get('prefix', '/usr')}",
# Cross toolchain. CMAKE_CROSSCOMPILING triggers LLVM to build a native
# llvm-tblgen under build/NATIVE with the default host compiler.
"-DCMAKE_SYSTEM_NAME=Linux",
f"-DCMAKE_SYSTEM_PROCESSOR={self.arch}",
f"-DCMAKE_SYSROOT={self.sysroot}",
f"-DCMAKE_C_COMPILER={self.triple}-gcc",
f"-DCMAKE_CXX_COMPILER={self.triple}-g++",
"-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER",
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY",
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY",
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY",
f"-DLLVM_HOST_TRIPLE={self.triple}",
f"-DLLVM_DEFAULT_TARGET_TRIPLE={self.triple}",
"-DLLVM_TARGETS_TO_BUILD=X86;AMDGPU",
"-DLLVM_BUILD_LLVM_DYLIB=ON",
"-DLLVM_LINK_LLVM_DYLIB=ON",
"-DLLVM_ENABLE_RTTI=ON",
"-DLLVM_ENABLE_FFI=ON",
"-DLLVM_ENABLE_ZLIB=FORCE_ON",
"-DLLVM_ENABLE_ZSTD=FORCE_ON",
"-DLLVM_ENABLE_LIBXML2=FORCE_ON",
"-DLLVM_ENABLE_TERMINFO=ON",
"-DLLVM_INCLUDE_TESTS=OFF",
"-DLLVM_INCLUDE_EXAMPLES=OFF",
"-DLLVM_INCLUDE_BENCHMARKS=OFF",
"-DLLVM_INCLUDE_DOCS=OFF",
"-DLLVM_ENABLE_PROJECTS=",
"-Wno-dev",
env={
"CFLAGS": p.get("cflags", ""),
"CXXFLAGS": p.get("cxxflags", ""),
"LDFLAGS": p.get("ldflags", ""),
},
)
def build(self):
self.run("cmake", "--build", self.build_dir, f"-j{self.jobs}")
def install(self):
self.run("cmake", "--install", self.build_dir, env={"DESTDIR": str(self.dest_dir)})
# Runtime needs the shared libLLVM + headers/llvm-config; static archives are
# large and unnecessary for Mesa.
self.run("sh", "-c", f"rm -f {self.dest_dir}/usr/lib/*.a")