Skip to content

Commit

Permalink
fix: dev: cleanup llvm coverage in smoke workflow, sort out version path
Browse files Browse the repository at this point in the history
* give find_package a hint for finding the correct versioned LLVM dir
* use LLVM_VER_DIR to set major llvm version path (mainly for CI)
* set default in tox (github workflows get /usr/lib/ prepended)

Signed-off-by: Stephen L Arnold <[email protected]>
  • Loading branch information
sarnold committed Mar 9, 2025
1 parent 9983d53 commit 786bf5e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 25 deletions.
12 changes: 7 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
windows-2019-cl,
ubuntu-22.04-gcc-10,
ubuntu-24.04-gcc-13,
ubuntu-22.04-clang-14,
ubuntu-22.04-clang-15,
macOS-13-gcc,
macOS-13-clang,
]
Expand All @@ -51,10 +51,10 @@ jobs:
version: "13"
toxcmd: libs

- name: ubuntu-22.04-clang-14
- name: ubuntu-22.04-clang-15
os: ubuntu-22.04
compiler: clang
version: "14"
version: "15"
toxcmd: clang

- name: macOS-13-gcc
Expand Down Expand Up @@ -100,22 +100,24 @@ jobs:
echo "CC=gcc-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=g++-${{ matrix.version }}" >> $GITHUB_ENV
else
sudo apt-get install -y clang-${{ matrix.version }} llvm-${{ matrix.version }} lld-${{ matrix.version }} g++-multilib
sudo apt-get install -y clang-${{ matrix.version }} clang++-${{ matrix.version }} llvm-${{ matrix.version }}-tools lld-${{ matrix.version }}
echo "CC=clang-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ matrix.version }}" >> $GITHUB_ENV
echo "LLVM_VER_DIR=/usr/lib/llvm-${{ matrix.version }}" >> $GITHUB_ENV
fi
- name: Build and test Linux
if: runner.os == 'Linux'
env:
CC: ${{ env.CC }}
CXX: ${{ env.CXX }}
LLVM_VER_DIR: ${{ env.LLVM_VER_DIR }}
PREFIX: ../staging
run: |
tox -e ${{ matrix.toxcmd }}
- uses: actions/upload-artifact@v4
if: matrix.name == 'ubuntu-22.04-clang-14'
if: matrix.name == 'ubuntu-22.04-clang-15'
with:
name: src_coverage_data
path: |
Expand Down
43 changes: 23 additions & 20 deletions cmake/coverage.cmake
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
option(COVERAGE_TEXT "Show text summary of the coverage" OFF)
option(COVERAGE_TEXT "Show text summary of the coverage" ON)
option(COVERAGE_LCOV "Export coverage data in lcov trace file" ON)
option(COVERAGE_HTML "Detailed html report of the coverage" ON)
option(COVERAGE_HTML "Detailed html report of the coverage" OFF)

set(COVERAGE_EXCLUDE_REGEX "(lib/)")
set(COVERAGE_EXCLUDE_REGEX "(test/|lib/)")
set(COVERAGE_PATH ${PROJECT_BINARY_DIR}/coverage)
set(LLVM_DIRECTORY "$ENV{LLVM_VER_DIR}")

if(COVERAGE_BUILD)
message(
STATUS
"Source coverage is enabled. TEXT=${COVERAGE_TEXT}, LCOV=${COVERAGE_LCOV}, HTML=${COVERAGE_HTML}"
)

find_package(LLVM REQUIRED CONFIG)
get_filename_component(LLVM_PREFIX "${LLVM_DIR}" DIRECTORY)
message(STATUS "Found llvm directory: ${LLVM_PREFIX}")
find_package(
LLVM REQUIRED CONFIG
HINTS ${LLVM_DIRECTORY}
)
message(STATUS "Using llvm directory: ${LLVM_DIRECTORY}")

find_program(
LLVM_COV_PATH
NAMES llvm-cov
HINTS ${LLVM_PREFIX}
HINTS ${LLVM_DIRECTORY}
PATH_SUFFIXES bin
)
find_program(
LLVM_PROFDATA_PATH
NAMES llvm-profdata
HINTS ${LLVM_PREFIX}
HINTS ${LLVM_DIRECTORY}
PATH_SUFFIXES bin
)

Expand Down Expand Up @@ -74,6 +77,18 @@ function(add_coverage TARGET)

add_custom_target(coverage)

if(COVERAGE_TEXT)
add_custom_target(
coverage-text
COMMAND
${LLVM_COV_PATH} report `cat ${COVERAGE_TARGETS}`
-instr-profile=${COVERAGE_PROFDATA}
-ignore-filename-regex="${COVERAGE_EXCLUDE_REGEX}"
DEPENDS coverage-profdata
)
add_dependencies(coverage coverage-text)
endif()

if(COVERAGE_HTML)
add_custom_target(
coverage-html
Expand All @@ -100,18 +115,6 @@ function(add_coverage TARGET)
)
add_dependencies(coverage coverage-lcov)
endif()

if(COVERAGE_TEXT)
add_custom_target(
coverage-text
COMMAND
${LLVM_COV_PATH} report `cat ${COVERAGE_TARGETS}`
-instr-profile=${COVERAGE_PROFDATA}
-ignore-filename-regex="${COVERAGE_EXCLUDE_REGEX}"
DEPENDS coverage-profdata
)
add_dependencies(coverage coverage-text)
endif()
endif()

add_custom_target(
Expand Down
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ setenv =
{base,libs,clang,ctest}: ABC_USE_SONAME={env:ABC_USE_SONAME:ON}
{base,libs,clang,ctest}: ABC_USE_PIC={env:ABC_USE_PIC:ON}
{base,libs,clang,ctest}: VENDOR_GTEST={env:VENDOR_GTEST:OFF}
{base,libs,clang,ctest}: LLVM_VER_DIR = {env:LLVM_VER_DIR:llvm-15}
{base,libs,clang}: BUILD_TYPE={env:BUILD_TYPE:Release}
{ctest,ctestwin}: BUILD_TYPE={env:BUILD_TYPE:Debug}
base: PREFIX={env:PREFIX:staging}
Expand Down

0 comments on commit 786bf5e

Please sign in to comment.