|
1 | | -set -ex |
2 | | -pushd ~ |
3 | | - |
4 | | -# Workaround for Travis CI macOS bug (https://github.com/travis-ci/travis-ci/issues/6307) |
5 | | -if [ "${TRAVIS_OS_NAME}" == "osx" ]; then |
6 | | - rvm get head || true |
7 | | -fi |
| 1 | +#!/usr/bin/env bash |
| 2 | +# Bail on first error |
| 3 | +set -e |
| 4 | +# Bail if an unset variable is encountered |
| 5 | +set -u |
| 6 | +# Enable debugging output |
| 7 | +set -x |
| 8 | +# Give a pipeline a non-zero exit code if one of its constituents fails |
| 9 | +set -o pipefail |
8 | 10 |
|
9 | 11 | function llvm_linux_target_triple() { |
10 | | - if [ "$1" == "5.0" ]; then |
11 | | - echo "linux-x86_64-ubuntu14.04" |
12 | | - else |
13 | | - echo "x86_64-linux-gnu-ubuntu-14.04" |
14 | | - fi |
| 12 | + case "$1" in |
| 13 | + 5.*) echo "linux-x86_64-ubuntu14.04" ;; |
| 14 | + *) echo "x86_64-linux-gnu-ubuntu-14.04" ;; |
| 15 | + esac |
| 16 | +} |
| 17 | + |
| 18 | +function llvm_macos_target_triple() { |
| 19 | + case "$1" in |
| 20 | + [0-8].* | 9.0.0) echo "x86_64-darwin-apple" ;; |
| 21 | + # Starting with 9.0.1, triple swapped ordering |
| 22 | + *) echo "x86_64-apple-darwin" ;; |
| 23 | + esac |
15 | 24 | } |
16 | 25 |
|
17 | 26 | function llvm_version_triple() { |
18 | | - if [ "$1" == "3.5" ]; then |
19 | | - echo "3.5.2" |
20 | | - elif [ "$1" == "3.6" ]; then |
21 | | - echo "3.6.2" |
22 | | - elif [ "$1" == "3.7" ]; then |
23 | | - echo "3.7.1" |
24 | | - elif [ "$1" == "3.8" ]; then |
25 | | - echo "3.8.1" |
26 | | - elif [ "$1" == "3.9" ]; then |
27 | | - echo "3.9.0" |
28 | | - elif [ "$1" == "4.0" ]; then |
29 | | - echo "4.0.0" |
30 | | - elif [ "$1" == "5.0" ]; then |
31 | | - echo "5.0.0" |
32 | | - elif [ "$1" == "9.0" ]; then |
33 | | - echo "9.0.0" |
34 | | - fi |
| 27 | + case "$1" in |
| 28 | + 3.5) echo "3.5.2" ;; |
| 29 | + 3.6) echo "3.6.2" ;; |
| 30 | + 3.7) echo "3.7.1" ;; |
| 31 | + 3.8) echo "3.8.1" ;; |
| 32 | + # By default, take the .0 patch release |
| 33 | + *) echo "$1.0" ;; |
| 34 | + esac |
| 35 | +} |
| 36 | + |
| 37 | +function llvm_base_url() { |
| 38 | + local llvm_version_triple=$1 |
| 39 | + |
| 40 | + case "$llvm_version_triple" in |
| 41 | + [0-8].* | 9.0.0) |
| 42 | + echo "http://releases.llvm.org/$llvm_version_triple" |
| 43 | + ;; |
| 44 | + # Starting with 9.0.1, releases are hosted on github |
| 45 | + *) |
| 46 | + echo "https://github.com/llvm/llvm-project/releases/download/llvmorg-$llvm_version_triple" |
| 47 | + ;; |
| 48 | + esac |
35 | 49 | } |
36 | 50 |
|
37 | 51 | function llvm_download() { |
38 | | - export LLVM_VERSION_TRIPLE=`llvm_version_triple ${LLVM_VERSION}` |
39 | | - export LLVM=clang+llvm-${LLVM_VERSION_TRIPLE}-$1 |
| 52 | + local base_url=$1 |
| 53 | + local arch=$2 |
| 54 | + |
| 55 | + export LLVM=clang+llvm-${LLVM_VERSION_TRIPLE}-$arch |
40 | 56 | export LLVM_DIRECTORY="$HOME/.llvm/${LLVM}" |
41 | 57 |
|
| 58 | + local base_url |
| 59 | + |
42 | 60 | if [ -d "${LLVM_DIRECTORY}" ]; then |
43 | 61 | echo "Using cached LLVM download for ${LLVM}..." |
44 | 62 | else |
45 | | - wget http://releases.llvm.org/${LLVM_VERSION_TRIPLE}/${LLVM}.tar.xz |
| 63 | + wget $base_url/${LLVM}.tar.xz |
46 | 64 | mkdir -p "${LLVM_DIRECTORY}" |
47 | 65 | tar xf ${LLVM}.tar.xz -C "${LLVM_DIRECTORY}" --strip-components=1 |
48 | 66 | fi |
49 | 67 |
|
| 68 | + export LIBCLANG_PATH="${LLVM_DIRECTORY}/lib" |
50 | 69 | export LLVM_CONFIG_PATH="${LLVM_DIRECTORY}/bin/llvm-config" |
51 | 70 | } |
52 | 71 |
|
| 72 | +export LLVM_VERSION_TRIPLE=`llvm_version_triple ${LLVM_VERSION}` |
| 73 | + |
| 74 | +base_url=`llvm_base_url ${LLVM_VERSION_TRIPLE}` |
| 75 | + |
53 | 76 | if [ "${TRAVIS_OS_NAME}" == "linux" ]; then |
54 | | - llvm_download `llvm_linux_target_triple ${LLVM_VERSION}` |
55 | | - export LD_LIBRARY_PATH="${LLVM_DIRECTORY}/lib":$LD_LIBRARY_PATH |
| 77 | + llvm_download $base_url `llvm_linux_target_triple ${LLVM_VERSION_TRIPLE}` |
| 78 | + export LD_LIBRARY_PATH="${LLVM_DIRECTORY}/lib":${LD_LIBRARY_PATH:-} |
56 | 79 | else |
57 | | - llvm_download x86_64-apple-darwin |
58 | | - cp "${LLVM_DIRECTORY}/lib/libclang.dylib" /usr/local/lib/libclang.dylib |
59 | | - export DYLD_LIBRARY_PATH="${LLVM_DIRECTORY}/lib":$DYLD_LIBRARY_PATH |
| 80 | + llvm_download $base_url `llvm_macos_target_triple ${LLVM_VERSION_TRIPLE}` |
| 81 | + export DYLD_LIBRARY_PATH="${LLVM_DIRECTORY}/lib":${DYLD_LIBRARY_PATH:-} |
60 | 82 | fi |
61 | 83 |
|
62 | | -popd |
63 | | -set +e |
| 84 | +# Subsequent scripts can see the state of `set -eu`, so unset it again. |
| 85 | +set +eu |
0 commit comments