73 lines
2.7 KiB
Python
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")
|