Skip to content
Snippets Groups Projects
PKGBUILD 4.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • Laurent Carlier's avatar
    Laurent Carlier committed
    # Maintainer: Laurent Carlier <lordheavym@gmail.com>
    # Contributor: Evangelos Foutras <foutrelis@gmail.com>
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    # Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    pkgname=('lib32-llvm' 'lib32-llvm-libs')
    
    pkgver=18.1.8
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    pkgrel=1
    
    epoch=1
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    arch=('x86_64')
    
    Antonio Rojas's avatar
    Antonio Rojas committed
    url="https://llvm.org/"
    
    license=('Apache-2.0 WITH LLVM-exception')
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    makedepends=('cmake' 'ninja' 'lib32-libffi' 'lib32-zlib' 'lib32-zstd' 'python'
                 'gcc-multilib' 'lib32-libxml2')
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    options=('staticlibs' '!lto') # tools/llvm-shlib/typeids.test fails with LTO
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    _source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    source=($_source_base/llvm-$pkgver.src.tar.xz{,.sig}
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
            $_source_base/cmake-$pkgver.src.tar.xz{,.sig}
            $_source_base/third-party-$pkgver.src.tar.xz{,.sig})
    
    sha256sums=('f68cf90f369bc7d0158ba70d860b0cb34dbc163d6ff0ebc6cfa5e515b9b2e28d'
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
                'SKIP'
    
                '59badef592dd34893cd319d42b323aaa990b452d05c7180ff20f23ab1b41e837'
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
                'SKIP'
    
                'b76b810f3d3dc5d08e83c4236cb6e395aa9bd5e3ea861e8c319b216d093db074'
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
                'SKIP')
    
    validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
    
    # Utilizing LLVM_DISTRIBUTION_COMPONENTS to avoid
    # installing static libraries; inspired by Gentoo
    _get_distribution_components() {
      local target
      ninja -t targets | grep -Po 'install-\K.*(?=-stripped:)' | while read -r target; do
        case $target in
          llvm-libraries|distribution)
            continue
            ;;
          # shared libraries
          LLVM|LLVMgold)
            ;;
          # libraries needed for clang-tblgen
          LLVMDemangle|LLVMSupport|LLVMTableGen)
            ;;
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
          # testing libraries
          LLVMTestingAnnotations|LLVMTestingSupport)
          	;;
    
          # exclude static libraries
          LLVM*)
            continue
            ;;
          # exclude llvm-exegesis (doesn't seem useful without libpfm)
          llvm-exegesis)
            continue
            ;;
        esac
        echo $target
      done
    }
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    prepare() {
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      rename -v -- "-$pkgver.src" '' {cmake,third-party}-$pkgver.src
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      cd llvm-$pkgver.src
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
    
      # Remove CMake find module for zstd; breaks if out of sync with upstream zstd
      rm cmake/modules/Findzstd.cmake
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    }
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    build() {
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      cd llvm-$pkgver.src/build
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    
      export PKG_CONFIG="i686-pc-linux-gnu-pkg-config"
    
      # Build only minimal debug info to reduce size
      CFLAGS+=' -g1'
      CXXFLAGS+=' -g1'
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    
      local cmake_args=(
        -G Ninja
        -DCMAKE_BUILD_TYPE=Release
        -DCMAKE_CXX_FLAGS:STRING=-m32
        -DCMAKE_C_FLAGS:STRING=-m32
        -DCMAKE_INSTALL_PREFIX=/usr
        -DCMAKE_SKIP_RPATH=ON
    
    Laurent Carlier's avatar
    Laurent Carlier committed
        -DLLVM_BINUTILS_INCDIR=/usr/include
    
        -DLLVM_BUILD_DOCS=OFF
        -DLLVM_BUILD_LLVM_DYLIB=ON
    
    Torsten Keßler's avatar
    Torsten Keßler committed
        -DLLVM_DEFAULT_TARGET_TRIPLE="i686-pc-linux-gnu"
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
        -DLLVM_ENABLE_BINDINGS=OFF
    
        -DLLVM_ENABLE_FFI=ON
        -DLLVM_ENABLE_RTTI=ON
        -DLLVM_ENABLE_SPHINX=OFF
        -DLLVM_HOST_TRIPLE=$CHOST
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
        -DLLVM_INCLUDE_BENCHMARKS=OFF
    
        -DLLVM_LIBDIR_SUFFIX=32
        -DLLVM_LINK_LLVM_DYLIB=ON
        -DLLVM_TARGET_ARCH:STRING=i686
    
        -DLLVM_USE_PERF=ON
    
    
      cmake .. "${cmake_args[@]}"
      local distribution_components=$(_get_distribution_components | paste -sd\;)
      test -n "$distribution_components"
      cmake_args+=(-DLLVM_DISTRIBUTION_COMPONENTS="$distribution_components")
    
    
      cmake .. "${cmake_args[@]}"
      ninja
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    package_lib32-llvm() {
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      pkgdesc="Compiler infrastructure (32-bit)"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      depends=('lib32-llvm-libs' 'llvm')
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      cd llvm-$pkgver.src/build
    
      DESTDIR="$pkgdir" ninja install-distribution
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      # The runtime library goes into lib32-llvm-libs
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      mv "$pkgdir"/usr/lib32/lib{LLVM,LTO,Remarks}*.so* "$srcdir"
    
      mv -f "$pkgdir"/usr/lib32/LLVMgold.so "$srcdir"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
      # Fix permissions of static libs
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      chmod -x "$pkgdir"/usr/lib32/*.a
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/lib32/llvm-config"
    
      rm -rf "$pkgdir"/usr/{bin,include,share/{doc,man,llvm,opt-viewer}}
    
      mkdir "$pkgdir"/usr/bin
      mv "$pkgdir/usr/lib32/llvm-config" "$pkgdir/usr/bin/llvm-config32"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    package_lib32-llvm-libs() {
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      pkgdesc="LLVM runtime libraries (32-bit) "
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      depends=('lib32-libffi' 'lib32-zlib' 'lib32-zstd' 'lib32-ncurses'
               'lib32-libxml2' 'lib32-gcc-libs')
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
      install -d "$pkgdir/usr/lib32"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
      cp -P \
    
    Evangelos Foutras's avatar
    Evangelos Foutras committed
        "$srcdir"/lib{LLVM,LTO,Remarks}*.so* \
    
        "$srcdir"/LLVMgold.so \
    
    Laurent Carlier's avatar
    Laurent Carlier committed
        "$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"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    
    
    Laurent Carlier's avatar
    Laurent Carlier committed
      install -Dm644 llvm-$pkgver.src/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    
    Laurent Carlier's avatar
    Laurent Carlier committed
    }