lib32/lib32-llvm/PKGBUILD
2015-10-20 13:15:19 +02:00

153 lines
5.2 KiB
Bash

# Lib32 Packages for Chakra, part of chakra-project.org
#
# maintainer (x86_64): Giuseppe Calà <jiveaxe@gmail.com>
# maintainer (x86_64): Anke Boersma <abveritas[at]chakra-project[dot]org>
# resynced with Arch's version from https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/lib32-llvm
# adjusted for Chakra
pkgname=('lib32-llvm' 'lib32-llvm-libs' 'lib32-clang')
pkgver=3.7.0
pkgrel=1
arch=('x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
makedepends=('cmake' 'lib32-libffi' 'lib32-zlib' 'python2' 'gcc-multilib'
'lib32-libxml2')
options=('staticlibs')
source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz{,.sig}
http://llvm.org/releases/$pkgver/compiler-rt-$pkgver.src.tar.xz{,.sig}
llvm-3.7.0-link-tools-against-libLLVM.patch
llvm-3.7.0-export-more-symbols.patch)
sha256sums=('ab45895f9dcdad1e140a3a79fd709f64b05ad7364e308c0e582c5b02e9cc3153'
'SKIP'
'4ed740c5a91df1c90a4118c5154851d6a475f39a91346bdf268c1c29c13aa1cc'
'SKIP'
'227fa998520bc94974a428dc8e7654d9bdf277e5bc70d4064ebc05691bd62b0b'
'SKIP'
'cf9c8b4d70b4547eda162644658c5c203c3139fcea6c75003b6cd7dc11a8cccc'
'a1c9f36b97c639666ab6a1bd647a08a027e93e3d3cfd6f5af9c36e757599ce81')
validpgpkeys=('11E521D646982372EB577A1F8F0871F202119294'
'B6C8F98282B944E3B0D5C2530FC3042E345AD05D')
prepare() {
cd "$srcdir/llvm-$pkgver.src"
# At the present, clang must reside inside the LLVM source code tree to build
# See http://llvm.org/bugs/show_bug.cgi?id=4840
mv "$srcdir/cfe-$pkgver.src" tools/clang
mv "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
# Backport LLVM_LINK_LLVM_DYLIB option
# https://bugs.archlinux.org/task/46392
patch -Np1 -i ../llvm-3.7.0-link-tools-against-libLLVM.patch
# https://llvm.org/bugs/show_bug.cgi?id=24157
patch -Np2 -i ../llvm-3.7.0-export-more-symbols.patch
mkdir build
}
build() {
cd "$srcdir/llvm-$pkgver.src/build"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLLVM_LIBDIR_SUFFIX=32 \
-DCMAKE_C_FLAGS:STRING=-m32 \
-DCMAKE_CXX_FLAGS:STRING=-m32 \
-DLLVM_TARGET_ARCH:STRING=i686 \
-DLLVM_DEFAULT_TARGET_TRIPLE="i686-unknown-linux-gnu" \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_DYLIB_EXPORT_ALL=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_FFI=ON \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_DOXYGEN=OFF \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DLLVM_BINUTILS_INCDIR=/usr/include \
..
make
# Disable automatic installation of components that go into subpackages
sed -i '/\(clang\|lldb\)\/cmake_install.cmake/d' tools/cmake_install.cmake
sed -i '/extra\/cmake_install.cmake/d' tools/clang/tools/cmake_install.cmake
sed -i '/compiler-rt\/cmake_install.cmake/d' projects/cmake_install.cmake
}
package_lib32-llvm() {
pkgdesc="Low Level Virtual Machine (32-bit)"
depends=('lib32-llvm-libs' "llvm=${pkgver}")
cd "$srcdir/llvm-$pkgver.src"
make -C build DESTDIR="$pkgdir" install
# The runtime library goes into lib32-llvm-libs
mv "$pkgdir"/usr/lib32/lib{LLVM,LTO}.so* "$srcdir"
mv -f "$pkgdir"/usr/lib32/{LLVMgold,BugpointPasses}.so "$srcdir"
# Fix permissions of static libs
chmod -x "$pkgdir"/usr/lib32/*.a
mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/lib32/llvm-config"
mv "$pkgdir/usr/include/llvm/Config/llvm-config.h" \
"$pkgdir/usr/lib32/llvm-config-32.h"
# Get rid of example Hello transformation
rm "$pkgdir"/usr/lib32/*LLVMHello.*
rm -rf "$pkgdir"/usr/{bin,include,share/{doc,man,llvm}}
# Needed for multilib (https://bugs.archlinux.org/task/29951)
# Header stub is taken from Fedora
install -d "$pkgdir/usr/include/llvm/Config"
mv "$pkgdir/usr/lib32/llvm-config-32.h" "$pkgdir/usr/include/llvm/Config/"
mkdir "$pkgdir"/usr/bin
mv "$pkgdir/usr/lib32/llvm-config" "$pkgdir/usr/bin/llvm-config32"
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_lib32-llvm-libs() {
pkgdesc="Low Level Virtual Machine (runtime library)(32-bit) "
depends=('lib32-libffi' 'lib32-zlib' 'lib32-ncurses' 'lib32-gcc-libs')
install -d "$pkgdir/usr/lib32"
cp -P \
"$srcdir"/lib{LLVM,LTO}.so* \
"$srcdir"/{LLVMgold,BugpointPasses}.so \
"$pkgdir/usr/lib32/"
# Symlink LLVMgold.so from /usr/lib/bfd-plugins
# https://bugs.archlinux.org/task/28479
install -d "$pkgdir/usr/lib32/bfd-plugins"
ln -s ../LLVMgold.so "$pkgdir/usr/lib32/bfd-plugins/LLVMgold.so"
install -Dm644 llvm-$pkgver.src/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_lib32-clang() {
pkgdesc="C language family frontend for LLVM"
url="http://clang.llvm.org/"
depends=("lib32-llvm=$pkgver-$pkgrel" 'clang' 'gcc-multilib')
cd "$srcdir/llvm-$pkgver.src"
make -C build/tools/clang DESTDIR="$pkgdir" install
rm -r "$pkgdir"/usr/{bin,include,share}
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}