name='lib32-llvm18' version='18.1.8' release='10' desc='32-bit LLVM libraries for Mesa' desc_ru='32-битные библиотеки LLVM для Mesa' homepage='https://llvm.org/' maintainer='Evgeniy Khramov ' maintainer_ru='Евгений Храмов ' license='Apache-2.0 WITH LLVM-exception' architectures=('amd64') min_alr_version='v0.0.14' # Runtime dependencies deps=() deps_redos=() # Build dependencies build_deps=( 'cmake' 'ninja-build' 'gcc' 'gcc-c++' 'python3' 'python3-devel' 'zlib-devel(x86-32)' 'libzstd-devel(x86-32)' 'libxml2-devel(x86-32)' 'ncurses-devel(x86-32)' 'libedit-devel(x86-32)' 'libffi-devel(x86-32)' 'glibc-devel(x86-32)' ) build_deps_redos=("${build_deps[@]}") # Provides 32-bit LLVM libraries and replaces system LLVM 17 provides=( 'lib32-llvm18' 'llvm18-libs(x86-32)' 'llvm18-devel(x86-32)' 'llvm-libs(x86-32)' ) conflicts=( 'llvm18-libs(x86-32) < 18.1.8' 'llvm-libs(x86-32)' ) _pkgver="${version}" sources=("https://github.com/llvm/llvm-project/releases/download/llvmorg-${_pkgver}/llvm-project-${_pkgver}.src.tar.xz") checksums=('SKIP') prepare() { cd "$srcdir/llvm-project-${_pkgver}.src" echo "==> Preparing LLVM ${version} (32-bit)..." } build() { cd "$srcdir/llvm-project-${_pkgver}.src/llvm" export CFLAGS="-m32 -O2 -g1" export CXXFLAGS="-m32 -O2 -g1" export LDFLAGS="-m32" export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" echo "==> Configuring LLVM (32-bit) with CMake..." cmake -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_C_FLAGS="-m32" \ -DCMAKE_CXX_FLAGS="-m32" \ -DLLVM_LIBDIR_SUFFIX="" \ -DLLVM_TARGET_ARCH=i686 \ -DLLVM_DEFAULT_TARGET_TRIPLE=i686-redsoft-linux-gnu \ -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" \ -DLLVM_ENABLE_PROJECTS="" \ -DLLVM_BUILD_LLVM_DYLIB=ON \ -DLLVM_LINK_LLVM_DYLIB=ON \ -DLLVM_BUILD_TOOLS=ON \ -DLLVM_BUILD_UTILS=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_EXAMPLES=OFF \ -DLLVM_INCLUDE_BENCHMARKS=OFF \ -DLLVM_INCLUDE_DOCS=OFF \ -DLLVM_ENABLE_DOXYGEN=OFF \ -DLLVM_ENABLE_SPHINX=OFF \ -DLLVM_ENABLE_BINDINGS=OFF \ -DLLVM_ENABLE_TERMINFO=ON \ -DLLVM_ENABLE_ZLIB=ON \ -DLLVM_ENABLE_ZSTD=ON \ -DLLVM_ENABLE_LIBXML2=ON \ -DBUILD_SHARED_LIBS=OFF echo "==> Building LLVM (32-bit) - this may take 30-60 minutes..." cmake --build build -j$(nproc) } package() { cd "$srcdir/llvm-project-${_pkgver}.src/llvm" echo "==> Installing LLVM (32-bit) libraries..." DESTDIR="$pkgdir" cmake --install build # Manually install llvm-config as llvm-config-18-32 mkdir -p "$pkgdir/usr/bin" if [ -f "build/bin/llvm-config" ]; then install -m755 build/bin/llvm-config "$pkgdir/usr/bin/llvm-config-18-32" else echo "ERROR: llvm-config not found in build/bin/" exit 1 fi # Remove all other binaries that might have been installed find "$pkgdir/usr/bin" -type f ! -name "llvm-config-18-32" -delete 2>/dev/null || true # Remove man pages and documentation rm -rf "$pkgdir/usr/share/man" rm -rf "$pkgdir/usr/share/opt-viewer" rm -rf "$pkgdir/usr/share/doc" # Libraries should already be in /usr/lib due to CMAKE_INSTALL_LIBDIR=lib # But check if any ended up in lib64 and move them if [ -d "$pkgdir/usr/lib64" ]; then mkdir -p "$pkgdir/usr/lib" mv "$pkgdir/usr/lib64"/* "$pkgdir/usr/lib/" 2>/dev/null || true rmdir "$pkgdir/usr/lib64" fi # Remove static libraries to save space and avoid conflicts echo "==> Removing static libraries..." find "$pkgdir/usr/lib" -name "*.a" -delete # Remove cmake files that might conflict rm -rf "$pkgdir/usr/lib/cmake" # Remove includes to avoid conflicts - Mesa will use system headers rm -rf "$pkgdir/usr/include" # Install license install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$name/LICENSE.TXT" echo "==> LLVM ${version} (32-bit) installed: libraries in /usr/lib, llvm-config-18-32 in /usr/bin" } files() { # Find all installed files find "$pkgdir" -type f -o -type l | sed "s|^$pkgdir||" | sort }