diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2016-08-17 22:10:34 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2016-08-17 22:10:34 +0200 |
commit | c7c00f22fa96aaaed4ef025e8381b44642306281 (patch) | |
tree | 854793394d51dc556162c5d44f8662e9eaa2e4cd /community/llvm3.7 | |
parent | 28eea326ce6605ee708cb1df0c67a3f90cdb5a79 (diff) | |
download | aports-c7c00f22fa96aaaed4ef025e8381b44642306281.tar.bz2 aports-c7c00f22fa96aaaed4ef025e8381b44642306281.tar.xz |
community/llvm3.7: move from testing
Diffstat (limited to 'community/llvm3.7')
-rw-r--r-- | community/llvm3.7/APKBUILD | 221 | ||||
-rw-r--r-- | community/llvm3.7/cmake-fix-libLLVM-name.patch | 76 | ||||
-rw-r--r-- | community/llvm3.7/config.guess.patch | 13 | ||||
-rw-r--r-- | community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch | 112 | ||||
-rw-r--r-- | community/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch | 35 | ||||
-rw-r--r-- | community/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch | 33 | ||||
-rw-r--r-- | community/llvm3.7/llvm-nm-workaround.patch | 27 |
7 files changed, 517 insertions, 0 deletions
diff --git a/community/llvm3.7/APKBUILD b/community/llvm3.7/APKBUILD new file mode 100644 index 0000000000..a929ea6dd6 --- /dev/null +++ b/community/llvm3.7/APKBUILD @@ -0,0 +1,221 @@ +# Contributor: Travis Tilley <ttilley@gmail.com> +# 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 +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 + python + python-dev + 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 + llvm-0002-Fix-build-with-musl-libc.patch + llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch + llvm-nm-workaround.patch + config.guess.patch + cmake-fix-libLLVM-name.patch + " +builddir="$srcdir/$_pkgname-$pkgver.src" + +# NOTE: It seems that there's no (sane) way how to change includedir, sharedir +# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and +# even LLVM-specific variables, that are related to these paths, actually +# don't work (in llvm 3.7). +# +# When building a software that depends on LLVM, utility llvm-config should be +# used to discover where is LLVM installed. It provides options to print +# path of bindir, includedir, and libdir separately, but in its source, all +# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it +# and move paths manually, but I'm really not sure what it may break... +# +# Also note that we should *not* add version suffix to files in llvm bindir! +# It breaks build system of some software that depends on LLVM, because they +# 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. +# +_prefix="usr/lib/llvm-$_majorver" +ldpath="/$_prefix/lib" + +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 + + # 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 +} + +build() { + cd "$builddir"/build + + # Auto-detect it by guessing either. + local ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')" + + cmake -G "Unix Makefiles" -Wno-dev \ + -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_EXAMPLES=OFF \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_BUILD_TESTS=ON \ + -DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \ + -DLLVM_DYLIB_EXPORT_ALL=ON \ + -DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_CXX1Y=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DLLVM_ENABLE_LIBCXX=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_ENABLE_SPHINX=OFF \ + -DLLVM_ENABLE_TERMINFO=ON \ + -DLLVM_ENABLE_ZLIB=ON \ + -DLLVM_HOST_TRIPLE="$CHOST" \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_TARGETS_TO_BUILD=all \ + \ + "$builddir" || return 1 + + make llvm-tblgen || return 1 + make || return 1 + + paxmark m bin/llvm-rtdyld \ + bin/lli \ + bin/lli-child-target \ + unittests/ExecutionEngine/MCJIT/MCJITTests \ + unittests/Support/SupportTests || return 1 + + case "$CARCH" in + arm*) + # ARM has few failures in test suite + # that we don't care about currently. + ;; + *) + make check-llvm || return 1 + ;; + esac +} + +package() { + cd "$builddir"/build + make DESTDIR="$pkgdir" install || return 1 + + cd "$pkgdir"/$_prefix + + # Remove RPATHs. + file lib/*.so bin/* \ + | awk -F: '$2~/ELF/{print $1}' \ + | xargs -r chrpath -d || return 1 + + # Symlink files in bindir to /usr/bin with version suffix. + mkdir -p "$pkgdir"/usr/bin + local path; for path in bin/*; do + ln -s ../lib/llvm-$_majorver/$path \ + "$pkgdir"/usr/$path-$_majorver || return 1 + done +} + +static() { + pkgdesc="LLVM $_majorver static libraries" + + _mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/ +} + +libs() { + pkgdesc="LLVM $_majorver runtime libraries" + local soname="libLLVM-$_majorver.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 + + # 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} +} + +dev() { + default_dev || return 1 + + cd "$subpkgdir" + + _mv "$pkgdir"/$_prefix/share "$pkgdir"/$_prefix/lib $_prefix/ || return 1 + _mv "$pkgdir"/$_prefix/bin/llvm-config $_prefix/bin/ || return 1 + _mv "$pkgdir"/usr/bin/llvm-config-* usr/bin/ +} + +_mv() { + local dest; for dest; do true; done # get last argument + mkdir -p "$dest" + 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 +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 +caf1c9466e8163f8844bd40095d1c3ce26c9e96dcb639f64833baca65a81708d39496e8c8ea65c7f11476d752265080998f1873b79cbc92b23349258e4dfa3ab config.guess.patch +52287dd37f62e0b51c487abe62a22440d3e9df2cb6144af45ba9ddc42848495fad533bf6b13f08e1b454ee653be9b8a14e02cf81f430a7d2c9be030889ef7f72 cmake-fix-libLLVM-name.patch" diff --git a/community/llvm3.7/cmake-fix-libLLVM-name.patch b/community/llvm3.7/cmake-fix-libLLVM-name.patch new file mode 100644 index 0000000000..600e32777f --- /dev/null +++ b/community/llvm3.7/cmake-fix-libLLVM-name.patch @@ -0,0 +1,76 @@ +From: Jakub Jirutka <jakub@jirutka.cz> +Date: Sun, 07 Aug 2016 12:37:00 +0200 +Subject: [PATCH] Include version in name of shared libs + +This change makes the CMake build system generate libraries for Linux and +Darwin matching the makefile build system. + +libLLVM.so -> libLLVM-$MAJOR.$MINOR.so +libLTO.so -> libLTO-$MAJOR.$MINOR.so + +See https://github.com/llvm-mirror/llvm/commit/61dbca10ea813ea3af447cc7ac2556a5e81211f9 + +--- a/cmake/modules/AddLLVM.cmake ++++ b/cmake/modules/AddLLVM.cmake +@@ -313,10 +313,12 @@ + # Same semantics as target_link_libraries(). + # ADDITIONAL_HEADERS + # May specify header files for IDE generators. ++# SONAME ++# Should set SONAME link flags and create symlinks + # ) + function(llvm_add_library name) + cmake_parse_arguments(ARG +- "MODULE;SHARED;STATIC" ++ "MODULE;SHARED;STATIC;SONAME" + "OUTPUT_NAME" + "ADDITIONAL_HEADERS;DEPENDS;LINK_COMPONENTS;LINK_LIBS;OBJLIBS" + ${ARGN}) +@@ -418,11 +420,6 @@ + PREFIX "" + ) + endif() +- +- set_target_properties(${name} +- PROPERTIES +- SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR} +- VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) + endif() + + if(ARG_MODULE OR ARG_SHARED) +@@ -483,7 +480,7 @@ + + macro(add_llvm_library name) + cmake_parse_arguments(ARG +- "SHARED" ++ "SHARED;SONAME" + "" + "" + ${ARGN}) +@@ -526,6 +523,15 @@ + -DCMAKE_INSTALL_COMPONENT=${name} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() ++ if(ARG_SHARED) ++ get_target_property(output_name ${name} OUTPUT_NAME) ++ if(${output_name} STREQUAL "output_name-NOTFOUND") ++ set(output_name ${name}) ++ endif() ++ set(library_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}) ++ set(api_name ${output_name}-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}) ++ set_target_properties(${name} PROPERTIES OUTPUT_NAME ${library_name}) ++ endif() + endif() + set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) + endif() +--- a/tools/llvm-shlib/CMakeLists.txt ++++ b/tools/llvm-shlib/CMakeLists.txt +@@ -95,7 +95,7 @@ + add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE}) + endif() + +-add_llvm_library(LLVM SHARED ${SOURCES}) ++add_llvm_library(LLVM SHARED SONAME ${SOURCES}) + + list(REMOVE_DUPLICATES LIB_NAMES) + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf" diff --git a/community/llvm3.7/config.guess.patch b/community/llvm3.7/config.guess.patch new file mode 100644 index 0000000000..d6dc20b84e --- /dev/null +++ b/community/llvm3.7/config.guess.patch @@ -0,0 +1,13 @@ +--- a/autoconf/config.guess 2016-08-04 01:13:53.941899947 +0200 ++++ b/autoconf/config.guess 2016-08-04 01:16:30.084553757 +0200 +@@ -142,6 +142,10 @@ + + # Note: order is significant - the case branches are not exclusive. + ++if [ -n "$CBUILD" ]; then ++ echo "$CBUILD"; exit ++fi ++ + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or 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 new file mode 100644 index 0000000000..15f255aa38 --- /dev/null +++ b/community/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch @@ -0,0 +1,112 @@ +From 1cec99f6d53d442d8a8c9d2ed9f4a58f8fdc6412 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 18 Feb 2016 08:30:07 +0100 +Subject: [PATCH 1/3] Add Musl, MuslEABI and Musl EABIHF triples + +--- + include/llvm/ADT/Triple.h | 11 +++++++++++ + lib/Support/Triple.cpp | 7 +++++++ + lib/Target/ARM/ARMSubtarget.h | 3 +++ + 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: + EABIHF, + Android, + ++ Musl, ++ MuslEABI, ++ MuslEABIHF, ++ + MSVC, + Itanium, + Cygnus, +@@ -544,6 +548,13 @@ public: + /// Tests whether the target is Android + bool isAndroid() const { return getEnvironment() == Triple::Android; } + ++ /// 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 +--- a/lib/Support/Triple.cpp ++++ b/lib/Support/Triple.cpp +@@ -199,6 +199,9 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { + case CODE16: return "code16"; + case EABI: return "eabi"; + case EABIHF: return "eabihf"; ++ case Musl: return "musl"; ++ case MuslEABIHF: return "muslgnueabihf"; ++ case MuslEABI: return "muslgnueabi"; + case Android: return "android"; + case MSVC: return "msvc"; + case Itanium: return "itanium"; +@@ -454,6 +457,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + .StartsWith("code16", Triple::CODE16) + .StartsWith("gnu", Triple::GNU) + .StartsWith("android", Triple::Android) ++ .StartsWith("muslgnueabihf", Triple::MuslEABIHF) ++ .StartsWith("muslgnueabi", Triple::MuslEABI) ++ .StartsWith("musl", Triple::Musl) + .StartsWith("msvc", Triple::MSVC) + .StartsWith("itanium", Triple::Itanium) + .StartsWith("cygnus", Triple::Cygnus) +@@ -1431,6 +1437,7 @@ StringRef Triple::getARMCPUForArch(StringRef MArch) const { + switch (getEnvironment()) { + case llvm::Triple::EABIHF: + case llvm::Triple::GNUEABIHF: ++ case llvm::Triple::MuslEABIHF: + 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: + bool isTargetEHABICompatible() const { + return (TargetTriple.getEnvironment() == Triple::EABI || + TargetTriple.getEnvironment() == Triple::GNUEABI || ++ TargetTriple.getEnvironment() == Triple::MuslEABI || + TargetTriple.getEnvironment() == Triple::EABIHF || + TargetTriple.getEnvironment() == Triple::GNUEABIHF || ++ TargetTriple.getEnvironment() == Triple::MuslEABIHF || + TargetTriple.getEnvironment() == Triple::Android) && + !isTargetDarwin() && !isTargetWindows(); + } +@@ -415,6 +417,7 @@ public: + // FIXME: this is invalid for WindowsCE + return TargetTriple.getEnvironment() == Triple::GNUEABIHF || + TargetTriple.getEnvironment() == Triple::EABIHF || ++ TargetTriple.getEnvironment() == Triple::MuslEABIHF || + 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, + case llvm::Triple::GNUEABIHF: + case llvm::Triple::EABIHF: + case llvm::Triple::EABI: ++ case llvm::Triple::MuslEABI: ++ case llvm::Triple::MuslEABIHF: + TargetABI = ARMBaseTargetMachine::ARM_ABI_AAPCS; + break; + case llvm::Triple::GNU: +-- +2.7.3 + diff --git a/community/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch b/community/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch new file mode 100644 index 0000000000..1a69080866 --- /dev/null +++ b/community/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch @@ -0,0 +1,35 @@ +From 5c571082fdaf61f6df19d9b7137dc26d71334058 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 18 Feb 2016 10:33:04 +0100 +Subject: [PATCH 2/3] Fix build with musl libc + +On musl libc the fopen64 and fopen are the same thing, but for +compatibility they have a `#define fopen64 fopen`. Same applies for +fseek64, fstat64, fstatvfs64, ftello64, lstat64, stat64 and tmpfile64. +--- + include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h +index 7becdf0..7f14427 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.h ++++ b/include/llvm/Analysis/TargetLibraryInfo.h +@@ -18,6 +18,15 @@ + #include "llvm/IR/Module.h" + #include "llvm/Pass.h" + ++#undef fopen64 ++#undef fseeko64 ++#undef fstat64 ++#undef fstatvfs64 ++#undef ftello64 ++#undef lstat64 ++#undef stat64 ++#undef tmpfile64 ++ + namespace llvm { + /// VecDesc - Describes a possible vectorization of a function. + /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized +-- +2.7.3 + diff --git a/community/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch b/community/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch new file mode 100644 index 0000000000..d5d7f07b5e --- /dev/null +++ b/community/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch @@ -0,0 +1,33 @@ +From d12ecb83d01dcb580dd94f4d57828f33d3eb4c35 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 18 Feb 2016 15:33:21 +0100 +Subject: [PATCH 3/3] Fix DynamicLibrary to build with musl libc + +stdin/out/err is part of the libc and not the kernel so we check for the +specific libc that does the unexpected instead of linux. + +This is needed for making it build with musl libc. +--- + lib/Support/DynamicLibrary.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp +index 9a7aeb5..0c1c8f8 100644 +--- a/lib/Support/DynamicLibrary.cpp ++++ b/lib/Support/DynamicLibrary.cpp +@@ -140,10 +140,10 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + #define EXPLICIT_SYMBOL(SYM) \ + if (!strcmp(symbolName, #SYM)) return &SYM + +-// On linux we have a weird situation. The stderr/out/in symbols are both ++// On GNU libc we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we + // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. +-#if defined(__linux__) and !defined(__ANDROID__) ++#if defined(__GLIBC__) + { + EXPLICIT_SYMBOL(stderr); + EXPLICIT_SYMBOL(stdout); +-- +2.7.3 + diff --git a/community/llvm3.7/llvm-nm-workaround.patch b/community/llvm3.7/llvm-nm-workaround.patch new file mode 100644 index 0000000000..5755e57ff3 --- /dev/null +++ b/community/llvm3.7/llvm-nm-workaround.patch @@ -0,0 +1,27 @@ +From https://llvm.org/bugs/show_bug.cgi?id=24115 + +diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp +index e7ee312..b9e4779 100644 +--- a/tools/llvm-nm/llvm-nm.cpp ++++ b/tools/llvm-nm/llvm-nm.cpp +@@ -486,7 +486,7 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, + std::string ArchiveName, + std::string ArchitectureName) { + if (!NoSort) { +- std::function<bool(const NMSymbol &, const NMSymbol &)> Cmp; ++ bool (*Cmp)(const NMSymbol &, const NMSymbol &); + if (NumericSort) + Cmp = compareSymbolAddress; + else if (SizeSort) +@@ -495,8 +495,9 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, + Cmp = compareSymbolName; + + if (ReverseSort) +- Cmp = [=](const NMSymbol &A, const NMSymbol &B) { return Cmp(B, A); }; +- std::sort(SymbolList.begin(), SymbolList.end(), Cmp); ++ std::sort(SymbolList.begin(), SymbolList.end(), [=](const NMSymbol &A, const NMSymbol &B) { return Cmp(B, A); }); ++ else ++ std::sort(SymbolList.begin(), SymbolList.end(), Cmp); + } + + if (!PrintFileName) { |