Fredrik Fornwall
8 years ago
1 changed files with 53 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||
#!/bin/bash |
|||
# Script to build clang with patch to make executables |
|||
# position-independent on Android by default. |
|||
# Currently unused as the clang binary in the NDK is used |
|||
# instead, wrapped with clang-pie-wrapper. |
|||
|
|||
set -e -u |
|||
|
|||
LLVM_VERSION=3.9.1 |
|||
|
|||
rm -Rf $HOME/clang-build |
|||
mkdir -p $HOME/clang-build |
|||
cd $HOME/clang-build |
|||
|
|||
curl -L --fail --retry 2 -o llvm.tar.xz \ |
|||
http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz |
|||
TERMUX_PKG_SHA256=1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee |
|||
curl -L --fail --retry 2 -o clang.tar.xz \ |
|||
http://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz |
|||
|
|||
tar xf llvm.tar.xz |
|||
tar xf clang.tar.xz |
|||
|
|||
mv llvm-3.9.1.src src |
|||
mv cfe-$LLVM_VERSION.src src/tools/clang |
|||
cd src |
|||
|
|||
patch -p1 <<EOF |
|||
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 |
|||
@@ -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); |
|||
EOF |
|||
|
|||
mkdir ../build |
|||
cd ../build |
|||
|
|||
cmake ../src \ |
|||
-DCMAKE_BUILD_TYPE=Release |
|||
make clang |
Loading…
Reference in new issue