diff options
Diffstat (limited to 'community')
-rw-r--r-- | community/llvm3.7/APKBUILD | 158 | ||||
-rw-r--r-- | community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch | 41 |
2 files changed, 88 insertions, 111 deletions
diff --git a/community/llvm3.7/APKBUILD b/community/llvm3.7/APKBUILD index b5c629f17a..e4eee15acc 100644 --- a/community/llvm3.7/APKBUILD +++ b/community/llvm3.7/APKBUILD @@ -2,34 +2,17 @@ # Contributor: Mitch Tishmack <mitch.tishmack@gmail.com> # Contributor: Jakub Jirutka <jakub@jirutka.cz> # Maintainer: Travis Tilley <ttilley@gmail.com> -pkgname=llvm3.7 _pkgname=llvm -_majorver=3.7 -pkgver=$_majorver.1 -pkgrel=4 +pkgver=3.7.1 +_majorver=${pkgver%.*} +pkgname=$_pkgname$_majorver +pkgrel=5 pkgdesc="Low Level Virtual Machine compiler system (version $_majorver)" arch="all" url="http://llvm.org/" license="UOI-NCSA" -depends="" -depends_dev="$pkgname-libs" -makedepends=" - binutils-dev - bison - chrpath - cmake - file - flex - groff - isl-dev - libffi-dev - make - paxmark - py-sphinx - python2 - python2-dev - zlib-dev - " +depends_dev="$pkgname=$pkgver-r$pkgrel" +makedepends="binutils-dev chrpath cmake file libffi-dev paxmark python2 zlib-dev" subpackages="$pkgname-static $pkgname-libs $pkgname-dev" source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch @@ -57,31 +40,22 @@ builddir="$srcdir/$_pkgname-$pkgver.src" # don't expect these files to have a sufix. # # So, we install all the LLVM files into /usr/lib/llvm-$_majorver. -# BTW, Debian do the same thing. +# BTW, Fedora and Debian do the same thing. # -_prefix="usr/lib/llvm-$_majorver" -ldpath="/$_prefix/lib" +_prefix="usr/lib/llvm$_majorver" prepare() { + default_prepare cd "$builddir" - mkdir -p "$builddir"/build - update_config_sub || return 1 - - # Apply patches while ignoring whitespace changes. - local i; for i in $source; do - case $i in - *.patch) - msg "Applying $i..." - patch --ignore-whitespace -s -p1 -N -i "$srcdir"/$i || return 1 - ;; - esac - done + update_config_sub # Remove some tests that fails. rm test/tools/llvm-objdump/macho-compact-unwind-x86_64.test \ test/tools/llvm-objdump/macho-compact-unwind-i386.test \ - test/Transforms/GlobalOpt/alias-used.ll || return 1 + test/Transforms/GlobalOpt/alias-used.ll + + mkdir -p "$builddir"/build } build() { @@ -94,10 +68,9 @@ build() { -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/$_prefix \ -DCMAKE_VERBOSE_MAKEFILE=NO \ - \ -DFFI_INCLUDE_DIR="$ffi_include_dir" \ -DLLVM_BINUTILS_INCDIR=/usr/include \ - -DLLVM_BUILD_DOCS=ON \ + -DLLVM_BUILD_DOCS=OFF \ -DLLVM_BUILD_EXAMPLES=OFF \ -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \ -DLLVM_BUILD_LLVM_DYLIB=ON \ @@ -115,47 +88,69 @@ build() { -DLLVM_ENABLE_ZLIB=ON \ -DLLVM_HOST_TRIPLE="$CHOST" \ -DLLVM_INCLUDE_EXAMPLES=OFF \ - -DLLVM_TARGETS_TO_BUILD=all \ - \ - "$builddir" || return 1 + -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;SystemZ;AMDGPU;NVPTX;Mips;BPF' \ + "$builddir" - make llvm-tblgen || return 1 - make || return 1 + make llvm-tblgen + make - paxmark m bin/llvm-rtdyld \ + paxmark m \ + bin/llvm-rtdyld \ bin/lli \ bin/lli-child-target \ unittests/ExecutionEngine/MCJIT/MCJITTests \ - unittests/Support/SupportTests || return 1 + unittests/Support/SupportTests +} +check() { + cd "$builddir"/build + + # ARM has few failures in test suite that we don't care about currently. case "$CARCH" in - arm*) - # ARM has few failures in test suite - # that we don't care about currently. - ;; - *) - make check-llvm || return 1 - ;; + arm*) make check-llvm || true;; + *) make check-llvm;; esac } package() { cd "$builddir"/build - make DESTDIR="$pkgdir" install || return 1 + + make DESTDIR="$pkgdir" install + + # This tool is needed e.g. for running codegen tests in Rust package. + install -D -m 755 bin/FileCheck "$pkgdir"/$_prefix/bin/FileCheck cd "$pkgdir"/$_prefix # Remove RPATHs. file lib/*.so bin/* \ | awk -F: '$2~/ELF/{print $1}' \ - | xargs -r chrpath -d || return 1 + | xargs -r chrpath -d - # Symlink files in bindir to /usr/bin with version suffix. + # Symlink files from /usr/lib/llvm*/bin to /usr/bin. mkdir -p "$pkgdir"/usr/bin - local path; for path in bin/*; do - ln -s ../lib/llvm-$_majorver/$path \ - "$pkgdir"/usr/$path-$_majorver || return 1 + local name path + for path in bin/*; do + name=${path##*/} + case "$name" in + FileCheck | obj2yaml | yaml2obj) continue;; + esac + ln -s ../lib/llvm$_majorver/bin/$name "$pkgdir"/usr/bin/$name-$_majorver done + + # Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/ + # and symlink it back. + _mv include/* "$pkgdir"/usr/include/$pkgname/ + rmdir include + ln -s ../../include/$pkgname include + + # Move /usr/lib/$pkgname/share/llvm/cmake/ into /usr/lib/cmake/$pkgname/ + # and symlink it back. + _mv share/llvm/cmake/* "$pkgdir"/usr/lib/cmake/$pkgname/ + rmdir share/llvm/cmake + ln -s ../../../cmake/$pkgname share/llvm/cmake + + ln -s libLTO-$_majorver.so lib/libLTO.so } static() { @@ -165,30 +160,37 @@ static() { } libs() { - pkgdesc="LLVM $_majorver runtime libraries" + pkgdesc="LLVM $_majorver runtime library" local soname="libLLVM-$_majorver.so" + local soname2="libLLVM-$pkgver.so" mkdir -p "$subpkgdir" cd "$subpkgdir" # libLLVM should be in /usr/lib. This is needed for binaries that are # dynamically linked with libLLVM, so they can find it on default path. - _mv "$pkgdir"/$_prefix/lib/$soname usr/lib/ || return 1 - ln -s $soname usr/lib/${soname/$_majorver/$pkgver} || return 1 + _mv "$pkgdir"/$_prefix/lib/$soname usr/lib/ + ln -s $soname usr/lib/$soname2 # And also symlink it back to the LLVM prefix. mkdir -p $_prefix/lib - ln -s ../../$soname $_prefix/lib/$soname || return 1 - ln -s ../../$soname $_prefix/lib/${soname/$_majorver/$pkgver} + ln -s ../../$soname $_prefix/lib/$soname + ln -s ../../$soname $_prefix/lib/$soname2 } dev() { - default_dev || return 1 - + default_dev cd "$subpkgdir" - _mv "$pkgdir"/$_prefix/share "$pkgdir"/$_prefix/lib $_prefix/ || return 1 - _mv "$pkgdir"/$_prefix/bin/llvm-config $_prefix/bin/ || return 1 + _mv "$pkgdir"/$_prefix/lib \ + "$pkgdir"/$_prefix/share \ + "$pkgdir"/$_prefix/include \ + $_prefix/ + + _mv "$pkgdir"/$_prefix/bin/FileCheck \ + "$pkgdir"/$_prefix/bin/llvm-config \ + $_prefix/bin/ + _mv "$pkgdir"/usr/bin/llvm-config-* usr/bin/ } @@ -198,22 +200,8 @@ _mv() { mv $@ } -md5sums="bf8b3a2c79e61212c5409041dfdbd319 llvm-3.7.1.src.tar.xz -b370ea6589931c560a92699b890dd888 llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch -b0cd098117223159b76e96c3f884536b llvm-0002-Fix-build-with-musl-libc.patch -9cc5050619f764ca9dc842a5ab122290 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch -785147afd8ab80fa95955a5637b6582f llvm-nm-workaround.patch -57d95aabd731eca1c1411ceb1894120c config.guess.patch -a263b29c441c1c83b12535a3f9fd3410 cmake-fix-libLLVM-name.patch" -sha256sums="be7794ed0cec42d6c682ca8e3517535b54555a3defabec83554dbc74db545ad5 llvm-3.7.1.src.tar.xz -6018671b549f3043ab4d7100956f0e05092d83de72b88edea199c91d5755d819 llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch -e1b0fd5f6918d8c8404f3ec4b8d3ab8fbe8dadc2d6011792349b56e5e8ee51e2 llvm-0002-Fix-build-with-musl-libc.patch -fc28356bf0d5fcfe9b99e28f4abbc2f49f50d263b44e428e30f33bf5472747b4 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch -1870f910a6f5f2ba6144bd079ec55ed879fe8fd8b1b1b384935f36da43e5f114 llvm-nm-workaround.patch -10a719450c48433756c9f7a51593f415758ac587911349b22f7d440415a0c6d5 config.guess.patch -e3a9d29441e5a701deb5d89b00ba0b93103ca1aef3f9dffe97f2378aca0e9ef6 cmake-fix-libLLVM-name.patch" sha512sums="ac521debc02f6deba96ef975d6a546b0c5c77299c1dbf5e1b87a7974ff5e7fd715bd7e384b92d9adf572ce47130bdbf6d3c648eb0d7f72f16f976292e4909e90 llvm-3.7.1.src.tar.xz -64388ca3100fd36dfcfa7ba8ec8eb8dd40a7388d4363952ec9b4012e5b82494bd445a1b46506b479283121ec2f74fe3dc07b154f5c76db27b6f5b1af50c265aa llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch +7a74abc15d8abb4ef4884469544168bfefb6859166f041c7d766157d77b20ea5b6bb06ffc0dd4f6965eab95294102f060d7a969e778ec933d2859c4900ec7380 llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch 4cb3fabbb627b596ce398ed717c66ad20bbea7092ba30751520cc5a63d38e1ac53d23e98a6ad82121ddcf2434383ba5cadbc2990f99a4528e99c6e2160c2f725 llvm-0002-Fix-build-with-musl-libc.patch 19bfb9282455d39d07dbb2b1293b03a45c57d522fbb9c5e58dac034200669628b97e7a90cd4ff5d52d9bb79acfccbef653d8a1140a7f0589ecd6f9b7c4ba0eb6 llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch 11db6f3c5d697bc536c7d053530f7a5572756185e16399c32c31306861b58046ca9bc14b8d8097758c00a8c1a7026cbfb75636c0e697e59c53dda5848f93b006 llvm-nm-workaround.patch diff --git a/community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch b/community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch index 15f255aa38..d3e06ec1ac 100644 --- a/community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch +++ b/community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch @@ -10,11 +10,9 @@ Subject: [PATCH 1/3] Add Musl, MuslEABI and Musl EABIHF triples lib/Target/ARM/ARMTargetMachine.cpp | 2 ++ 4 files changed, 23 insertions(+) -diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h -index e01db0a..2fc4fc1 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h -@@ -174,6 +174,10 @@ public: +@@ -167,6 +167,10 @@ EABIHF, Android, @@ -25,25 +23,23 @@ index e01db0a..2fc4fc1 100644 MSVC, Itanium, Cygnus, -@@ -544,6 +548,13 @@ public: - /// Tests whether the target is Android - bool isAndroid() const { return getEnvironment() == Triple::Android; } - +@@ -548,6 +552,13 @@ + /// setOSAndEnvironmentName - Set the operating system and optional + /// environment components with a single string. + void setOSAndEnvironmentName(StringRef Str); ++ + /// Tests whether the target is musl libc + bool isMusl() const { + return getEnvironment() == Triple::Musl || + getEnvironment() == Triple::MuslEABI || + getEnvironment() == Triple::MuslEABIHF; + } -+ + /// @} - /// @name Mutators - /// @{ -diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp -index 11afcf7..d90a06a 100644 + /// @name Helpers to build variants of a particular triple. --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp -@@ -199,6 +199,9 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { +@@ -192,6 +192,9 @@ case CODE16: return "code16"; case EABI: return "eabi"; case EABIHF: return "eabihf"; @@ -53,7 +49,7 @@ index 11afcf7..d90a06a 100644 case Android: return "android"; case MSVC: return "msvc"; case Itanium: return "itanium"; -@@ -454,6 +457,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { +@@ -427,6 +430,9 @@ .StartsWith("code16", Triple::CODE16) .StartsWith("gnu", Triple::GNU) .StartsWith("android", Triple::Android) @@ -63,7 +59,7 @@ index 11afcf7..d90a06a 100644 .StartsWith("msvc", Triple::MSVC) .StartsWith("itanium", Triple::Itanium) .StartsWith("cygnus", Triple::Cygnus) -@@ -1431,6 +1437,7 @@ StringRef Triple::getARMCPUForArch(StringRef MArch) const { +@@ -1326,6 +1332,7 @@ switch (getEnvironment()) { case llvm::Triple::EABIHF: case llvm::Triple::GNUEABIHF: @@ -71,11 +67,9 @@ index 11afcf7..d90a06a 100644 return "arm1176jzf-s"; default: return "arm7tdmi"; -diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h -index 4d54e57..7ed7ab7 100644 --- a/lib/Target/ARM/ARMSubtarget.h +++ b/lib/Target/ARM/ARMSubtarget.h -@@ -405,8 +405,10 @@ public: +@@ -381,8 +381,10 @@ bool isTargetEHABICompatible() const { return (TargetTriple.getEnvironment() == Triple::EABI || TargetTriple.getEnvironment() == Triple::GNUEABI || @@ -83,10 +77,10 @@ index 4d54e57..7ed7ab7 100644 TargetTriple.getEnvironment() == Triple::EABIHF || TargetTriple.getEnvironment() == Triple::GNUEABIHF || + TargetTriple.getEnvironment() == Triple::MuslEABIHF || - TargetTriple.getEnvironment() == Triple::Android) && + TargetTriple.getEnvironment() == Triple::Android) && !isTargetDarwin() && !isTargetWindows(); } -@@ -415,6 +417,7 @@ public: +@@ -391,6 +393,7 @@ // FIXME: this is invalid for WindowsCE return TargetTriple.getEnvironment() == Triple::GNUEABIHF || TargetTriple.getEnvironment() == Triple::EABIHF || @@ -94,11 +88,9 @@ index 4d54e57..7ed7ab7 100644 isTargetWindows(); } bool isTargetAndroid() const { -diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp -index fca1901..25f5cf9 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp -@@ -101,6 +101,8 @@ computeTargetABI(const Triple &TT, StringRef CPU, +@@ -97,6 +97,8 @@ case llvm::Triple::GNUEABIHF: case llvm::Triple::EABIHF: case llvm::Triple::EABI: @@ -107,6 +99,3 @@ index fca1901..25f5cf9 100644 TargetABI = ARMBaseTargetMachine::ARM_ABI_AAPCS; break; case llvm::Triple::GNU: --- -2.7.3 - |