# LLVM 18.1.8 — sólo libLLVM (sin clang) para el JIT de llvmpipe (mesa-llvmpipe → escritorio KDE en VM). # Ver [[kde-metal-qemu-desktop]]: kwin exige GBM/EGL de software COMPLETO; softpipe no bindea, llvmpipe sí, # y llvmpipe necesita libLLVM. El LLVM 22 del sandbox Alpine NO compila con mesa 24.0.9 (dep detection # rota) ⇒ sellamos un LLVM 18 (rango que mesa 24.0.9 soporta) desde fuente. # # Patrón gcc-de-gueto (idéntico a cmake.toml): C++ a escala ⇒ g++ del sandbox (Alpine, musl) con # -static-libstdc++ -static-libgcc ⇒ libLLVM.so.18 queda con NEEDED sólo libc.musl (inyectable a la # imagen QEMU como el loader musl). BUILD_LLVM_DYLIB=ON ⇒ una sola libLLVM.so compartida (lo que # mesa linkea). Sólo el target X86 (host), sin tests/docs/bindings ⇒ recorta el monstruo. # # Worker GORDO (TYPE=ccx63): LLVM es de las compilaciones más pesadas; el link del DYLIB pide MUCHA RAM. name = "llvm18" version = "18.1.8" [source] tarball = "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz" sha256 = "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" [build.phases] configure = ''' CC=gcc CXX='g++ -static-libstdc++ -static-libgcc' \ cmake -S llvm -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_CXX_FLAGS="-include cstdint" \ -DCMAKE_C_FLAGS="-include stdint.h" \ -DLLVM_TARGETS_TO_BUILD=X86 \ -DLLVM_BUILD_LLVM_DYLIB=ON \ -DLLVM_LINK_LLVM_DYLIB=ON \ -DLLVM_ENABLE_RTTI=ON \ -DLLVM_ENABLE_PROJECTS="" \ -DLLVM_ENABLE_TERMINFO=OFF \ -DLLVM_ENABLE_ZLIB=OFF \ -DLLVM_ENABLE_ZSTD=OFF \ -DLLVM_ENABLE_LIBXML2=OFF \ -DLLVM_ENABLE_LIBEDIT=OFF \ -DLLVM_ENABLE_BINDINGS=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_EXAMPLES=OFF \ -DLLVM_INCLUDE_BENCHMARKS=OFF \ -DLLVM_INCLUDE_DOCS=OFF ''' compile = "ninja -C build" install = "DESTDIR=/out ninja -C build install" [deps] build = ["cmake", "samurai", "python3", "pkgconf"]