TERMUX_PKG_HOMEPAGE=http://clang.llvm.org/
TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library"
-_PKG_MAJOR_VERSION=3.9
-TERMUX_PKG_VERSION=${_PKG_MAJOR_VERSION}.1
-TERMUX_PKG_REVISION=3
+_PKG_MAJOR_VERSION=4.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=1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee
+TERMUX_PKG_SHA256=8d10511df96e73b8ff9e7abbfb4d4d432edbdbe965f1f4f07afaf370b8a533be
TERMUX_PKG_HOSTBUILD=true
TERMUX_PKG_RM_AFTER_INSTALL="
bin/bugpoint
bin/clang-check
+bin/clang-import-test
+bin/clang-offload-bundler
bin/git-clang-format
bin/llvm-tblgen
bin/macho-dump
termux_step_post_extract_package () {
CLANG_SRC_TAR=cfe-${TERMUX_PKG_VERSION}.src.tar.xz
- test ! -f $TERMUX_PKG_CACHEDIR/$CLANG_SRC_TAR && termux_download http://llvm.org/releases/${TERMUX_PKG_VERSION}/$CLANG_SRC_TAR \
+ termux_download \
+ http://llvm.org/releases/${TERMUX_PKG_VERSION}/$CLANG_SRC_TAR \
$TERMUX_PKG_CACHEDIR/$CLANG_SRC_TAR \
- e6c4cebb96dee827fa0470af313dff265af391cb6da8d429842ef208c8f25e63
+ cea5f88ebddb30e296ca89130c83b9d46c2d833685e2912303c828054c4dc98a
tar -xf $TERMUX_PKG_CACHEDIR/$CLANG_SRC_TAR -C tools
mv tools/cfe-${TERMUX_PKG_VERSION}.src tools/clang
--- /dev/null
+diff -u -r ../llvm-4.0.0.src/tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp ./tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
+--- ../llvm-4.0.0.src/tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp 2016-11-30 18:57:18.000000000 +0100
++++ ./tools/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp 2017-03-14 18:11:26.984865292 +0100
+@@ -12,6 +12,7 @@
+ #include "clang/StaticAnalyzer/Core/Checker.h"
+ #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
+ #include "clang/StaticAnalyzer/Checkers/SValExplainer.h"
++#include "llvm/ADT/StringExtras.h"
+ #include "llvm/ADT/StringSwitch.h"
+
+ using namespace clang;
+@@ -269,7 +270,7 @@
+ unsigned NumTimesReached = Item.second.NumTimesReached;
+ ExplodedNode *N = Item.second.ExampleNode;
+
+- reportBug(std::to_string(NumTimesReached), BR, N);
++ reportBug(llvm::utostr(NumTimesReached), BR, N);
+ }
+ }
+
-diff -u -r ../llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt ./tools/llvm-shlib/CMakeLists.txt
---- ../llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt 2016-05-26 06:35:35.000000000 +0200
-+++ ./tools/llvm-shlib/CMakeLists.txt 2017-01-18 10:52:30.810184797 +0100
-@@ -39,7 +39,7 @@
+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
+@@ -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") # FIXME: It should be "GNU ld for elf"
-+if("${CMAKE_SYSTEM_NAME}" MATCHES "^(Linux|Android)$") # FIXME: It should be "GNU ld for elf"
+-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")
--- /dev/null
+diff -u -r ../llvm-4.0.0.src/tools/llvm-xray/xray-converter.cc ./tools/llvm-xray/xray-converter.cc
+--- ../llvm-4.0.0.src/tools/llvm-xray/xray-converter.cc 2017-02-27 18:01:04.000000000 +0100
++++ ./tools/llvm-xray/xray-converter.cc 2017-03-14 18:30:35.979011376 +0100
+@@ -14,6 +14,7 @@
+
+ #include "xray-extract.h"
+ #include "xray-registry.h"
++#include "llvm/ADT/StringExtras.h"
+ #include "llvm/DebugInfo/Symbolize/Symbolize.h"
+ #include "llvm/Support/EndianStream.h"
+ #include "llvm/Support/FileSystem.h"
+@@ -95,7 +96,7 @@
+ for (const auto &R : Records) {
+ Trace.Records.push_back({R.RecordType, R.CPU, R.Type, R.FuncId,
+ Symbolize ? FuncIdHelper.SymbolOrNumber(R.FuncId)
+- : std::to_string(R.FuncId),
++ : llvm::utostr(R.FuncId),
+ R.TSC, R.TId});
+ }
+ Output Out(OS, nullptr, 0);
+++ /dev/null
-Workaround bug https://github.com/android-ndk/ndk/issues/82 where std::to_string
-is not available yet.
-
-diff -u -r ../llvm-3.9.0.src/tools/sancov/sancov.cc ./tools/sancov/sancov.cc
---- ../llvm-3.9.0.src/tools/sancov/sancov.cc 2016-07-13 22:24:01.000000000 -0400
-+++ ./tools/sancov/sancov.cc 2016-09-04 11:48:19.647813216 -0400
-@@ -512,7 +512,7 @@
- static std::string formatHtmlPct(size_t Pct) {
- Pct = std::max(std::size_t{0}, std::min(std::size_t{100}, Pct));
-
-- std::string Num = std::to_string(Pct);
-+ std::string Num = llvm::utostr(Pct);
- std::string Zeroes(3 - Num.size(), '0');
- if (!Zeroes.empty())
- Zeroes = "<span class='lz'>" + Zeroes + "</span>";