diff options
author | Yurii Kolesnykov | 2019-04-06 12:04:26 +0200 |
---|---|---|
committer | Yurii Kolesnykov | 2019-04-06 12:04:26 +0200 |
commit | 5d98f5d8142dae94ea98be16323c7bc88963522b (patch) | |
tree | 5449028c30eeabed9305feecac0e3afed3cef9e0 | |
parent | 308416b0e5af2636ae42a1583ca2e5b740d6dbff (diff) | |
download | aur-5d98f5d8142dae94ea98be16323c7bc88963522b.tar.gz |
9.0.0_r313653.5182302a376
-rw-r--r-- | .SRCINFO | 54 | ||||
-rw-r--r-- | PKGBUILD | 264 |
2 files changed, 111 insertions, 207 deletions
@@ -1,48 +1,42 @@ pkgbase = lib32-llvm-git - pkgver = 8.0.0_r307160.40cd4b77e9a + pkgdesc = Collection of modular and reusable compiler and toolchain technologies (32-bit, git) + pkgver = 9.0.0_r313653.5182302a376 pkgrel = 1 url = https://llvm.org/ arch = x86_64 - license = custom:University of Illinois + license = custom:University of Illinois/NCSA Open Source License makedepends = cmake makedepends = gcc-multilib makedepends = git makedepends = lib32-libffi makedepends = lib32-libxml2 - makedepends = python2 - options = staticlibs - options = !strip - source = llvm::git+https://github.com/llvm/llvm-project.git - sha256sums = SKIP - -pkgname = lib32-llvm-git - pkgdesc = The LLVM Compiler Infrastructure (32-bit) - depends = lib32-llvm-libs-git=8.0.0_r307160.40cd4b77e9a-1 - depends = llvm-git - provides = lib32-llvm-svn - provides = lib32-llvm - conflicts = lib32-llvm-svn - conflicts = lib32-llvm - -pkgname = lib32-llvm-libs-git - pkgdesc = The LLVM Compiler Infrastructure (runtime libraries, 32-bit) + makedepends = lib32-zlib + makedepends = ninja + makedepends = python depends = lib32-gcc-libs depends = lib32-libffi depends = lib32-libxml2 depends = lib32-ncurses depends = lib32-zlib - provides = lib32-llvm-libs-svn + provides = lib32-clang + provides = lib32-clang-git + provides = lib32-clang-svn provides = lib32-llvm-libs - conflicts = lib32-llvm-libs-svn + provides = lib32-llvm-libs-git + provides = lib32-llvm-libs-svn + provides = lib32-llvm-svn + conflicts = lib32-clang + conflicts = lib32-clang-git + conflicts = lib32-clang-svn + conflicts = lib32-llvm conflicts = lib32-llvm-libs + conflicts = lib32-llvm-libs-git + conflicts = lib32-llvm-libs-svn + conflicts = lib32-llvm-svn + options = staticlibs + options = !strip + source = llvm::git+https://github.com/llvm/llvm-project.git + sha256sums = SKIP -pkgname = lib32-clang-git - pkgdesc = C language family frontend for LLVM (32-bit) - url = https://clang.llvm.org/ - depends = clang - depends = lib32-llvm-git=8.0.0_r307160.40cd4b77e9a-1 - provides = lib32-clang-svn - provides = lib32-clang - conflicts = lib32-clang-svn - conflicts = lib32-clang +pkgname = lib32-llvm-git @@ -9,54 +9,52 @@ # Contributor: Tomas Lindquist Olsen <tomas@famolsen.dk> # Contributor: Tomas Wilhelmsson <tomas.wilhelmsson@gmail.com> -pkgbase=lib32-llvm-git - -pkgname=( - 'lib32-llvm-git' - 'lib32-llvm-libs-git' - 'lib32-clang-git' -) +pkgname=lib32-llvm-git _pkgname='llvm' - -pkgver=8.0.0_r307160.40cd4b77e9a +pkgdesc="Collection of modular and reusable compiler and toolchain technologies (32-bit, git)" +pkgver=9.0.0_r313653.5182302a376 pkgrel=1 - arch=('x86_64') url='https://llvm.org/' -license=('custom:University of Illinois') - +license=('custom:University of Illinois/NCSA Open Source License') makedepends=( - 'cmake' - 'gcc-multilib' - 'git' - 'lib32-libffi' - 'lib32-libxml2' - 'python2' -) - + 'cmake' + 'gcc-multilib' + 'git' + 'lib32-libffi' + 'lib32-libxml2' + 'lib32-zlib' + 'ninja' + 'python') +depends=( + 'lib32-gcc-libs' + 'lib32-libffi' + 'lib32-libxml2' + 'lib32-ncurses' + 'lib32-zlib') +provides=( + 'lib32-clang' + 'lib32-clang-git' + 'lib32-clang-svn' + 'lib32-llvm-libs' + 'lib32-llvm-libs-git' + 'lib32-llvm-libs-svn' + 'lib32-llvm-svn') +conflicts=( + 'lib32-clang' + 'lib32-clang-git' + 'lib32-clang-svn' + 'lib32-llvm' + 'lib32-llvm-libs' + 'lib32-llvm-libs-git' + 'lib32-llvm-libs-svn' + 'lib32-llvm-svn') # this is always the latest svn so debug info can be useful options=('staticlibs' '!strip') -source=( - "${_pkgname}::git+https://github.com/llvm/llvm-project.git" -) - +source=("${_pkgname}::git+https://github.com/llvm/llvm-project.git") sha256sums=('SKIP') -# -# BEGIN INTERNAL VARIABLES AND FUNCTIONS -# - -# Install the license file for a package -# Arguments: NONE -_install_license() { - install -D -m 0644 "${srcdir}/${_pkgname}/LICENSE.TXT" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -} - -# -# END INTERNAL VARIABLES AND FUNCTIONS -# - pkgver() { cd "${srcdir}/${_pkgname}/${_pkgname}" @@ -73,154 +71,66 @@ pkgver() { prepare() { mkdir -p "${srcdir}/build" - # Somehow CMake finds the 64-bit library in /lib first, - # so let's preseed CMAKE_LIBRARY_PATH with /lib32. - sed -i \ - '/^[[:blank:]]*find_library(FFI_LIBRARY_PATH/i\ - list(INSERT CMAKE_LIBRARY_PATH 0 /usr/lib32)' \ - "${srcdir}/${_pkgname}/${_pkgname}/cmake/config-ix.cmake" } build() { - cd "${srcdir}/build" - - export PKG_CONFIG_PATH='/usr/lib32/pkgconfig' - - # LLVM_BUILD_LLVM_DYLIB: Build the dynamic runtime libraries (e.g. libLLVM.so). - # LLVM_LINK_LLVM_DYLIB: Link our own tools against the libLLVM dynamic library, too. - # LLVM_BINUTILS_INCDIR: Set to binutils' plugin-api.h location in order to build LLVMgold. - # LLVM_TARGET_ARCH: Theoretically, LLVM_BUILD_32_BITS should be used instead, which - # would also make CMAKE_C{,XX}_FLAGS redundant, but that option - # makes linking fail, because of incompatible architectures. - cmake -G 'Unix Makefiles' \ - -DCMAKE_BUILD_TYPE:STRING=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/usr \ - -DLLVM_LIBDIR_SUFFIX:STRING=32 \ - -DCMAKE_C_FLAGS:STRING=-m32 \ - -DCMAKE_CXX_FLAGS:STRING=-m32 \ - -DLLVM_APPEND_VC_REV:BOOL=ON \ - -DLLVM_ENABLE_RTTI:BOOL=ON \ - -DLLVM_TARGET_ARCH:STRING=i386 \ - -DLLVM_ENABLE_FFI:BOOL=ON \ - -DFFI_INCLUDE_DIR:PATH="$(pkg-config --variable=includedir libffi)" \ - -DFFI_LIBRARY_DIR:PATH="$(pkg-config --variable=libdir libffi)" \ - -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ - -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ - -DLLVM_BINUTILS_INCDIR:PATH=/usr/include \ - -DCMAKE_C_FLAGS="$CFLAGS" \ - -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ - "../${_pkgname}/${_pkgname}" - - # Must run this target independently, or else docs/cmake_install.cmake will fail. - # - # NOTICE: We don't need the documentation for the multilib package, but running - # this target is still required if ocaml-{ctypes,findlib} happen to be installed. - # While it's always a good idea to build the packages in a clean chroot, let's be - # a bit more user friendly (and reduce the number of complaints). - [[ $(pacman -Qq ocaml-{ctypes,findlib} 2>/dev/null | wc -l) -eq 2 ]] && make ocaml_doc - - make + export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" + + cd "${srcdir}/build" + cmake -G Ninja \ + -DLLVM_ENABLE_PROJECTS='clang' \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DPYTHON_EXECUTABLE=/usr/bin/python \ + -DLLVM_LIBDIR_SUFFIX=32 \ + -DCMAKE_C_FLAGS:STRING=-m32 \ + -DCMAKE_CXX_FLAGS:STRING=-m32 \ + -DLLVM_TARGET_ARCH:STRING=i686 \ + -DLLVM_CONFIG="/usr/bin/llvm-config32" \ + -DLLVM_HOST_TRIPLE=$CHOST \ + -DLLVM_DEFAULT_TARGET_TRIPLE="i686-pc-linux-gnu" \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_BINDINGS=OFF \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_ENABLE_DOXYGEN=OFF \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ + -DLLVM_BINUTILS_INCDIR=/usr/include \ + "../${_pkgname}/${_pkgname}" + + ninja all } -package_lib32-llvm-git() { - pkgdesc='The LLVM Compiler Infrastructure (32-bit)' - depends=( - "lib32-llvm-libs-git=${pkgver}-${pkgrel}" - 'llvm-git' - ) - provides=('lib32-llvm-svn' 'lib32-llvm') - conflicts=('lib32-llvm-svn' 'lib32-llvm') - - cd "${srcdir}/build" - - # Exclude the clang directory, since it'll be installed in a separate package - sed -i \ - "s|^\([[:blank:]]*include(\"${srcdir}/build/tools/clang/cmake_install.cmake\")\)$|#\1|" \ - tools/cmake_install.cmake - - make DESTDIR="${pkgdir}" install - - # The runtime libraries get installed in llvm-libs-svn - rm -f "${pkgdir}"/usr/lib32/lib{LLVM,LTO}{,-*}.so{,.*} - mv -f "${pkgdir}"/usr/lib32/{BugpointPasses,LLVMgold}.so "${srcdir}/" - - # Clang libraries go to a separate package - rm -rf "${srcdir}/clang" - mv "${pkgdir}/usr/lib32/clang" "${srcdir}/clang" - - # Get rid of example Hello transformation - rm -f "${pkgdir}"/usr/lib32/*LLVMHello.* - - # Remove all bits that we don't need in multilib - # Note that `find` will always fail because of the non-empty directories - echo 'NOTE: The errors "find: cannot delete ... Directory not empty"' - echo ' that immediately follow are harmless and safe to ignore.' - find "${pkgdir}/usr/" \ - -not -path "${pkgdir}/usr/bin/llvm-config" \ - -not -path "${pkgdir}/usr/include/llvm/Config/llvm-config.h" \ - -not -path "${pkgdir}/usr/lib32/*" \ - -delete || true - - # Fix names for multilib - mv "${pkgdir}"/usr/bin/llvm-config{,32} - mv "${pkgdir}"/usr/include/llvm/Config/llvm-config{,-32}.h - - _install_license -} +package() { + cd "${srcdir}/build" -package_lib32-llvm-libs-git() { - pkgdesc='The LLVM Compiler Infrastructure (runtime libraries, 32-bit)' - depends=( - 'lib32-gcc-libs' - 'lib32-libffi' - 'lib32-libxml2' - 'lib32-ncurses' - 'lib32-zlib' - ) - provides=('lib32-llvm-libs-svn' 'lib32-llvm-libs') - conflicts=('lib32-llvm-libs-svn' 'lib32-llvm-libs') - - cd "${srcdir}/build" - - make DESTDIR="${pkgdir}" install-{LLVM,LTO} - - # Moved from the llvm-svn package here - mv "${srcdir}"/{BugpointPasses,LLVMgold}.so "${pkgdir}/usr/lib32/" - - # Ref: https://llvm.org/docs/GoldPlugin.html - install -m755 -d "${pkgdir}/usr/lib32/bfd-plugins" - ln -s {/usr/lib32,"${pkgdir}/usr/lib32/bfd-plugins"}/LLVMgold.so - - # Since r262066 lto.h is also installed, but we don't need it in the -libs package. - rm -rf "${pkgdir}/usr/include" - - # Must have a symlink that corresponds to the output of `llvm-config --version`. - # Without it, some builds, e.g. Mesa, might fail for "lack of shared libraries". - _sover="$(echo ${pkgver} | cut -d . -f -1)svn" - # libLLVM.so.3.8.0svn-r123456 - ln -s "libLLVM-${_sover}.so" "${pkgdir}/usr/lib32/libLLVM.so.$(echo ${pkgver} | tr _ -)" - # libLLVM-3.8.0svn-r123456.so - ln -s "libLLVM-${_sover}.so" "${pkgdir}/usr/lib32/libLLVM-$(echo ${pkgver} | tr _ -).so" - - _install_license -} + DESTDIR="$pkgdir" ninja install + + # Fix permissions of static libs + chmod -x "$pkgdir"/usr/lib32/*.a + + mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/lib32/llvm-config" + mv "$pkgdir/usr/include/llvm/Config/llvm-config.h" \ + "$pkgdir/usr/lib32/llvm-config-32.h" -package_lib32-clang-git() { - pkgdesc='C language family frontend for LLVM (32-bit)' - url='https://clang.llvm.org/' - depends=( - 'clang' - "lib32-llvm-git=${pkgver}-${pkgrel}" - ) - provides=('lib32-clang-svn' 'lib32-clang') - conflicts=('lib32-clang-svn' 'lib32-clang') + rm -rf "$pkgdir"/usr/{bin,include,libexec,share/{doc,man,llvm,opt-viewer,scan-build,scan-view,clang}} + + # Needed for multilib (https://bugs.archlinux.org/task/29951) + # Header stub is taken from Fedora + install -d "$pkgdir/usr/include/llvm/Config" + mv "$pkgdir/usr/lib32/llvm-config-32.h" "$pkgdir/usr/include/llvm/Config/" - cd "${srcdir}/build/tools/clang" + # mv "$pkgdir/usr/lib32/llvm-config" "$pkgdir/usr/bin/llvm-config32" - make DESTDIR="${pkgdir}" install + install -d "$pkgdir/usr/lib32" - # Remove all bits that we don't need in multilib - rm -rf "${pkgdir}"/usr/{bin,include,libexec,share} + # 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" - _install_license + install -D -m 0644 "${srcdir}/${_pkgname}/${_pkgname}/LICENSE.TXT" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" } |