@@ -66,52 +66,52 @@ jobs:
6666 developer_mode : ON
6767
6868 include :
69- # Inject gcov_executable variable
70- - compiler : llvm
71- gcov_executable : " llvm-cov gcov"
72- - compiler : llvm-16.0.6
73- gcov_executable : " llvm-cov gcov"
74- - compiler : gcc-13
75- gcov_executable : gcov-13
76-
7769 # Enable package for release build
7870 - build_type : Release
7971 developer_mode : OFF
8072 package_generator : ZIP
8173
8274 steps :
83- - name : Linux - Maximize build disk space
84- uses : easimon/maximize-build-space@v10
85- if : runner.os == 'Linux'
86- with :
87- root-reserve-mb : 30720
88- swap-size-mb : 1024
89- remove-android : " true"
90- remove-docker-images : " true"
91- remove-dotnet : " true"
75+ # Use this if a fairly large library is requried, like building and using llvm as a library.
76+ # - name: Linux - Maximize build disk space
77+ # uses: easimon/maximize-build-space@v10
78+ # if: runner.os == 'Linux'
79+ # with:
80+ # root-reserve-mb: 30720
81+ # swap-size-mb: 1024
82+ # remove-android: "true"
83+ # remove-docker-images: "true"
84+ # remove-dotnet: "true"
9285
9386 - uses : actions/checkout@v4
9487
88+ - name : Parse environment
89+ id : parsed
90+ uses : ./.github/actions/parse_environment
91+ with :
92+ os : ${{ matrix.os }}
93+ compiler : ${{ matrix.compiler }}
94+
9595 - name : Setup cache
9696 uses : ./.github/actions/setup_cache
9797 with :
98- compiler : ${{ matrix.compiler }}
99- build_type : ${{ matrix.build_type }}
100- developer_mode : ${{ matrix.developer_mode }}
98+ key : ${{ steps.parsed.outputs.os_name }}-${{ steps.parsed.outputs.os_version }}-${{ steps.parsed.outputs.compiler_name }}-${{ steps.parsed.outputs.compiler_version }}-${{ matrix.build_type }}-${{ matrix.developer_mode }}
99+ restore_key : ${{ steps.parsed.outputs.os_name }}-${{ steps.parsed.outputs.os_version }}-${{ steps.parsed.outputs.compiler_name }}-${{ steps.parsed.outputs.compiler_version }}-${{ matrix.build_type }}
101100
102101 - name : Setup cpp
103102 uses : aminya/setup-cpp@v0.37.0
104103 with :
105104 compiler : ${{ matrix.compiler }}
106- vcvarsall : ${{ contains(matrix .os, 'windows') }}
105+ vcvarsall : ${{ runner .os == 'Windows' }}
107106
108107 cmake : true
109108 ninja : true
110109 ccache : true
111110 python : true
112111
112+ # llvm and clang-tidy version should match according to https://github.com/aminya/setup-cpp/issues/249
113+ clangtidy : ${{ startsWith(matrix.compiler, 'llvm-') && steps.parsed.outputs.compiler_version || 'true' }}
113114 cppcheck : true
114- clangtidy : true
115115
116116 gcovr : 7.2 # The default version 5.2 stucks on macos gcc
117117 opencppcoverage : true
@@ -120,44 +120,46 @@ jobs:
120120 uses : ./.github/actions/setup_conan
121121 id : conan
122122 with :
123- os : ${{ matrix.os }}
124- arch : x86_64
125- compiler : ${{ matrix.compiler }}
123+ os_name : ${{ steps.parsed.outputs.os_name }}
124+ os_version : ${{ steps.parsed.outputs.os_version }}
125+ arch : ${{ steps.parsed.outputs.arch }}
126+ compiler_name : ${{ steps.parsed.outputs.compiler_name }}
127+ compiler_version : ${{ steps.parsed.outputs.compiler_version }}
126128 build_type : ${{ matrix.build_type }}
127129
128130 - name : Configure cmake
129131 run : |
130- cmake --preset ${{ steps.conan .outputs.compiler_name }} ${{ steps.conan .outputs.compiler_name == 'msvc' && '-A x64 -T v143' || '' }} -D ENABLE_DEVELOPER_MODE:BOOL=${{ matrix.developer_mode }} -D OPT_ENABLE_COVERAGE:BOOL=${{ matrix.build_type == 'Debug' }}
132+ cmake --preset ${{ steps.parsed .outputs.compiler_name }} ${{ steps.parsed .outputs.compiler_name == 'msvc' && '-A x64 -T v143' || '' }} -D ENABLE_DEVELOPER_MODE:BOOL=${{ matrix.developer_mode }} -D OPT_ENABLE_COVERAGE:BOOL=${{ matrix.build_type == 'Debug' }}
131133
132134 - name : Build and test
133135 run : |
134136 conan build . ${{ steps.conan.outputs.args }}
135137
136138 - name : Unix - Coverage
137139 if : runner.os != 'Windows'
138- working-directory : build/${{ steps.conan .outputs.compiler_name }}
140+ working-directory : build/${{ steps.parsed .outputs.compiler_name }}
139141 run : |
140142 ctest -C ${{ matrix.build_type }}
141- gcovr -j ${{ env.nproc }} --delete --root ../../ --print-summary --xml-pretty --xml coverage.xml . --gcov-executable '${{ matrix .gcov_executable }}'
143+ gcovr -j ${{ env.nproc }} --delete --root ../../ --print-summary --xml-pretty --xml coverage.xml . --gcov-executable '${{ steps.parsed.outputs .gcov_executable }}'
142144
143145 - name : Windows - Coverage
144146 if : runner.os == 'Windows'
145- working-directory : build/${{ steps.conan .outputs.compiler_name }}
147+ working-directory : build/${{ steps.parsed .outputs.compiler_name }}
146148 run : |
147149 OpenCppCoverage.exe --export_type cobertura:coverage.xml --cover_children -- ctest -C ${{ matrix.build_type }}
148150
149151 - name : Publish to codecov
150152 uses : codecov/codecov-action@v4.4.0
151153 with :
152- files : ./build/${{ steps.conan .outputs.compiler_name }}/coverage.xml
154+ files : ./build/${{ steps.parsed .outputs.compiler_name }}/coverage.xml
153155 flags : ${{ runner.os }}
154156 name : ${{ runner.os }}-coverage
155157 token : ${{ secrets.CODECOV_TOKEN }}
156158 verbose : true
157159
158160 - name : CPack
159161 if : matrix.package_generator != ''
160- working-directory : build/${{ steps.conan .outputs.compiler_name }}
162+ working-directory : build/${{ steps.parsed .outputs.compiler_name }}
161163 run : |
162164 cpack -C ${{ matrix.build_type }} -G ${{ matrix.package_generator }} -B _package -V
163165
@@ -166,4 +168,4 @@ jobs:
166168 if : ${{ startsWith(github.ref, 'refs/tags/') && matrix.package_generator != '' }}
167169 with :
168170 files : |
169- build/${{ steps.conan .outputs.compiler_name }}/_package/*.*
171+ build/${{ steps.parsed .outputs.compiler_name }}/_package/*.*
0 commit comments