Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 11 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ jobs:
apple-clang *
standards: '20'
latest-factors: |
gcc UBSan Coverage
clang UBSan ASan MSan
gcc UBSan
clang UBSan ASan MSan Coverage
apple-clang UBSan ASan
factors: ''
runs-on: |
Expand All @@ -64,13 +64,11 @@ jobs:
clang: ubuntu:24.04
build-types: |
gcc: Release
gcc Coverage: Release
clang: Release
apple-clang: Release
msvc: RelWithDebInfo
install: |
gcc: git build-essential pkg-config python3 curl unzip openjdk-11-jdk pkg-config libncurses-dev libxml2-utils libxml2-dev
gcc Coverage: git build-essential pkg-config python3 curl unzip openjdk-11-jdk pkg-config libncurses-dev libxml2-utils libxml2-dev lcov
clang: git build-essential pkg-config python3 curl unzip openjdk-11-jdk pkg-config libncurses-dev libxml2-utils libxml2-dev g++-14=14.2.0-4ubuntu2~24.04
msvc: ''
extra-values: |
Expand All @@ -91,7 +89,7 @@ jobs:
common-flags-base: {{#if (ieq compiler 'clang')}}-gz=zstd {{/if}}
common-flags: {{{ common-flags-base }}}{{#if msan }}-fsanitize-memory-track-origins {{/if}}
common-ccflags: {{{ ccflags }}} {{{ common-flags }}}
mrdocs-flags: {{{ warning-flags }}}{{#if (and (eq compiler 'gcc') (not asan)) }}-static {{/if}}
mrdocs-flags: {{{ warning-flags }}}{{#if (and (eq compiler 'gcc') (not asan)) }}-static {{/if}}{{#if (and (ieq compiler 'clang') coverage)}}-fprofile-instr-generate -fcoverage-mapping {{/if}}
mrdocs-ccflags: {{{ common-ccflags }}} {{{ mrdocs-flags }}}
mrdocs-package-generators: {{#if (ieq os 'windows') }}7Z ZIP WIX{{else}}TGZ TXZ{{/if}}
mrdocs-release-package-artifact: release-packages-{{{ lowercase os }}}
Expand Down Expand Up @@ -278,7 +276,7 @@ jobs:
run: |
echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main" >> /etc/apt/sources.list
apt-get update
apt-get install -y libclang-${{ matrix.major }}-dev
apt-get install -y libclang-${{ matrix.major }}-dev llvm-${{ matrix.major }}-tools

# This calculates a bunch of variables, which would normally go in to the regular matrix extra-values
# section, but which depend on paths not known at that point.
Expand Down Expand Up @@ -548,6 +546,8 @@ jobs:

- name: CMake Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.9.2
env:
LLVM_PROFILE_FILE: mrdocs-%b-%m.profraw
with:
cmake-version: '>=3.26'
cxxstd: ${{ matrix.cxxstd }}
Expand Down Expand Up @@ -674,19 +674,11 @@ jobs:
run: |
set -euvx

# Find gcov
gcov_tool="gcov"
for version in "${{steps.setup-cpp.outputs.version-major}}.${{steps.setup-cpp.outputs.version-minor}}" "${{steps.setup-cpp.outputs.version-major}}"; do
if command -v "gcov-$version" &> /dev/null; then
gcov_tool="gcov-$version"
break
fi
done

dir="./build"
lcov --rc branch_coverage=0 --gcov-tool "$gcov_tool" --directory "$dir" --capture --output-file "$dir/all.info" --ignore-errors inconsistent,negative
lcov --rc branch_coverage=0 --ignore-errors inconsistent,negative --list "$dir/all.info"
echo "file=$(realpath "$dir/all.info")" >> $GITHUB_OUTPUT
cd build
find . -name \*.profraw
llvm-profdata-${{ matrix.major }} merge -sparse *.profraw -o default.profdata
llvm-cov-${{ matrix.major }} export -format=lcov -instr-profile=default.profdata bin/mrdocs-test > "mrdocs-test.info"
echo "file=$(realpath "mrdocs-test.info")" >> $GITHUB_OUTPUT

- name: Upload Coverage as Artifact
if: matrix.coverage
Expand Down
34 changes: 17 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -519,23 +519,23 @@ if (MRDOCS_BUILD_TESTS)
set(MRDOCS_SELF_DOC_OUTPUT "${CMAKE_BINARY_DIR}/docs/self-reference")
set(MRDOCS_SELF_DOC_TAGFILE "${MRDOCS_SELF_DOC_OUTPUT}/reference.tag.xml")

add_test(NAME mrdocs-self-doc
COMMAND
mrdocs
"${CMAKE_SOURCE_DIR}/CMakeLists.txt"
"--config=${CMAKE_SOURCE_DIR}/docs/mrdocs.yml"
"--output=${MRDOCS_SELF_DOC_OUTPUT}"
--generator=adoc
"--addons=${CMAKE_SOURCE_DIR}/share/mrdocs/addons"
"--stdlib-includes=${LIBCXX_DIR}"
"--stdlib-includes=${STDLIB_INCLUDE_DIR}"
"--libc-includes=${CMAKE_SOURCE_DIR}/share/mrdocs/headers/libc-stubs"
"--tagfile=${MRDOCS_SELF_DOC_TAGFILE}"
--multipage=true
--concurrency=16
--log-level=debug
$<$<BOOL:${MRDOCS_BUILD_STRICT_TESTS}>:--warn-as-error=true>
)
# add_test(NAME mrdocs-self-doc
# COMMAND
# mrdocs
# "${CMAKE_SOURCE_DIR}/CMakeLists.txt"
# "--config=${CMAKE_SOURCE_DIR}/docs/mrdocs.yml"
# "--output=${MRDOCS_SELF_DOC_OUTPUT}"
# --generator=adoc
# "--addons=${CMAKE_SOURCE_DIR}/share/mrdocs/addons"
# "--stdlib-includes=${LIBCXX_DIR}"
# "--stdlib-includes=${STDLIB_INCLUDE_DIR}"
# "--libc-includes=${CMAKE_SOURCE_DIR}/share/mrdocs/headers/libc-stubs"
# "--tagfile=${MRDOCS_SELF_DOC_TAGFILE}"
# --multipage=true
# --concurrency=16
# --log-level=debug
# $<$<BOOL:${MRDOCS_BUILD_STRICT_TESTS}>:--warn-as-error=true>
# )

#-------------------------------------------------
# XML lint
Expand Down
Loading