Skip to content

Commit b259d6b

Browse files
committed
ci: add Clang test matrix
1 parent 0294763 commit b259d6b

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

.github/workflows/tests.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,86 @@ jobs:
218218
ctest --list-presets
219219
ctest --preset ${{ matrix.cmake-preset }}
220220
221+
test-on-clang:
222+
strategy:
223+
fail-fast: false
224+
225+
matrix:
226+
clang-version: [11, 14, 18, 22]
227+
cppstd: ['17', '20', '23']
228+
build-type: [Debug, Release]
229+
exclude:
230+
- clang-version: 11
231+
cppstd: '23'
232+
include:
233+
- build-type: Debug
234+
cmake-preset: conan-debug
235+
- build-type: Release
236+
cmake-preset: conan-release
237+
238+
name: Clang ${{ matrix.clang-version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
239+
240+
runs-on: ubuntu-22.04
241+
242+
env:
243+
CC: clang-${{ matrix.clang-version }}
244+
CXX: clang++-${{ matrix.clang-version }}
245+
246+
steps:
247+
- uses: actions/checkout@v4
248+
249+
- name: Install Clang
250+
uses: egor-tensin/setup-clang@v2
251+
with:
252+
version: ${{ matrix.clang-version }}
253+
cc: 0
254+
255+
- name: Check Clang Version
256+
shell: bash
257+
run: |
258+
"$CC" --version
259+
compiler_major="$("$CC" -dM -E -x c /dev/null | awk '$2 == "__clang_major__" {print $3}')"
260+
[[ "$compiler_major" == "${{ matrix.clang-version }}" ]]
261+
262+
- name: Install Conan
263+
uses: turtlebrowser/get-conan@main
264+
265+
- name: Setup Conan
266+
run: |
267+
conan --version
268+
conan profile detect --force
269+
conan profile show -pr default --format=json |
270+
jq -e --arg version "${{ matrix.clang-version }}" '
271+
.host.settings.compiler == "clang"
272+
and .host.settings["compiler.version"] == $version
273+
and .host.settings["compiler.libcxx"] == "libstdc++11"
274+
'
275+
276+
- name: Install CMake
277+
uses: lukka/get-cmake@latest
278+
279+
- name: Install dependencies
280+
run: >
281+
conan install .
282+
-s compiler.cppstd=${{ matrix.cppstd }}
283+
-s build_type=${{ matrix.build-type }}
284+
-b missing
285+
286+
- name: CMake Configure
287+
run: |
288+
cmake --list-presets
289+
cmake --preset ${{ matrix.cmake-preset }}
290+
291+
- name: Build
292+
run: |
293+
cmake --build --list-presets
294+
cmake --build --preset ${{ matrix.cmake-preset }}
295+
296+
- name: Test
297+
run: |
298+
ctest --list-presets
299+
ctest --preset ${{ matrix.cmake-preset }}
300+
221301
test-on-old-gcc:
222302
strategy:
223303
fail-fast: false

0 commit comments

Comments
 (0)