llvm&clang: Update from 4.0.1 to 5.0.0
authorFredrik Fornwall <fredrik@fornwall.net>
Sun, 10 Sep 2017 19:50:24 +0000 (21:50 +0200)
committerFredrik Fornwall <fredrik@fornwall.net>
Sun, 10 Sep 2017 19:50:24 +0000 (21:50 +0200)
packages/libllvm/build.sh
packages/libllvm/tools-clang-lib-Driver-ToolChains-Gnu.cpp.patch [new file with mode: 0644]
packages/libllvm/tools-clang-lib-Driver-Tools.cpp.patch [deleted file]
packages/libllvm/tools-llvm-shlib-CMakeLists.txt.patch

index 48dce9f..958642b 100644 (file)
@@ -1,10 +1,9 @@
 TERMUX_PKG_HOMEPAGE=http://clang.llvm.org/
 TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library"
-_PKG_MAJOR_VERSION=4.0
-TERMUX_PKG_VERSION=${_PKG_MAJOR_VERSION}.1
-TERMUX_PKG_REVISION=3
+_PKG_MAJOR_VERSION=5.0
+TERMUX_PKG_VERSION=${_PKG_MAJOR_VERSION}.0
 TERMUX_PKG_SRCURL=http://llvm.org/releases/${TERMUX_PKG_VERSION}/llvm-${TERMUX_PKG_VERSION}.src.tar.xz
-TERMUX_PKG_SHA256=da783db1f82d516791179fe103c71706046561f7972b18f0049242dee6712b51
+TERMUX_PKG_SHA256=e35dcbae6084adcf4abb32514127c5eabd7d63b733852ccdb31e06f1373136da
 TERMUX_PKG_HOSTBUILD=true
 TERMUX_PKG_RM_AFTER_INSTALL="
 bin/bugpoint
@@ -54,7 +53,7 @@ termux_step_post_extract_package () {
        termux_download \
                http://llvm.org/releases/${TERMUX_PKG_VERSION}/$CLANG_SRC_TAR \
                $TERMUX_PKG_CACHEDIR/$CLANG_SRC_TAR \
-               61738a735852c23c3bdbe52d035488cdb2083013f384d67c1ba36fabebd8769b
+               019f23c2192df793ac746595e94a403908749f8e0c484b403476d2611dd20970
 
        tar -xf $TERMUX_PKG_CACHEDIR/$CLANG_SRC_TAR -C tools
        mv tools/cfe-${TERMUX_PKG_VERSION}.src tools/clang
diff --git a/packages/libllvm/tools-clang-lib-Driver-ToolChains-Gnu.cpp.patch b/packages/libllvm/tools-clang-lib-Driver-ToolChains-Gnu.cpp.patch
new file mode 100644 (file)
index 0000000..0317941
--- /dev/null
@@ -0,0 +1,37 @@
+diff -u -r ../llvm-5.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp ./tools/clang/lib/Driver/ToolChains/Gnu.cpp
+--- ../llvm-5.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp        2017-08-11 03:47:32.000000000 +0200
++++ ./tools/clang/lib/Driver/ToolChains/Gnu.cpp        2017-09-10 20:14:54.636653647 +0200
+@@ -152,14 +152,11 @@
+     }
+   }
+-  const std::string &customGCCName = D.getCCCGenericGCCName();
+-  const char *GCCName;
+-  if (!customGCCName.empty())
+-    GCCName = customGCCName.c_str();
+-  else if (D.CCCIsCXX()) {
+-    GCCName = "g++";
+-  } else
+-    GCCName = "gcc";
++  // Termux modification: Disable calling into gcc from clang.
++  // Clang calls into gcc if it tries to compile a language it doesn't understand.
++  // On Termux gcc is a symlink to clang, so this leads into fork loop until
++  // the whole system runs out of memory.
++  const char *GCCName = "false";
+   const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
+   C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
+@@ -415,9 +412,12 @@
+   const llvm::Triple::ArchType Arch = ToolChain.getArch();
+   const bool isAndroid = ToolChain.getTriple().isAndroid();
+   const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
++  // Termux modification: Enable pie by default for Android
++  // and support the nopie flag.
+   const bool IsPIE =
+       !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
+-      (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
++      (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() || isAndroid) &&
++      !Args.hasArg(options::OPT_nopie);
+   const bool HasCRTBeginEndFiles =
+       ToolChain.getTriple().hasEnvironment() ||
+       (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
diff --git a/packages/libllvm/tools-clang-lib-Driver-Tools.cpp.patch b/packages/libllvm/tools-clang-lib-Driver-Tools.cpp.patch
deleted file mode 100644 (file)
index 74669ec..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -u -r ../llvm-3.9.0.src/tools/clang/lib/Driver/Tools.cpp ./tools/clang/lib/Driver/Tools.cpp
---- ../llvm-3.9.0.src/tools/clang/lib/Driver/Tools.cpp 2016-08-13 16:43:56.000000000 -0400
-+++ ./tools/clang/lib/Driver/Tools.cpp 2016-09-04 06:15:59.703422745 -0400
-@@ -7415,10 +7415,12 @@
-   const char *GCCName;
-   if (!customGCCName.empty())
-     GCCName = customGCCName.c_str();
--  else if (D.CCCIsCXX()) {
--    GCCName = "g++";
--  } else
--    GCCName = "gcc";
-+  else
-+    // Termux modification: Disable calling into gcc from clang.
-+    // Clang calls into gcc if it tries to compile a language it doesn't understand.
-+    // On Termux gcc is a symlink to clang, so this leads into fork loop until
-+    // the whole system runs out of memory.
-+    GCCName = "false";
-   const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
-   C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
-@@ -9357,9 +9357,12 @@
-   const llvm::Triple::ArchType Arch = ToolChain.getArch();
-   const bool isAndroid = ToolChain.getTriple().isAndroid();
-   const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
-+  // Termux modification: Enable pie by default for Android and support the
-+  // nopie flag.
-   const bool IsPIE =
-       !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
--      (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
-+      (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() || isAndroid) &&
-+      !Args.hasArg(options::OPT_nopie);
-   const bool HasCRTBeginEndFiles =
-       ToolChain.getTriple().hasEnvironment() ||
-       (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
index 790230c..847dcfa 100644 (file)
@@ -1,12 +1,12 @@
-diff -u -r ../llvm-4.0.0.src/tools/llvm-shlib/CMakeLists.txt ./tools/llvm-shlib/CMakeLists.txt
---- ../llvm-4.0.0.src/tools/llvm-shlib/CMakeLists.txt  2016-11-01 21:19:33.000000000 +0100
-+++ ./tools/llvm-shlib/CMakeLists.txt  2017-03-14 17:08:19.394563777 +0100
+diff -u -r ../llvm-5.0.0.src/tools/llvm-shlib/CMakeLists.txt ./tools/llvm-shlib/CMakeLists.txt
+--- ../llvm-5.0.0.src/tools/llvm-shlib/CMakeLists.txt  2017-07-11 03:17:44.000000000 +0200
++++ ./tools/llvm-shlib/CMakeLists.txt  2017-09-07 23:29:50.949353365 +0200
 @@ -37,7 +37,7 @@
  add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
  
  list(REMOVE_DUPLICATES LIB_NAMES)
--if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR MINGW) # FIXME: It should be "GNU ld for elf"
-+if("${CMAKE_SYSTEM_NAME}" MATCHES "^(Linux|Android)$" OR MINGW) # FIXME: It should be "GNU ld for elf"
-   # GNU ld doesn't resolve symbols in the version script.
-   set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
+-if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")) # FIXME: It should be "GNU ld for elf"
++if(("${CMAKE_SYSTEM_NAME}" MATCHES "^(Linux|Android)$") OR (MINGW) OR (HAIKU) OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")) # FIXME: It should be "GNU ld for elf"
+   configure_file(
+   ${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in
  ${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map)