Advertisement
Guest User

Untitled

a guest
Apr 17th, 2025
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. # Maintainer: Evangelos Foutras <[email protected]>
  2. # Contributor: Jan "heftig" Steffens <[email protected]>
  3.  
  4. pkgname=('llvm' 'llvm-libs')
  5. pkgver=19.1.7
  6. pkgrel=1
  7. arch=('x86_64')
  8. url="https://llvm.org/"
  9. license=('Apache-2.0 WITH LLVM-exception')
  10. makedepends=('cmake' 'ninja' 'zlib' 'zstd' 'curl' 'libffi' 'libedit' 'libxml2'
  11. 'python-setuptools' 'python-psutil' 'python-sphinx'
  12. 'python-myst-parser')
  13. options=('staticlibs' '!lto') # tools/llvm-shlib/typeids.test fails with LTO
  14. _source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
  15. source=($_source_base/llvm-$pkgver.src.tar.xz{,.sig}
  16. $_source_base/cmake-$pkgver.src.tar.xz{,.sig}
  17. $_source_base/third-party-$pkgver.src.tar.xz{,.sig})
  18. sha256sums=('96f833c6ad99a3e8e1d9aca5f439b8fd2c7efdcf83b664e0af1c0712c5315910'
  19. 'SKIP'
  20. '11c5a28f90053b0c43d0dec3d0ad579347fc277199c005206b963c19aae514e3'
  21. 'SKIP'
  22. 'b96deca1d3097c7ffd4ff2bb904a50bdd56bec7ed1413ffb0d1d01af87b72c12'
  23. 'SKIP')
  24. validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard <[email protected]>
  25. 'D574BD5D1D0E98895E3BF90044F2485E45D59042') # Tobias Hieta <[email protected]>
  26.  
  27. # Utilizing LLVM_DISTRIBUTION_COMPONENTS to avoid
  28. # installing static libraries; inspired by Gentoo
  29. _get_distribution_components() {
  30. local target
  31. ninja -t targets | grep -Po 'install-\K.*(?=-stripped:)' | while read -r target; do
  32. case $target in
  33. llvm-libraries|distribution)
  34. continue
  35. ;;
  36. # shared libraries
  37. LLVM|LLVMgold)
  38. ;;
  39. # libraries needed for clang-tblgen
  40. LLVMDemangle|LLVMSupport|LLVMTableGen)
  41. ;;
  42. # used by lldb
  43. LLVMDebuginfod)
  44. ;;
  45. # testing libraries
  46. LLVMTestingAnnotations|LLVMTestingSupport)
  47. ;;
  48. # exclude llvm-exegesis (doesn't seem useful without libpfm)
  49. llvm-exegesis)
  50. continue
  51. ;;
  52. esac
  53. echo $target
  54. done
  55. }
  56.  
  57. prepare() {
  58. rename -v -- "-$pkgver.src" '' {cmake,third-party}-$pkgver.src
  59. cd llvm-$pkgver.src
  60. mkdir build
  61.  
  62. # Remove CMake find module for zstd; breaks if out of sync with upstream zstd
  63. rm cmake/modules/Findzstd.cmake
  64. }
  65.  
  66. build() {
  67. cd llvm-$pkgver.src/build
  68.  
  69. # Build only minimal debug info to reduce size
  70. CFLAGS=${CFLAGS/-g /-g1 }
  71. CXXFLAGS=${CXXFLAGS/-g /-g1 }
  72.  
  73. local cmake_args=(
  74. -G Ninja
  75. -DCMAKE_BUILD_TYPE=Release
  76. -DCMAKE_INSTALL_DOCDIR=share/doc
  77. -DCMAKE_INSTALL_PREFIX=/usr
  78. -DCMAKE_SKIP_RPATH=ON
  79. -DLLVM_BINUTILS_INCDIR=/usr/include
  80. -DLLVM_BUILD_DOCS=ON
  81. -DLLVM_BUILD_LLVM_DYLIB=ON
  82. -DLLVM_BUILD_TESTS=ON
  83. -DLLVM_ENABLE_BINDINGS=OFF
  84. -DLLVM_ENABLE_CURL=ON
  85. -DLLVM_ENABLE_FFI=ON
  86. -DLLVM_ENABLE_RTTI=ON
  87. -DLLVM_ENABLE_SPHINX=ON
  88. -DLLVM_HOST_TRIPLE=$CHOST
  89. -DLLVM_INCLUDE_BENCHMARKS=OFF
  90. -DLLVM_INSTALL_GTEST=ON
  91. -DLLVM_INSTALL_UTILS=ON
  92. -DLLVM_LINK_LLVM_DYLIB=ON
  93. -DLLVM_USE_PERF=ON
  94. -DSPHINX_WARNINGS_AS_ERRORS=OFF
  95. )
  96.  
  97. cmake .. "${cmake_args[@]}"
  98. local distribution_components=$(_get_distribution_components | paste -sd\;)
  99. test -n "$distribution_components"
  100. cmake_args+=(-DLLVM_DISTRIBUTION_COMPONENTS="$distribution_components")
  101.  
  102. cmake .. "${cmake_args[@]}"
  103. ninja
  104. }
  105.  
  106. check() {
  107. cd llvm-$pkgver.src/build
  108. LD_LIBRARY_PATH=$PWD/lib ninja check
  109. }
  110.  
  111. package_llvm() {
  112. pkgdesc="Compiler infrastructure"
  113. depends=('llvm-libs' 'curl' 'perl')
  114.  
  115. cd llvm-$pkgver.src/build
  116.  
  117. DESTDIR="$pkgdir" ninja install-distribution
  118.  
  119. # Include lit for running lit-based tests in other projects
  120. pushd ../utils/lit
  121. python3 setup.py install --root="$pkgdir" -O1
  122. popd
  123.  
  124. # The runtime libraries go into llvm-libs
  125. mv -f "$pkgdir"/usr/lib/lib{LLVM,LTO,Remarks}*.so* "$srcdir"
  126. mv -f "$pkgdir"/usr/lib/{LLVMgold.so,*.a} "$srcdir"
  127.  
  128. # Remove documentation sources
  129. rm -r "$pkgdir"/usr/share/doc/llvm/html/{_sources,.buildinfo}
  130.  
  131. install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  132. }
  133.  
  134. package_llvm-libs() {
  135. pkgdesc="LLVM runtime libraries"
  136. depends=('gcc-libs' 'zlib' 'zstd' 'libffi' 'libedit' 'libxml2')
  137. provides=('libLLVM.so' 'libLTO.so' 'libRemarks.so')
  138.  
  139. install -d "$pkgdir/usr/lib"
  140. cp -P \
  141. "$srcdir"/lib{LLVM,LTO,Remarks}*.so* \
  142. "$srcdir"/{LLVMgold.so,*.a} \
  143. "$pkgdir/usr/lib/"
  144.  
  145. # Symlink LLVMgold.so from /usr/lib/bfd-plugins
  146. # https://bugs.archlinux.org/task/28479
  147. install -d "$pkgdir/usr/lib/bfd-plugins"
  148. ln -s ../LLVMgold.so "$pkgdir/usr/lib/bfd-plugins/LLVMgold.so"
  149.  
  150. install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
  151. "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  152. }
  153.  
  154. # vim:set ts=2 sw=2 et:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement