@@ -193,6 +193,12 @@ jobs:
193
193
llvm-project
194
194
${{ matrix.cling=='On' && 'cling' || '' }}
195
195
key : ${{ steps.cache.outputs.cache-primary-key }}
196
+ - name : Setup code coverage
197
+ if : ${{ success() && (matrix.coverage == true) }}
198
+ run : |
199
+ sudo apt install lcov
200
+ echo "CODE_COVERAGE=1" >> $GITHUB_ENV
201
+ echo "BUILD_TYPE=Debug" >> $GITHUB_ENV
196
202
- name : Build and Test/Install CppInterOp
197
203
run : |
198
204
LLVM_DIR="$(realpath llvm-project)"
@@ -214,22 +220,24 @@ jobs:
214
220
export CPPINTEROP_BUILD_DIR=$PWD
215
221
cling_on="${{ matrix.cling }}"
216
222
if [[ "${cling_on^^}" == "ON" ]]; then
217
- cmake -DCMAKE_BUILD_TYPE=Release \
218
- -DUSE_CLING=ON \
219
- -DUSE_REPL=OFF \
220
- -DCling_DIR=$LLVM_BUILD_DIR \
221
- -DLLVM_DIR=$LLVM_BUILD_DIR \
222
- -DLLVM_USE_LINKER=lld \
223
- -DBUILD_SHARED_LIBS=ON \
223
+ cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
224
+ -DUSE_CLING=ON \
225
+ -DUSE_REPL=OFF \
226
+ -DCling_DIR=$LLVM_BUILD_DIR \
227
+ -DLLVM_DIR=$LLVM_BUILD_DIR \
228
+ -DLLVM_USE_LINKER=lld \
229
+ -DBUILD_SHARED_LIBS=ON \
230
+ -DCODE_COVERAGE=${CODE_COVERAGE} \
224
231
-DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \
225
232
../
226
233
else
227
- cmake -DCMAKE_BUILD_TYPE=Release \
228
- -DUSE_CLING=OFF \
229
- -DUSE_REPL=ON \
230
- -DLLVM_DIR=$LLVM_BUILD_DIR \
231
- -DLLVM_USE_LINKER=lld \
232
- -DBUILD_SHARED_LIBS=ON \
234
+ cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
235
+ -DUSE_CLING=OFF \
236
+ -DUSE_REPL=ON \
237
+ -DLLVM_DIR=$LLVM_BUILD_DIR \
238
+ -DLLVM_USE_LINKER=lld \
239
+ -DBUILD_SHARED_LIBS=ON \
240
+ -DCODE_COVERAGE=${CODE_COVERAGE} \
233
241
-DCMAKE_INSTALL_PREFIX=$CPPINTEROP_DIR \
234
242
../
235
243
fi
@@ -357,3 +365,20 @@ jobs:
357
365
uses : mxschmitt/action-tmate@v3
358
366
# When debugging increase to a suitable value!
359
367
timeout-minutes : ${{ github.event.pull_request && 1 || 20 }}
368
+
369
+ - name : Prepare code coverage report
370
+ if : ${{ success() && (matrix.coverage == true) }}
371
+ run : |
372
+ # Create lcov report
373
+ # capture coverage info
374
+ vers="${CC#*-}"
375
+ lcov --directory build/ --capture --output-file coverage.info --gcov-tool /usr/bin/gcov-${vers}
376
+ lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' ${{ github.workspace }}'/llvm-project/*' --output-file coverage.info
377
+ # output coverage data for debugging (optional)
378
+ lcov --list coverage.info
379
+
380
+ - name : Upload to codecov.io
381
+ if : ${{ success() && (matrix.coverage == true) }}
382
+ uses : codecov/codecov-action@v3
383
+ with :
384
+ file : ./coverage.info
0 commit comments