lib32/lib32-llvm/PKGBUILD
2011-08-11 07:32:48 +00:00

147 lines
5.0 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>
pkgname=('lib32-llvm')
pkgver=2.9
pkgrel=1
arch=('x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
makedepends=('lib32-libffi' 'python2' 'gcc-multilib')
source=(http://llvm.org/releases/$pkgver/llvm-$pkgver.tgz
http://llvm.org/releases/$pkgver/clang-$pkgver.tgz
ftp://ftp.archlinux.org/other/community/clang/gcc-headers-4.5.2.tar.xz
clang-plugin-loader-registry.patch
cindexer-clang-path.patch
clang-toolchains-gcc-versions.patch
clang-pure64.patch
enable-lto.patch)
md5sums=('793138412d2af2c7c7f54615f8943771'
'634de18d04b7a4ded19ec4c17d23cfca'
'70e23a3dc2b38ecb2bb4d2c48f47295d'
'02c23b4aaca3445b8bf39fddb2f9906e'
'87a7162dbe99e9ffce6c40bd09f5f4f0'
'8da236120a9a287a977b575b8b905c93'
'225ee6b531f8327f34f344a18cb4ec81'
'8f7582d7440e4a8342c3aea9ec714fb4')
build() {
cd "$srcdir/llvm-$pkgver"
export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
# Fix symbolic links from OCaml bindings to LLVM libraries
sed -i 's:\$(PROJ_libdir):/usr/lib/llvm:' bindings/ocaml/Makefile.ocaml
# Fix installation directories, ./configure doesn't seem to set them right
sed -i -e 's:\$(PROJ_prefix)/etc/llvm:/etc/llvm:' \
-e 's:\$(PROJ_prefix)/lib:$(PROJ_prefix)/lib32/llvm:' \
-e 's:\$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
Makefile.config.in
# Fix insecure rpath (http://bugs.archlinux.org/task/14017)
sed -i 's:$(RPATH) -Wl,$(\(ToolDir\|LibDir\|ExmplDir\))::g' Makefile.rules
# Get the correct list of symbols to export
# See http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-April/008559.html
patch -Np1 -i "$srcdir/clang-plugin-loader-registry.patch"
# Fix clang path in CIndexer.cpp (https://bugs.archlinux.org/task/22799)
#patch -d tools/clang -Np0 -i "$srcdir/cindexer-clang-path.patch"
# Add GCC 4.6.0 to GccVersions (FS#23631)
#patch -d tools/clang -Np1 -i "$srcdir/clang-toolchains-gcc-versions.patch"
# Adjust lib paths
#patch -d tools/clang -Np0 -i "$srcdir/clang-pure64.patch"
# Make -flto work
# Use gold instead of default linker, and always use the plugin
#patch -d tools/clang -Np0 -i "$srcdir/enable-lto.patch"
# Apply strip option to configure
_optimized_switch="enable"
[[ $(check_option strip) == n ]] && _optimized_switch="disable"
# Include location of libffi headers in CPPFLAGS
export CPPFLAGS="$CPPFLAGS $(pkg-config --cflags libffi)"
# TODO: Uncomment when clang works with GCC 4.6+
#_cxx_headers="/usr/include/c++/$_gcc_ver"
#if [[ ! -d $_cxx_headers ]]; then
# error "Couldn't find the C++ headers, PKGBUILD needs fixing!"
# return 1
#fi
_cxx_headers="/usr/include/c++/clang-$pkgver"
_32bit_headers=""
if [[ $CARCH == x86_64 ]]; then
# Important for multilib
_32bit_headers="32"
fi
./configure \
--prefix=/usr \
--libdir=/usr/lib32/llvm \
--sysconfdir=/etc \
--enable-shared \
--enable-libffi \
--enable-targets=all \
--disable-expensive-checks \
--disable-debug-runtime \
--disable-assertions \
--with-binutils-include=/usr/include \
--with-cxx-include-root=$_cxx_headers \
--with-cxx-include-arch=$CHOST \
--with-cxx-include-32bit-dir=$_32bit_headers \
--$_optimized_switch-optimized
make REQUIRES_RTTI=1
}
package() {
pkgdesc="Low Level Virtual Machine (32 bits version)"
depends=('perl' 'lib32-libffi' 'llvm')
cd "$srcdir/llvm-$pkgver"
# We move the clang directory out of the tree so it won't get installed and
# then we bring it back in for the clang package
# mv tools/clang "$srcdir"
# -j1 is due to race conditions during the installation of the OCaml bindings
make -j1 DESTDIR="$pkgdir" install
# mv "$srcdir/clang" tools
# OCaml bindings go to a separate package
# rm -rf "$srcdir"/{ocaml,ocamldoc}
# mv "$pkgdir"/usr/{lib/ocaml,share/doc/llvm/ocamldoc} "$srcdir"
# Remove duplicate files installed by the OCaml bindings
# rm "$pkgdir"/usr/{lib/llvm/libllvm*,share/doc/llvm/ocamldoc.tar.gz}
# Fix permissions of static libs
chmod -x "$pkgdir"/usr/lib32/llvm/*.a
# Fix libdir in llvm-config (http://bugs.archlinux.org/task/14487)
#sed -i 's:\(ABS_RUN_DIR/lib\):\1/llvm:' "$pkgdir/usr/bin/llvm-config"
sed -i 's:ABS_RUN_DIR/lib:ABS_RUN_DIR/llvm:' "$pkgdir/usr/bin/llvm-config"
mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/lib32/llvm/llvm-config"
# Get rid of example Hello transformation
rm "$pkgdir"/usr/lib32/llvm/*LLVMHello.*
# Symlink the gold plugin where clang expects it
ln -s llvm/LLVMgold.so "$pkgdir/usr/lib32/LLVMgold.so"
# Add ld.so.conf.d entry
install -d "$pkgdir/etc/ld.so.conf.d"
echo /usr/lib32/llvm >"$pkgdir/etc/ld.so.conf.d/llvm32.conf"
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
rm -r "$pkgdir"/usr/{bin,include,share/{doc,man}}
}