forked from ldc-developers/ldc
-
Notifications
You must be signed in to change notification settings - Fork 0
161 lines (153 loc) · 5.85 KB
/
supported_llvm_versions.yml
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
name: Vanilla LLVM
on:
- pull_request
- push
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- job_name: Ubuntu 18.04, LLVM 16, latest LDC beta
os: ubuntu-18.04
host_dc: ldc-beta
llvm_version: 16.0.3
- job_name: Ubuntu 18.04, LLVM 15, latest LDC beta
os: ubuntu-18.04
host_dc: ldc-beta
llvm_version: 15.0.6
- job_name: Ubuntu 18.04, LLVM 14, latest LDC beta
os: ubuntu-18.04
host_dc: ldc-beta
llvm_version: 14.0.0
# the compiler-rt libs installation is somehow non-standard
cmake_flags: -DLDC_INSTALL_LLVM_RUNTIME_LIBS_OS=x86_64-unknown-linux-gnu -DLDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH=""
- job_name: Ubuntu 18.04, LLVM 12, latest LDC beta
os: ubuntu-18.04
host_dc: ldc-beta
llvm_version: 12.0.1
cmake_flags: -DLIB_SUFFIX=64
- job_name: Ubuntu 18.04, LLVM 11, latest LDC beta
os: ubuntu-18.04
host_dc: ldc-beta
llvm_version: 11.1.0
cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON
- job_name: Ubuntu 18.04, LLVM 9, latest DMD beta
os: ubuntu-18.04
host_dc: dmd-beta
llvm_version: 9.0.1
cmake_flags: -DBUILD_SHARED_LIBS=OFF -DRT_SUPPORT_SANITIZERS=ON -DLDC_LINK_MANUALLY=ON
- job_name: macOS 10.15, LLVM 10, latest DMD beta
os: macos-10.15
host_dc: dmd-beta
llvm_version: 10.0.1
cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON -DLDC_LINK_MANUALLY=ON
- job_name: macOS 10.15, LLVM 13, latest LDC beta
os: macos-10.15
host_dc: ldc-beta
llvm_version: 13.0.1
cmake_flags: -DBUILD_SHARED_LIBS=OFF
name: ${{ matrix.job_name }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 50
- name: Install ninja
uses: seanmiddleditch/gha-setup-ninja@v3
- name: Install D host compiler
uses: dlang-community/setup-dlang@v1
with:
compiler: ${{ matrix.host_dc }}
- name: Clear LD_LIBRARY_PATH to prevent loading host compiler libs
run: echo "LD_LIBRARY_PATH=" >> $GITHUB_ENV
- name: Install lit
run: |
set -euxo pipefail
python3 -m pip install --user setuptools wheel
python3 -m pip install --user lit
python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
- name: 'Linux: Install gdb'
if: runner.os == 'Linux'
run: |
set -eux
sudo apt-get update
# Don't use latest gdb v10 from Ubuntu toolchain PPA with regressions, use official v8
sudo apt-get install gdb=8.1.1-0ubuntu1
- name: Try to restore cached LLVM
uses: actions/cache@v2
with:
path: llvm
key: llvm-${{ matrix.llvm_version }}-${{ runner.os }}
- name: Download & extract prebuilt vanilla LLVM ${{ matrix.llvm_version }}
run: |
set -eux
if [[ -d llvm ]]; then
echo "Already cached"
exit 0
fi
version='${{ matrix.llvm_version }}'
if [[ '${{ runner.os }}' == macOS ]]; then
suffix='x86_64-apple-darwin'
elif [[ "$version" =~ ^1[3-9]\. ]]; then
suffix='x86_64-linux-gnu-ubuntu-18.04' # LLVM 13.0.1+
else
suffix='x86_64-linux-gnu-ubuntu-16.04'
fi
curl -fL --retry 3 --max-time 300 -o llvm.tar.xz \
https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/clang+llvm-$version-$suffix.tar.xz
mkdir llvm
tar -xf llvm.tar.xz --strip 1 -C llvm
rm llvm.tar.xz
- name: 'Linux: Make ld.gold or lld the default linker'
if: runner.os == 'Linux'
run: |
set -eux
if [[ '${{ matrix.llvm_version }}' =~ ^1[3-9]\. ]]; then
echo "Using lld for LLVM 13+ to work around sporadic failures"
sudo ln -sf "$PWD/llvm/bin/ld.lld" /usr/bin/ld
else
sudo ln -sf /usr/bin/ld.gold /usr/bin/ld
fi
ld --version
- name: Build LDC & LDC D unittests & defaultlib unittest runners with extra '${{ matrix.cmake_flags }}'
run: |
set -eux
cmake -G Ninja . \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ROOT_DIR="$PWD/llvm" \
-DLDC_LINK_MANUALLY=OFF \
${{ matrix.cmake_flags }}
ninja all ldc2-unittest all-test-runners
bin/ldc2 --version
- name: Run LDC D unittests
if: success() || failure()
run: ctest --output-on-failure -R "ldc2-unittest"
- name: Run LIT testsuite
if: success() || failure()
run: |
set -eux
# LLVM 9: libclang_rt.fuzzer-x86_64.a not compiled with -fPIC
if [[ '${{ matrix.llvm_version }}' = 9.* ]]; then
echo "config.available_features.remove('Fuzzer')" >> tests/sanitizers/lit.local.cfg
fi
ctest -V -R "lit-tests"
- name: Run DMD testsuite
if: success() || failure()
run: ctest -V -R "dmd-testsuite"
- name: Run defaultlib unittests & druntime integration tests
if: success() || failure()
run: |
set -eux
excludes='dmd-testsuite|lit-tests|ldc2-unittest'
if [[ '${{ runner.os }}' == macOS ]]; then
N=$(sysctl -n hw.logicalcpu)
else
N=$(nproc)
fi
ctest -j$N --output-on-failure -E "$excludes"