# Contributor: Sebastian Nowicki # Contributor: Geoffroy Carrier # Contributor: Tomas Lindquist Olsen # Contributor: Roberto Alsina # Contributor: Gerardo Exequiel Pozzi pkgbase=llvm-clang pkgname=(llvm clang clang-analyzer) pkgver=2.6 pkgrel=1 arch=('i686' 'x86_64') url="http://llvm.org" license=('custom':'University of Illinois/NCSA Open Source License') depends=('libelf') source=("http://llvm.org/releases/$pkgver/llvm-$pkgver.tar.gz" "http://llvm.org/releases/$pkgver/clang-$pkgver.tar.gz") md5sums=('1e67152a233c4c5261fbb8ee3c2080a7' '3ccd18fc66892880ec3c3bac90a16ada') build() { cd "$srcdir/llvm-$pkgver" cp -R "$srcdir/clang-$pkgver" tools/clang # --sysconfdir to configure apparently isn't enough ... sed -i 's:$(PROJ_prefix)/etc/llvm:/etc/llvm:' Makefile.config.in || return 1 # --libdir to configure apparently isn't enough ... sed -i 's:$(PROJ_prefix)/lib:$(PROJ_prefix)/lib/llvm:' \ Makefile.config.in || return 1 # Fix insecure rpath http://bugs.archlinux.org/task/14017 sed -i 's:-rpath \$(ToolDir)::g' Makefile.rules || return 1 # Fix path that point to the build directory sed -i 's:^TOOLDIR.*:TOOLDIR=/usr/bin:' \ tools/gccld/gccld.sh tools/gccas/gccas.sh || return 1 # remove docs from the make targets sed -i 's:runtime docs:runtime:' Makefile || return 1 # remove libHello transformation sed -i 's: Hello::' lib/Transforms/Makefile || return 1 if [ "${CARCH}" = "x86_64" ]; then _pic_flag="--enable-pic" else _pic_flag="" fi ./configure --prefix=/usr \ --libdir=/usr/lib/llvm \ --sysconfdir=/etc \ --enable-bindings=none \ --enable-targets=host-only \ --enable-optimized \ --disable-assertions \ --disable-expensive-checks ${_pic_flag} || return 1 make || return 1 } package_llvm() { pkgdesc="Low Level Virtual Machine" cd "$srcdir/llvm-$pkgver" # install fails with more than one make job make -j1 DESTDIR="$pkgdir" install || return 1 # Fix libpath in llvm-config sed -i 's:\(ABS_RUN_DIR/lib\):\1/llvm:' \ "$pkgdir/usr/bin/llvm-config" || return 1 install -Dm644 LICENSE.TXT \ "$pkgdir/usr/share/licenses/$pkgname/LICENSE" mkdir -p "$pkgdir/usr/share/doc" mv "$pkgdir/usr/docs/llvm" "$pkgdir/usr/share/doc" # Remove clang (there should be a better way) rm -f "$pkgdir/usr/bin/clang" rm -f "$pkgdir/usr/libexec/clang-cc" rm -f "$pkgdir/usr/share/doc/llvm/ps/clang.ps" rm -rf "$pkgdir/usr/share/man/" rm -rf "$pkgdir/usr/share/doc/llvm/html/clang" rm -rf "$pkgdir/usr/include/clang" rm -rf "$pkgdir/usr/lib/clang" } package_clang() { pkgdesc="A C, C++, Objective-C and Objective-CC front-end for the LLVM compiler" url="http://clang.llvm.org/" depends=(llvm) cd "$srcdir/llvm-$pkgver/tools/clang" # install fails with more than one make job make -j1 DESTDIR="$pkgdir" install || return 1 install -Dm644 "$srcdir/llvm-$pkgver/LICENSE.TXT" \ "$pkgdir/usr/share/licenses/clang/LICENSE" mkdir -p "$pkgdir/usr/share/doc/clang" mv "$pkgdir/usr/docs/llvm/html/clang" \ "$pkgdir/usr/share/doc/clang/html" rm -rf "$pkgdir/usr/docs" } package_clang-analyzer() { pkgdesc="A source code analysis framework" url="http://clang-analyzer.llvm.org/" depends=("clang=$pkgver" "python") cd "$srcdir/llvm-$pkgver/tools/clang/utils" mkdir -p "$pkgdir/usr/bin/" mkdir -p "$pkgdir/usr/lib/clang-analyzer/libexec" # Link clang-cc for scan-build to find ln -s /usr/libexec/clang-cc \ "$pkgdir/usr/lib/clang-analyzer/libexec/" || return 1 install -m755 ccc-analyzer \ "$pkgdir/usr/lib/clang-analyzer/libexec/" || return 1 install -m755 scan-build \ "$pkgdir/usr/lib/clang-analyzer/" || return 1 install -m644 scanview.css sorttable.js \ "$pkgdir/usr/lib/clang-analyzer/" || return 1 cp -pr ../tools/scan-view/* "$pkgdir/usr/lib/clang-analyzer/" || return 1 ln -s "/usr/lib/clang-analyzer/scan-build" \ "$pkgdir/usr/bin/" || return 1 ln -s "/usr/lib/clang-analyzer/scan-view" \ "$pkgdir/usr/bin/" || return 1 }