aboutsummaryrefslogtreecommitdiffstats
path: root/community/llvm3.7
diff options
context:
space:
mode:
Diffstat (limited to 'community/llvm3.7')
-rw-r--r--community/llvm3.7/APKBUILD158
-rw-r--r--community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch41
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
-