lib32-llvm18: - Устанавливает библиотеки в /usr/lib (32-бит) - Собирает llvm-config как llvm-config-18-32 в /usr/bin - Удалены все другие бинарники для избежания конфликтов с 64-бит llvm18 - Удалены заголовки (Mesa использует системные) - Добавлен CMAKE_INSTALL_LIBDIR=lib для установки в /usr/lib - Включен LLVM_BUILD_TOOLS=ON для сборки llvm-config lib32-mesa: - Возврат к использованию lib32-llvm18 - LLVM_CONFIG указывает на /usr/bin/llvm-config-18-32 Теперь 32-битный и 64-битный LLVM могут сосуществовать: - 64-бит: /usr/lib64/libLLVM*.so, /usr/bin/llvm-config-18 - 32-бит: /usr/lib/libLLVM*.so, /usr/bin/llvm-config-18-32
147 lines
3.8 KiB
Bash
147 lines
3.8 KiB
Bash
name='lib32-llvm18'
|
|
version='18.1.8'
|
|
release='8'
|
|
desc='32-bit LLVM libraries for Mesa'
|
|
desc_ru='32-битные библиотеки LLVM для Mesa'
|
|
homepage='https://llvm.org/'
|
|
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
|
|
maintainer_ru='Евгений Храмов <xpamych@yandex.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
|
|
provides=(
|
|
'lib32-llvm18'
|
|
'llvm18-libs(x86-32)'
|
|
'llvm18-devel(x86-32)'
|
|
)
|
|
|
|
conflicts=(
|
|
'llvm18-libs(x86-32) < 18.1.8'
|
|
)
|
|
|
|
_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_INSTALL_TOOLCHAIN_ONLY=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
|
|
|
|
# Rename llvm-config to llvm-config-18-32
|
|
if [ -f "$pkgdir/usr/bin/llvm-config" ]; then
|
|
mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/bin/llvm-config-18-32"
|
|
fi
|
|
|
|
# Remove all other binaries to avoid conflicts
|
|
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
|
|
}
|