X-Original-To: alpine-aports@lists.alpinelinux.org Received: from mail-it0-f65.google.com (mail-it0-f65.google.com [209.85.214.65]) by lists.alpinelinux.org (Postfix) with ESMTP id 6E5E15C461C for ; Fri, 15 Jul 2016 02:53:53 +0000 (GMT) Received: by mail-it0-f65.google.com with SMTP id u186so529150ita.1 for ; Thu, 14 Jul 2016 19:53:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ThwZ/mCFsAx5LNWLylwZVXGvmGF7PODXdjT6VW7uT2I=; b=LbsgYzyzbnmPBoBL96j1JkWi7GWW8bT1mSLDH1HYI9pVINPd6VxcOhgcrerg7IYHMj 999BsNzQkurxFxsrI9jpGJvOm1Ayrbi25Wnb/z0uVE5OUHV6e3Y0PU4rmonQucWn2KBU mjMyO6ECWeUMcyn9nkI8fUPuR0ZkJytr87GoXUPMoo3euVys4BWKpDGPSpkftjNli/m+ 0ivikAJpakO607V2utOxhHl4hm0S97q9AKPB0J7MaNRWR2Hbt+H5gb3RgfDusXe5NZ80 EwhaodkF6pK+33FAa3ZmZiIKYfW1KCjHMB/Pt+c2QozZk3qldQCT63xsSjgzI4ti7YgL yUnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ThwZ/mCFsAx5LNWLylwZVXGvmGF7PODXdjT6VW7uT2I=; b=HUtudyPsodY3PqdIzMp30s0CvJE24qaugtBhoIZsrk/slPtMztOH50/+uFpMmXwSC3 8gZYxDHZUijm+peXCW25TFlWRI8c8OarikddJExUP3TAN24A+OLIVV6cwQy22V4fBHvf FnaGaaYAxkAa3DAJwjlSRCKhrwVaw4L17PfEx5Cl6SkFCB1Xjo143WDvOdNsOmu1Hjil WdZe0Tfv3TxhDt6GzsXTgShjr2zgkm1c9Yn5CAMYYw74KAcgSr90YShLZftIr2dwcy6b zUfPBK9cSN95L3A2OOruAYaoxt0poyFV09/z0gKeONDBIZbYLHHynmfOM3b8X0eXaOmG /J+w== X-Gm-Message-State: ALyK8tKdZMQvjj5q/MqridJnzexCigD+pu5AC4StSkFVdIHvyXLDmas2hpaEUSNLv8WX/w== X-Received: by 10.36.0.6 with SMTP id 6mr30918469ita.15.1468551232576; Thu, 14 Jul 2016 19:53:52 -0700 (PDT) Received: from mb.lan (c-73-24-18-171.hsd1.mn.comcast.net. [73.24.18.171]) by smtp.gmail.com with ESMTPSA id y42sm675748ita.9.2016.07.14.19.53.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 14 Jul 2016 19:53:52 -0700 (PDT) From: Mitch Tishmack To: alpine-aports@lists.alpinelinux.org Cc: Mitch Tishmack Subject: [alpine-aports] [PATCH 1/5] testing/llvm3.7 new aport Date: Thu, 14 Jul 2016 21:53:19 -0500 Message-Id: <1468551203-21570-2-git-send-email-mitch.tishmack@gmail.com> X-Mailer: git-send-email 2.8.0 In-Reply-To: <1468551203-21570-1-git-send-email-mitch.tishmack@gmail.com> References: <1468551203-21570-1-git-send-email-mitch.tishmack@gmail.com> X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: --- testing/llvm3.7/APKBUILD | 172 +++++++++++++++++++++ ...Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch | 112 ++++++++++++++ .../llvm-0002-Fix-build-with-musl-libc.patch | 35 +++++ testing/llvm3.7/llvm-0002-musl-triple.patch | 90 +++++++++++ ...ix-DynamicLibrary-to-build-with-musl-libc.patch | 33 ++++ testing/llvm3.7/llvm-0003-musl-hacks.patch | 114 ++++++++++++++ testing/llvm3.7/llvm-nm-workaround.patch | 27 ++++ 7 files changed, 583 insertions(+) create mode 100755 testing/llvm3.7/APKBUILD create mode 100644 testing/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch create mode 100644 testing/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch create mode 100644 testing/llvm3.7/llvm-0002-musl-triple.patch create mode 100644 testing/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch create mode 100644 testing/llvm3.7/llvm-0003-musl-hacks.patch create mode 100644 testing/llvm3.7/llvm-nm-workaround.patch diff --git a/testing/llvm3.7/APKBUILD b/testing/llvm3.7/APKBUILD new file mode 100755 index 0000000..c46fb4a --- /dev/null +++ b/testing/llvm3.7/APKBUILD @@ -0,0 +1,172 @@ +# Contributor Travis Tilley +# Contributor Mitch Tishmack +# Maintainer: Travis Tilley +pkgname=llvm3.7 +pkgname_short=llvm +pkgver=3.7.1 +pkgrel=0 +pkgdesc="low level virtual machine compiler system" +arch="all" +url="http://llvm.org/" +license="UOI-NCSA" +depends="" +makedepends="$depends_dev + binutils-dev + bison + chrpath + cmake + flex + groff + isl-dev + libffi-dev + make + file + paxmark + py-sphinx + python + python-dev + zlib-dev + " +install= +subpackages="$pkgname-static $pkgname-libs" +source=" + 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 + + http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz + " + +_builddir="$srcdir"/build + +_cmake_common_flags="\ +" + + +_srcdir="$srcdir"/"$pkgname_short-$pkgver.src" + +prepare() { + msg "Patching LLVM core..." + cd "$_srcdir" || return 1 + update_config_sub || return 1 + sed -i -e '/case "\${UNAME_MACHINE}:\${UNAME_SYSTEM}:\${UNAME_RELEASE}:\${UNAME_VERSION}" in/i \' \ + -e 'if [ x != "x$CBUILD" ]; then echo "$CBUILD"; exit; fi' \ + ./autoconf/config.guess || return 1 + for i in $source; do + case $i in + llvm-*.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() { + mkdir -p "$_builddir" + cd "$_builddir" + + # auto-detect it by guessing either. + _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=/usr \ + -DCMAKE_VERBOSE_MAKEFILE=NO \ + \ + -DFFI_INCLUDE_DIR="$_ffi_include_dir" \ + -DLLVM_BINUTILS_INCDIR=/usr/include/llvm-3.7 \ + -DLLVM_BUILD_DOCS=YES \ + -DLLVM_BUILD_EXAMPLES=NO \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_BUILD_TESTS=YES \ + -DLLVM_DEFAULT_TARGET_TRIPLE=$CBUILD \ + -DLLVM_DYLIB_EXPORT_ALL=ON \ + -DLLVM_ENABLE_ASSERTIONS=NO \ + -DLLVM_ENABLE_CXX1Y=YES \ + -DLLVM_ENABLE_FFI=YES \ + -DLLVM_ENABLE_LIBCXX=NO \ + -DLLVM_ENABLE_PIC=YES \ + -DLLVM_ENABLE_RTTI=YES \ + -DLLVM_ENABLE_SPHINX=NO \ + -DLLVM_ENABLE_TERMINFO=YES \ + -DLLVM_ENABLE_ZLIB=YES \ + -DLLVM_HOST_TRIPLE=$CHOST \ + -DLLVM_INCLUDE_EXAMPLES=NO \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_TARGETS_TO_BUILD=all \ + \ + -DSPHINX_WARNINGS_AS_ERRORS=NO \ + "${_srcdir}" || return 1 + + make llvm-tblgen || return 1 + make || return 1 + + paxmark m bin/llvm-rtdyld + paxmark m bin/lli + paxmark m bin/lli-child-target + + paxmark m unittests/ExecutionEngine/MCJIT/MCJITTests + paxmark m unittests/Support/SupportTests + + + 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" + make DESTDIR="$pkgdir" install + file "$pkgdir"/usr/lib/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d + file "$pkgdir"/usr/bin/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d + for f in $(ls -d "$pkgdir"/usr/bin/*); do + mv ${f} ${f}-3.7 + done + mv "$pkgdir"/usr/lib/LLVMgold.so "$pkgdir"/usr/lib/LLVMgold.so.3.7 + mv "$pkgdir"/usr/lib/libLTO.so "$pkgdir"/usr/lib/libLTO.so.3.7 + mv "$pkgdir"/usr/lib/BugpointPasses.so "$pkgdir"/usr/lib/BugpointPasses.so.3.7 + rm "$pkgdir"/usr/lib/libLLVM.so +} + +static() { + pkgdesc="LLVM static libraries" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/ +} + +libs() { + pkgdesc="LLVM runtiem libraries" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/libLLVM.so.[0-9]* "$subpkgdir"/usr/lib/ +} + + +md5sums="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 +bf8b3a2c79e61212c5409041dfdbd319 llvm-3.7.1.src.tar.xz" +sha256sums="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 +be7794ed0cec42d6c682ca8e3517535b54555a3defabec83554dbc74db545ad5 llvm-3.7.1.src.tar.xz" +sha512sums="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 +ac521debc02f6deba96ef975d6a546b0c5c77299c1dbf5e1b87a7974ff5e7fd715bd7e384b92d9adf572ce47130bdbf6d3c648eb0d7f72f16f976292e4909e90 llvm-3.7.1.src.tar.xz" diff --git a/testing/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch b/testing/llvm3.7/llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch new file mode 100644 index 0000000..15f255a --- /dev/null +++ b/testing/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 +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/testing/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch b/testing/llvm3.7/llvm-0002-Fix-build-with-musl-libc.patch new file mode 100644 index 0000000..1a69080 --- /dev/null +++ b/testing/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 +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/testing/llvm3.7/llvm-0002-musl-triple.patch b/testing/llvm3.7/llvm-0002-musl-triple.patch new file mode 100644 index 0000000..2f6fd59 --- /dev/null +++ b/testing/llvm3.7/llvm-0002-musl-triple.patch @@ -0,0 +1,90 @@ +From 58be6f7fb164dbf42fdd28ce6474dbe4bc5ca401 Mon Sep 17 00:00:00 2001 +From: Andrea Brancaleoni +Date: Tue, 8 Sep 2015 21:53:42 +0200 +Subject: [PATCH 2/3] musl triple + +--- + include/llvm/ADT/Triple.h | 4 ++++ + lib/Support/Triple.cpp | 6 ++++++ + lib/Target/ARM/ARMSubtarget.h | 3 +++ + lib/Target/ARM/ARMTargetMachine.cpp | 2 ++ + 4 files changed, 15 insertions(+) + +diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h +index 947812d..d2a6bbe 100644 +--- a/include/llvm/ADT/Triple.h ++++ b/include/llvm/ADT/Triple.h +@@ -167,6 +167,10 @@ public: + EABIHF, + Android, + ++ Musl, ++ MuslEABI, ++ MuslEABIHF, ++ + MSVC, + Itanium, + Cygnus, +diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp +index c6646fb..8d47ad9 100644 +--- a/lib/Support/Triple.cpp ++++ b/lib/Support/Triple.cpp +@@ -192,6 +192,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 "musleabihf"; ++ case MuslEABI: return "musleabi"; + case Android: return "android"; + case MSVC: return "msvc"; + case Itanium: return "itanium"; +@@ -427,6 +430,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + .StartsWith("code16", Triple::CODE16) + .StartsWith("gnu", Triple::GNU) + .StartsWith("android", Triple::Android) ++ .StartsWith("musleabihf", Triple::MuslEABIHF) ++ .StartsWith("musleabi", Triple::MuslEABI) ++ .StartsWith("musl", Triple::Musl) + .StartsWith("msvc", Triple::MSVC) + .StartsWith("itanium", Triple::Itanium) + .StartsWith("cygnus", Triple::Cygnus) +diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h +index dd101df..c5bdcca 100644 +--- a/lib/Target/ARM/ARMSubtarget.h ++++ b/lib/Target/ARM/ARMSubtarget.h +@@ -381,8 +381,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(); + } +@@ -391,6 +393,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 93495d6..56e6b7f 100644 +--- a/lib/Target/ARM/ARMTargetMachine.cpp ++++ b/lib/Target/ARM/ARMTargetMachine.cpp +@@ -97,6 +97,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.5.1 + diff --git a/testing/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch b/testing/llvm3.7/llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch new file mode 100644 index 0000000..d5d7f07 --- /dev/null +++ b/testing/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 +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/testing/llvm3.7/llvm-0003-musl-hacks.patch b/testing/llvm3.7/llvm-0003-musl-hacks.patch new file mode 100644 index 0000000..d88b5fc --- /dev/null +++ b/testing/llvm3.7/llvm-0003-musl-hacks.patch @@ -0,0 +1,114 @@ +From faca3fbd15d0c3108493c3c54cd93138e049ac43 Mon Sep 17 00:00:00 2001 +From: Andrea Brancaleoni +Date: Tue, 8 Sep 2015 22:03:02 +0200 +Subject: [PATCH 3/3] musl + +--- + include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ + lib/Analysis/TargetLibraryInfo.cpp | 5 +++-- + lib/Support/DynamicLibrary.cpp | 2 +- + lib/Support/Unix/Signals.inc | 6 +++--- + utils/unittest/googletest/src/gtest.cc | 1 + + 5 files changed, 17 insertions(+), 6 deletions(-) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h +index e0a1ee3..465b65a 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 +diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp +index 635c50c..863f4a0 100644 +--- a/lib/Analysis/TargetLibraryInfo.cpp ++++ b/lib/Analysis/TargetLibraryInfo.cpp +@@ -336,14 +336,15 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, + } + + // The following functions are available on at least Linux: +- if (!T.isOSLinux()) { ++ if (!T.isOSLinux()) ++ TLI.setUnavailable(LibFunc::memalign); ++ if (1 /*!T.isGlibc()*/) { + TLI.setUnavailable(LibFunc::dunder_strdup); + TLI.setUnavailable(LibFunc::dunder_strtok_r); + TLI.setUnavailable(LibFunc::dunder_isoc99_scanf); + TLI.setUnavailable(LibFunc::dunder_isoc99_sscanf); + TLI.setUnavailable(LibFunc::under_IO_getc); + TLI.setUnavailable(LibFunc::under_IO_putc); +- TLI.setUnavailable(LibFunc::memalign); + TLI.setUnavailable(LibFunc::fopen64); + TLI.setUnavailable(LibFunc::fseeko64); + TLI.setUnavailable(LibFunc::fstat64); +diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp +index 9a7aeb5..e21750d 100644 +--- a/lib/Support/DynamicLibrary.cpp ++++ b/lib/Support/DynamicLibrary.cpp +@@ -138,7 +138,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + + // This macro returns the address of a well-known, explicit symbol + #define EXPLICIT_SYMBOL(SYM) \ +- if (!strcmp(symbolName, #SYM)) return &SYM ++ if (!strcmp(symbolName, #SYM)) return (void *) &SYM + + // On linux we have a weird situation. The stderr/out/in symbols are both + // macros and global variables because of standards requirements. So, we +diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc +index bfe2a3a..e8372d9 100644 +--- a/lib/Support/Unix/Signals.inc ++++ b/lib/Support/Unix/Signals.inc +@@ -117,7 +117,7 @@ static void RegisterHandlers() { + // during handling an actual signal because you can't safely call new in a + // signal handler. + *SignalsMutex; +- ++ + // If the handlers are already registered, we're done. + if (NumRegisteredSignals != 0) return; + +@@ -164,7 +164,7 @@ static void RemoveFilesToRemove() { + // super-user permissions. + if (!S_ISREG(buf.st_mode)) + continue; +- ++ + // Otherwise, remove the file. We ignore any errors here as there is nothing + // else we can do. + unlink(path); +@@ -430,7 +430,7 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, + // On glibc systems we have the 'backtrace' function, which works nicely, but + // doesn't demangle symbols. + void llvm::sys::PrintStackTrace(raw_ostream &OS) { +-#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES) ++#if defined(__GLIBC__) && defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES) + static void* StackTrace[256]; + // Use backtrace() to output a backtrace on Linux systems with glibc. + int depth = backtrace(StackTrace, +diff --git a/utils/unittest/googletest/src/gtest.cc b/utils/unittest/googletest/src/gtest.cc +index 5780764..1d548c1 100644 +--- a/utils/unittest/googletest/src/gtest.cc ++++ b/utils/unittest/googletest/src/gtest.cc +@@ -120,6 +120,7 @@ + + #if GTEST_CAN_STREAM_RESULTS_ + # include // NOLINT ++# include // NOLINT + # include // NOLINT + #endif + +-- +2.5.1 + diff --git a/testing/llvm3.7/llvm-nm-workaround.patch b/testing/llvm3.7/llvm-nm-workaround.patch new file mode 100644 index 0000000..5755e57 --- /dev/null +++ b/testing/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 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) { -- 2.8.0 --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---