@@ -19,39 +19,85 @@ jobs:
19
19
build :
20
20
runs-on : ${{ matrix.os }}
21
21
strategy :
22
+ fail-fast : false
22
23
matrix :
23
- os : [ubuntu-22.04, ubuntu- 24.04, macos-latest ]
24
+ os : [ubuntu-24.04]
24
25
compiler : [gcc, clang]
25
- exclude :
26
- - os : macos-latest
26
+ generator : [Ninja, Unix Makefiles]
27
+ cmake_version : [4.0.1, 3.31.7, 3.28.6, 3.26.6, 3.21.7, 3.20.6, 3.16.9, 3.12.4, 3.10.3]
28
+ # Additionally test Ubuntu and macOS with default packages
29
+ include :
30
+ - os : ubuntu-22.04
31
+ cmake_version : default
32
+ generator : Unix Makefiles
33
+ compiler : gcc
34
+ - os : ubuntu-22.04
35
+ cmake_version : default
36
+ generator : Unix Makefiles
37
+ compiler : clang
38
+ - os : ubuntu-22.04
39
+ cmake_version : default
40
+ generator : Ninja
27
41
compiler : gcc
28
-
42
+ - os : ubuntu-22.04
43
+ cmake_version : default
44
+ generator : Ninja
45
+ compiler : clang
46
+ - os : macos-latest
47
+ compiler : clang
48
+ cmake_version : default
49
+ generator : Unix Makefiles
50
+ - os : macos-latest
51
+ compiler : clang
52
+ cmake_version : default
53
+ generator : Ninja
54
+
29
55
steps :
30
56
- name : Checkout code
31
57
uses : actions/checkout@v4
32
58
33
- - name : Install CMake, lcov, gfortran on Linux
59
+ - name : Install lcov, compilers on Linux
34
60
if : runner.os == 'Linux'
35
61
run : |
36
62
sudo apt-get update
37
- sudo apt-get install -y cmake lcov gfortran
63
+ sudo apt-get install -y lcov gfortran ${{ matrix.compiler }}
64
+
65
+ - name : Install default CMake
66
+ if : runner.os == 'Linux' && matrix.cmake_version == 'default'
67
+ run : |
68
+ sudo apt-get update
69
+ sudo apt-get install -y cmake
70
+
71
+ - name : Install specific CMake version
72
+ if : runner.os == 'Linux' && matrix.cmake_version != 'default'
73
+ run : |
74
+ sudo apt-get update
75
+ sudo apt-get install -y wget
76
+ wget https://github.com/Kitware/CMake/releases/download/v${{ matrix.cmake_version }}/cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz
77
+ tar -xzf cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz --strip-components=1 -C cmake
78
+ sudo cp -r cmake/* /usr/local/
38
79
39
80
- name : Install CMake, lcov on macOS
40
81
if : runner.os == 'macOS'
41
82
run : |
42
83
brew update
43
84
brew install cmake lcov
44
85
86
+ - name : Print CMake version
87
+ run : cmake --version
88
+
45
89
- name : Configure and build
46
90
run : |
47
91
mkdir build && cd build
48
- cmake .. -DENABLE_COVERAGE=On
49
- make
50
- make gcov lcov test
51
-
52
- - name : lcov report
53
- uses : actions/upload-artifact@v4
54
- with :
55
- name : code-coverage-report
56
- path : ./build/lcov
92
+ cmake .. -DCMAKE_C_COMPILER="${{ matrix.compiler }}" -G "${{ matrix.generator }}" -DENABLE_COVERAGE=On
93
+ cmake --build .
94
+ cmake --build . --target test
95
+ cmake --build . --target gcov
96
+ cmake --build . --target lcov
57
97
98
+ # - name: Codecov upload
99
+ # uses: codecov/codecov-action@v5
100
+ # with:
101
+ # name: codecov-coverage
102
+ # token: ${{ secrets.CODECOV_TOKEN }}
103
+ # fail_ci_if_error: true
0 commit comments