-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathdo_clang_build.bash
executable file
·76 lines (58 loc) · 2.48 KB
/
do_clang_build.bash
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
75
76
#!/usr/bin/env bash
# Copyright (C) 2018 Swift Navigation Inc.
# Contact: Swift Navigation <[email protected]>
#
# This source is subject to the license found in the file 'LICENSE' which must
# be be distributed together with this source. All other rights reserved.
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
# EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
set -euo pipefail
IFS=$'\n\t'
die_non_empty()
{ echo "*** ERROR: variable $1 must be defined and non-empty" >&2; exit 1; }
die_not_defined()
{ echo "*** ERROR: variable $1 must be defined (can be empty)" >&2; exit 1; }
[[ -n "${VARIANT:-}" ]] || die_non_empty
[[ "${VARIANT}" == "obfuscator" ]] || [[ "${VARIANT}" == "vanilla" ]] || \
{ echo "*** ERROR: invalid variant (must be one of 'vanilla', or 'obfuscator')" >&2; exit 1; }
[[ -n "${LLVM_REPO:-}" ]] || die_non_empty LLVM_REPO
[[ -n "${LLVM_BRANCH:-}" ]] || die_non_empty LLVM_BRANCH
[[ -n "${CMAKE_COMMAND:-}" ]] || die_non_empty CMAKE_COMMAND
[[ -n "${CCACHE_DIR:-}" ]] || die_non_empty CCACHE_DIR
[[ -n "${CLANG_REPO+x}" ]] || die_not_defined CLANG_REPO
[[ -n "${CLANG_TOOLS_EXTRA_REPO+x}" ]] || die_not_defined CLANG_TOOLS_EXTRA_REPO
[[ -n "${COMPILE_CPP_WRAPPER+x}" ]] || die_not_defined COMPILE_CPP_WRAPPER
[[ -n "${PATCH_COMMAND+x}" ]] || die_not_defined PATCH_COMMAND
if [ ! -d "/work/$VARIANT-llvm/.git" ]; then
git clone --depth=1 --single-branch -b "$LLVM_BRANCH" \
"$LLVM_REPO" "$VARIANT-llvm";
else
(cd "/work/$VARIANT-llvm" && git pull);
fi
if [ -n "${CLANG_REPO:-}" ]; then
if [ ! -d "/work/$VARIANT-llvm/tools/clang/.git" ]; then
git clone --depth=1 --single-branch -b "$LLVM_BRANCH" \
"$CLANG_REPO" "$VARIANT-llvm/tools/clang";
else
(cd "/work/$VARIANT-llvm/tools/clang" && git pull);
fi
fi
if [ -n "${CLANG_TOOLS_EXTRA_REPO:-}" ]; then \
if [ ! -d "/work/$VARIANT-llvm/tools/clang-tools-extra/.git" ]; then
git clone --depth=1 --single-branch -b "$LLVM_BRANCH" \
"$CLANG_TOOLS_EXTRA_REPO" "$VARIANT-llvm/tools/clang-tools-extra";
else
(cd "/work/$VARIANT-llvm/tools/clang-tools-extra" && git pull);
fi
fi
export CCACHE_DIR=$CCACHE_DIR
echo "CCACHE_DIR: $CCACHE_DIR"
eval "$COMPILE_CPP_WRAPPER"
cd "/work/$VARIANT-llvm"
eval "$PATCH_COMMAND"
cd /work/build
eval "$CMAKE_COMMAND"
eval ninja "$VERBOSE"
eval ninja "$VERBOSE" install