libuv: Update from 1.20.0 to 1.20.1
[termux-packages] / scripts / build-clang.sh
CommitLineData
ef98cf1c
FF
1#!/bin/bash
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.
6
7set -e -u
8
9LLVM_VERSION=3.9.1
10
11rm -Rf $HOME/clang-build
12mkdir -p $HOME/clang-build
13cd $HOME/clang-build
14
15curl -L --fail --retry 2 -o llvm.tar.xz \
16 http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz
17TERMUX_PKG_SHA256=1fd90354b9cf19232e8f168faf2220e79be555df3aa743242700879e8fd329ee
18curl -L --fail --retry 2 -o clang.tar.xz \
19 http://llvm.org/releases/${LLVM_VERSION}/cfe-${LLVM_VERSION}.src.tar.xz
20
21tar xf llvm.tar.xz
22tar xf clang.tar.xz
23
24mv llvm-3.9.1.src src
25mv cfe-$LLVM_VERSION.src src/tools/clang
26cd src
27
28patch -p1 <<EOF
29diff -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
37+ // nopie flag.
38 const bool IsPIE =
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);
46EOF
47
48mkdir ../build
49cd ../build
50
51cmake ../src \
52 -DCMAKE_BUILD_TYPE=Release
53make clang