name='lib32-llvm18' version='18.1.8' release='2' 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=( 'llvm18-libs(x86-32)' ) deps_redos=( 'llvm18-libs(x86-32)' ) # Build dependencies build_deps=( 'cmake' 'ninja-build' 'gcc' 'gcc-c++' 'python3' 'python3-devel' 'zlib-devel.i686' 'libzstd-devel.i686' 'libxml2-devel.i686' 'ncurses-devel.i686' 'libedit-devel.i686' 'libffi-devel.i686' 'glibc-devel.i686' ) build_deps_redos=("${build_deps[@]}") # Provides 32-bit LLVM libraries provides=( 'lib32-llvm18' 'llvm18-libs.i686' 'llvm18-devel.i686' ) _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_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=OFF \ -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 # Remove executables and tools (to avoid conflicts with 64-bit LLVM) rm -rf "$pkgdir/usr/bin" rm -rf "$pkgdir/usr/share/man" rm -rf "$pkgdir/usr/share/opt-viewer" # Move libraries to /usr/lib (32-bit location) 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 # Keep only essential headers for Mesa compilation # Remove conflicting includes if [ -d "$pkgdir/usr/include" ]; then mkdir -p "$pkgdir/usr/include/llvm-32" mv "$pkgdir/usr/include/llvm" "$pkgdir/usr/include/llvm-32/" 2>/dev/null || true mv "$pkgdir/usr/include/llvm-c" "$pkgdir/usr/include/llvm-32/" 2>/dev/null || true # Remove other includes that conflict rm -rf "$pkgdir/usr/include"/*.h fi # Install license install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$name/LICENSE.TXT" echo "==> LLVM ${version} (32-bit) libraries installed" } files() { # Find all installed files find "$pkgdir" -type f -o -type l | sed "s|^$pkgdir||" | sort }