2 # Script to build clang with patch to make executables
3 # position-independent on Android by default.
4 # Currently unused as the clang binary in the NDK is used
5 # instead, wrapped with clang-pie-wrapper.
11 rm -Rf
$HOME/clang-build
12 mkdir
-p
$HOME/clang-build
15 curl
-L
--fail
--retry
2 -o llvm.
tar.xz \
16 http
://llvm.org
/releases
/${LLVM_VERSION}/llvm-
${LLVM_VERSION}.src.
tar.xz
17 TERMUX_PKG_SHA256
=1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee
18 curl
-L
--fail
--retry
2 -o clang.
tar.xz \
19 http
://llvm.org
/releases
/${LLVM_VERSION}/cfe-
${LLVM_VERSION}.src.
tar.xz
25 mv cfe-
$LLVM_VERSION.src src
/tools
/clang
29 diff -u -r ../llvm-3.9.0.src/tools/clang/lib/Driver/Tools.cpp ./tools/clang/lib/Driver/Tools.cpp
30 --- ../llvm-3.9.0.src/tools/clang/lib/Driver/Tools.cpp 2016-08-13 16:43:56.000000000 -0400
31 +++ ./tools/clang/lib/Driver/Tools.cpp 2016-09-04 06:15:59.703422745 -0400
32 @@ -9357,9 +9357,12 @@
33 const llvm::Triple::ArchType Arch = ToolChain.getArch();
34 const bool isAndroid = ToolChain.getTriple().isAndroid();
35 const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
36 + // Termux modification: Enable pie by default for Android and support the
39 !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
40 - (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
41 + (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() || isAndroid) &&
42 + !Args.hasArg(options::OPT_nopie);
43 const bool HasCRTBeginEndFiles =
44 ToolChain.getTriple().hasEnvironment() ||
45 (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);
52 -DCMAKE_BUILD_TYPE
=Release