aboutsummaryrefslogtreecommitdiff
path: root/android-clang-toolchain/builders.sh
blob: c3c179cc33a228f56193a3f4dd848689967366ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
set -ex

export PATH=$PATH://home/buildslave/bin/

sudo apt-get -q=2 update
sudo apt-get -q=2 install -y libxml2-dev zlib1g-dev libtinfo-dev git-svn gawk libxml2-utils rsync pxz python-requests ninja-build

BASEDIR="${HOME}/srv/aosp/${JOB_NAME}"
rm -rf "${BASEDIR}"
mkdir -p "${BASEDIR}"
cd "${BASEDIR}"

# Download toolchain prebuilt bootstrap tools
repo init -u https://android-git.linaro.org/git/platform/manifest.git -b linaro-upstream-llvm-toolchain
repo sync -j16 -c

# Apply needed patches, if any
for d in toolchain/patches/*; do
	[ -d "$d" ] || continue
	for i in $d/*.patch; do
		[ -e "$i" ] || continue
		p="$(realpath $i)"
		pushd "toolchain/$(basename $d)"
		echo "Applying $(basename $p)"
		patch -p1 <"$p"
		popd
	done
done

# Find the SVN revision the compiler is based on
REVISION=0
for i in clang clang-tools-extra compiler-rt libcxx libcxxabi lld llvm openmp_llvm; do
	pushd toolchain/$i
	REV=$(git log |grep git-svn-id: |head -n1 |cut -d@ -f2 |cut -d' ' -f1)
	[ "$REV" -ge "$REVISION" ] && REVISION="$REV"
	popd
done
echo "Building compiler based on clang revision $REVISION"

# And give the build script the correct version information
sed -i -e "s,^svn_revision =.*,svn_revision = 'r${REVISION}'," toolchain/llvm_android/android_version.py

# And build it...
python toolchain/llvm_android/build.py --no-build-windows

# Recompress output to save space
mv out/*.tar.bz2 .
bunzip2 *.tar.bz2
xz -9ef *.tar

echo "Build finished"