blob: 6bfc3105f776048302dc952c942a62e8fef0a944 (
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# Build dependencies
install_build_dependencies_llvm() {
apt update -y
dependencies=(
build-essential
autoconf
automake
groff
gcc
g++
python-dev
make
subversion # To check out code
zlib1g-dev
cmake
)
if [[ "${SANITIZERS[*]}" == "memory" ]]; then
dependencies+=(ninja-build)
fi
#Install essential dependencies
apt -y --no-install-recommends install "${dependencies[@]}"
}
install_binary_artifact_llvm() {
local enable_optimized=$(to_bool "${ENABLE_OPTIMIZED}")
local enable_debug=$(to_bool "${ENABLE_DEBUG}")
local disable_assertions=$(to_bool "${DISABLE_ASSERTIONS}")
local requires_rtti=$(to_bool "${REQUIRES_RTTI}")
local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
local LLVM_VERSION_MINOR="${LLVM_VERSION/*./}"
# No support for LLVM packages with debug information, incompatible if requested otherwise
[[ "${enable_debug}" -eq 1 ]] && return 1
# Packages are build with assertions disabled, incompatible if requested otherwise
[[ "${disable_assertions}" -eq 0 ]] && return 1
# Packages are build with RTTI enabled, incompatible if requested otherwise
[[ "${requires_rtti}" -eq 0 ]] && return 1
# Enable/Disable optimized does not matter
# Check versions: no support for LLVM < 3.8
if [[ "${LLVM_VERSION_MAJOR}" -eq 3 ]]; then
[[ "${LLVM_VERSION_MINOR}" -lt 8 ]] && return 1
fi
# Add certificate
apt update -y
dependencies=(
ca-certificates
wget
)
apt -y --no-install-recommends install "${dependencies[@]}"
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add -
local version=""
[[ "${LLVM_VERSION_MAJOR}" -le 6 ]] && version="-${LLVM_VERSION}"
[[ "${LLVM_VERSION_MAJOR}" -ge 7 ]] && version="-${LLVM_VERSION_MAJOR}"
# Add repository
echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${version} main" >> /etc/apt/sources.list
apt update -y
dependencies=(
"llvm${version}"
"llvm${version}-dev"
"llvm${version}-runtime"
"clang${version}"
)
#Install essential dependencies
apt -y --no-install-recommends install "${dependencies[@]}"
}
# Check if the binary artifact is installed
is_installed_llvm() {
local lc=""
# Check if llvm-config with the right version exists
lc=$(which "llvm-config-${LLVM_VERSION}")
[[ -z "${lc}" ]] && return 1
local rtti
rtti="$(${lc} --has-rtti)"
local assertion
assertion="$(${lc} --assertion-mode)"
local build_mode
build_mode="$(${lc} --build-mode)"
# Check requested mode with mode of the found item
[[ $(to_bool "${REQUIRES_RTTI}") -eq $(to_bool "${rtti}") ]] || return 1
[[ $(to_bool "${DISABLE_ASSERTIONS}") -ne $(to_bool "${assertion}") ]] || return 1
}
|