Advertisement
Guest User

Untitled

a guest
Feb 24th, 2018
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.47 KB | None | 0 0
  1. # $Id$
  2. # Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
  3. # Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
  4. # Contributor: Sebastian Nowicki <sebnow@gmail.com>
  5. # Contributor: Devin Cofer <ranguvar{AT]archlinux[DOT}us>
  6. # Contributor: Tobias Kieslich <tobias@justdreams.de>
  7. # Contributor: Geoffroy Carrier <geoffroy.carrier@aur.archlinux.org>
  8. # Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk>
  9. # Contributor: Roberto Alsina <ralsina@kde.org>
  10. # Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
  11.  
  12. # These packages are meant to be used for compiling packages that haven't been
  13. # ported to LLVM 3.6 yet. Such packages may depend on llvm35-libs but not on
  14. # llvm35 or clang35 which aren't co-installable with the LLVM 3.6 packages.
  15.  
  16. pkgname=('llvm35' 'llvm35-libs' 'clang35')
  17. pkgver=3.5.2
  18. pkgrel=4
  19. arch=('x86_64')
  20. url="http://llvm.org/"
  21. license=('custom:University of Illinois/NCSA Open Source License')
  22. makedepends=('libffi' 'python2' 'python-sphinx')
  23. # Use gcc-multilib to build 32-bit compiler-rt libraries on x86_64 (FS#41911)
  24. makedepends_x86_64=('gcc-multilib')
  25. options=('staticlibs')
  26. source=(https://releases.llvm.org/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
  27.         https://releases.llvm.org/$pkgver/cfe-$pkgver.src.tar.xz{,.sig}
  28.         https://releases.llvm.org/$pkgver/compiler-rt-$pkgver.src.tar.xz{,.sig}
  29.         llvm-3.5.0-force-link-pass.o.patch
  30.         gcc5.patch
  31.         llvm-Config-config.h
  32.         llvm-Config-llvm-config.h)
  33. sha256sums=('44196156d5749eb4b4224fe471a29cc3984df92570a4a89fa859f7394fc0c575'
  34.             'SKIP'
  35.             '4feb575f74fb3a74b6245400460230141bf610f235ef3a25008cfe6137828620'
  36.             'SKIP'
  37.             '542d7aadd21e7fe35bea0a7912bc965f08a1a566746cebcca76f96dcfeb74dc3'
  38.             'SKIP'
  39.             '5702053503d49448598eda1b8dc8c263f0df9ad7486833273e3987b5dec25a19'
  40.             'c964eecdfb0cbf4d2a59a553d7bdb3f16e70d8910e6aa7e9c768828ecbdfcea2'
  41.             '312574e655f9a87784ca416949c505c452b819fad3061f2cde8aced6540a19a3'
  42.             '597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
  43. validpgpkeys=('11E521D646982372EB577A1F8F0871F202119294')
  44.  
  45. prepare() {
  46.   cd "$srcdir/llvm-$pkgver.src"
  47.  
  48.   # At the present, clang must reside inside the LLVM source code tree to build
  49.   # See http://llvm.org/bugs/show_bug.cgi?id=4840
  50.   mv "$srcdir/cfe-$pkgver.src" tools/clang
  51.  
  52.   mv "$srcdir/compiler-rt-$pkgver.src" projects/compiler-rt
  53.  
  54.   # Fix docs installation directory
  55.   sed -i 's:$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \
  56.     Makefile.config.in
  57.  
  58.   # Fix definition of LLVM_CMAKE_DIR in LLVMConfig.cmake
  59.   sed -i '/@LLVM_CONFIG_CMAKE_DIR@/s:$(PROJ_cmake):$(PROJ_prefix)/share/llvm/cmake:' \
  60.     cmake/modules/Makefile
  61.  
  62.   # Fix build with GCC 4.9 (patch from Debian)
  63.   # http://llvm.org/bugs/show_bug.cgi?id=20067
  64.   patch -Np1 -i ../llvm-3.5.0-force-link-pass.o.patch
  65.  
  66.   # Fix build with GCC 5.1
  67.   # http://llvm.org/viewvc/llvm-project?view=revision&revision=218295
  68.   patch -Np0 -i ../gcc5.patch
  69. }
  70.  
  71. build() {
  72.   cd "$srcdir/llvm-$pkgver.src"
  73.  
  74.   # Include location of libffi headers in CPPFLAGS
  75.   CPPFLAGS+=" $(pkg-config --cflags libffi)"
  76.  
  77.   # Force the use of GCC instead of clang
  78.   CC=gcc CXX=g++ \
  79.   ./configure \
  80.     --prefix=/usr \
  81.     --sysconfdir=/etc \
  82.     --enable-shared \
  83.     --enable-optimized \
  84.     --enable-libffi \
  85.     --enable-targets=all \
  86.     --disable-assertions \
  87.     --with-binutils-include=/usr/include \
  88.     --with-python=/usr/bin/python2
  89.  
  90.   make REQUIRES_RTTI=1
  91.   make -C docs -f Makefile.sphinx man
  92.   make -C docs -f Makefile.sphinx html
  93.   make -C tools/clang/docs -f Makefile.sphinx html
  94. }
  95.  
  96. package_llvm35() {
  97.   pkgdesc="Low Level Virtual Machine"
  98.   depends=("llvm35-libs=$pkgver-$pkgrel" 'perl')
  99.   conflicts=('llvm')
  100.  
  101.   cd "$srcdir/llvm-$pkgver.src"
  102.  
  103.   # We move the clang directory out of the tree so it won't get installed and
  104.   # then we bring it back in for the clang package
  105.   mv tools/clang "$srcdir"
  106.  
  107.   make DESTDIR="$pkgdir" install
  108.   mv "$srcdir/clang" tools/
  109.  
  110.   # The runtime library goes into llvm35-libs
  111.   mv -f "$pkgdir/usr/lib/libLLVM-$pkgver.so" "$srcdir/"
  112.   mv -f "$pkgdir/usr/lib/libLLVM-${pkgver%.*}.so" "$srcdir/"
  113.  
  114.   # Fix permissions of static libs
  115.   chmod -x "$pkgdir"/usr/lib/*.a
  116.  
  117.   # Get rid of example Hello transformation
  118.   rm "$pkgdir"/usr/lib/*LLVMHello.*
  119.  
  120.   # Remove LTO libs which conflict with llvm-libs
  121.   rm "$pkgdir"/usr/lib/{LLVMgold,libLTO,BugpointPasses}.so
  122.  
  123.   if [[ $CARCH == x86_64 ]]; then
  124.     # Needed for multilib (https://bugs.archlinux.org/task/29951)
  125.     # Header stubs are taken from Fedora
  126.     for _header in config llvm-config; do
  127.       mv "$pkgdir/usr/include/llvm/Config/$_header"{,-64}.h
  128.       cp "$srcdir/llvm-Config-$_header.h" \
  129.         "$pkgdir/usr/include/llvm/Config/$_header.h"
  130.     done
  131.   fi
  132.  
  133.   # Install man pages
  134.   install -d "$pkgdir/usr/share/man/man1"
  135.   cp docs/_build/man/*.1 "$pkgdir/usr/share/man/man1/"
  136.  
  137.   # Install html docs
  138.   cp -r docs/_build/html/* "$pkgdir/usr/share/doc/llvm/html/"
  139.   rm -r "$pkgdir/usr/share/doc/llvm/html/_sources"
  140.  
  141.   install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  142. }
  143.  
  144. package_llvm35-libs() {
  145.   pkgdesc="Low Level Virtual Machine (runtime library)"
  146.   depends=('gcc-libs' 'zlib' 'libffi' 'ncurses')
  147.  
  148.   install -d "$pkgdir/usr/lib"
  149.   cp -P \
  150.     "$srcdir/libLLVM-$pkgver.so" \
  151.     "$srcdir/libLLVM-${pkgver%.*}.so" \
  152.     "$pkgdir/usr/lib/"
  153.  
  154.   install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
  155.     "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  156. }
  157.  
  158. package_clang35() {
  159.   pkgdesc="C language family frontend for LLVM"
  160.   url="http://clang.llvm.org/"
  161.   depends=("llvm35-libs=$pkgver-$pkgrel" 'gcc')
  162.   optdepends=('llvm-libs: for compiling with -flto')
  163.   conflicts=('clang')
  164.  
  165.   # Fix installation path for clang docs
  166.   sed -i 's:$(PROJ_prefix)/share/doc/llvm:$(PROJ_prefix)/share/doc/clang:' \
  167.     "$srcdir/llvm-$pkgver.src/Makefile.config"
  168.  
  169.   cd "$srcdir/llvm-$pkgver.src/tools/clang"
  170.  
  171.   make DESTDIR="$pkgdir" install
  172.  
  173.   # Fix permissions of static libs
  174.   chmod -x "$pkgdir"/usr/lib/*.a
  175.  
  176.   # Revert the path change in case we want to do a repackage later
  177.   sed -i 's:$(PROJ_prefix)/share/doc/clang:$(PROJ_prefix)/share/doc/llvm:' \
  178.     "$srcdir/llvm-$pkgver.src/Makefile.config"
  179.  
  180.   # Install html docs
  181.   cp -r docs/_build/html/* "$pkgdir/usr/share/doc/clang/html/"
  182.   rm -r "$pkgdir/usr/share/doc/clang/html/_sources"
  183.  
  184.   install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  185. }
  186.  
  187. #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement