aboutsummaryrefslogtreecommitdiff
path: root/scripts/build-lldb-llvm-clang
blob: 822e9944bf6a52e51162b16992fce9945b827184 (plain) (blame)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/sh -x

# Usage:
# build-lldb-llvm-clang <revision> [Debug|Release|BuildAndIntegration]
# build-lldb-llvm-clang <llvm-revision> <clang-revision> [Debug|Release|BuildAndIntegration]

LLVM_REVISION=$1
CLANG_REVISION=$2
LLVM_CONFIGURATION=$3

if [ "$LLVM_REVISION" = "" ]; then
	echo "Usage:\n    build-lldb-llvm-clang <llvm-revision> [<clang-revision> Debug|Release||BuildAndIntegration]"
	exit 1
fi

if [ "$CLANG_REVISION" = "" ]; then
	$CLANG_REVISION = $LLVM_REVISION
fi

# Checkout LLVM
svn co -q -r $LLVM_REVISION http://llvm.org/svn/llvm-project/llvm/trunk llvm

# change directory to "./llvm"
cd llvm

# Checkout Clang
# change directory to "./llvm/tools"
cd tools
svn co -q -r $CLANG_REVISION http://llvm.org/svn/llvm-project/cfe/trunk clang

# change directory to "./llvm"
cd ..
for patch_file in ../scripts/llvm.*.diff
do
	echo "Applying patch from '$patch_file'"
    patch -p0 < "$patch_file"
done

# change directory to "./llvm/tools/clang"
cd tools/clang
for patch_file in ../../../scripts/clang.*.diff
do
	echo "Applying patch from '$patch_file'"
    patch -p0 < "$patch_file"
done

# change directory to "./"
cd ../../..
pwd

if [ "$LLVM_CONFIGURATION" = "Debug" ]; then
	# Configure "Debug+Asserts" build
	mkdir llvm-debug
	cd llvm-debug
	../llvm/configure --enable-targets=x86_64,arm 
	make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm'
	make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1
elif [ "$LLVM_CONFIGURATION" = "Release" ]; then
	# Configure "Release" build
	mkdir llvm-release
	cd llvm-release
	../llvm/configure --enable-targets=x86_64,arm --enable-optimized --disable-assertions
	make -j8 clang-only VERBOSE=1 PROJECT_NAME='llvm'
	make -j8 tools-only VERBOSE=1 PROJECT_NAME='llvm' EDIS_VERSION=1
elif [ "$LLVM_CONFIGURATION" = "BuildAndIntegration" ]; then
	# Don't configure or build for "BuildAndIntegration", this configuration 
	# is a preparation step for a build submission
	
	# Remove all patches, and the llvm and clang "test" directories
	rm -rf ./scripts/*.diff ./llvm/test ./llvm/tools/clang/test
else
	echo "checked out llvm (revision $LLVM_REVISION) and clang (revision $CLANG_REVISION)."
	exit 0
fi