Add (currently unused) build-clang.sh script
This commit is contained in:
parent
66d7b8b161
commit
ef98cf1c18
53
scripts/build-clang.sh
Executable file
53
scripts/build-clang.sh
Executable file
@ -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
Block a user