diff --git a/.codecov.yml b/.codecov.yml index ffa259b..2733b79 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -9,9 +9,8 @@ coverage: project: # project is the overall code coverage of the whole codebase default: if_ci_failed: success # per default, codecov would fail if any CI fails - target: auto # the target coverage, usually the code coverage of the base-branch - threshold: 0.02% # codecov/project fails if there is a drop of more than 0.02% - patch: # patch is the code-coverage of the changed lines in the PR + informational: true # the codecov/patch status is never "fail" + patch: # patch is the code-coverage of the changed lines in the PR and often reports false positives default: if_ci_failed: success # per default, codecov would fail if any CI fails informational: true # the codecov/patch status is never "fail" diff --git a/.github/workflows/ci_coverage.yml b/.github/workflows/ci_coverage.yml index 466dbed..dd53966 100644 --- a/.github/workflows/ci_coverage.yml +++ b/.github/workflows/ci_coverage.yml @@ -1,25 +1,21 @@ -name: CI on Linux +name: Coverage on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: coverage-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: ${{ github.event_name != 'push' }} + cancel-in-progress: false env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eexuo pipefail {0} jobs: build: @@ -30,127 +26,73 @@ jobs: fail-fast: false matrix: include: - - name: "Coverage gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "gcc13" + compiler: "gcc-13" + build: coverage build_type: Coverage - cxx_flags: "-std=c++23" steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV - # How many commits do we need to fetch to also fetch the branch point? - name: Get fetch depth id: fetch_depth run: echo "depth=$(( ${{ github.event.pull_request.commits }} + 2 ))" >> $GITHUB_OUTPUT - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} fetch-depth: ${{ steps.fetch_depth.outputs.depth }} - submodules: recursive + submodules: false - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 125M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - run: sudo apt-get install --yes ${{ matrix.cxx }} + uses: seqan/actions/setup-cmake@main + with: + cmake: 3.21.7 - name: Install gcovr - env: - CC: ${{ matrix.cc }} run: | sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/${CC/gcc/gcov} 100 - pip install gcovr==5.0 - - - name: Load ccache - uses: actions/cache@v3 - with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version + pip install gcovr==6.0 - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }} -Wno-interference-size" - make -j2 gtest_build - - - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 525M - CCACHE_IGNOREOPTIONS: "-fprofile-abs-path" - run: | - ccache -z - cd build - make -k -j2 - ccache -sv + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + make -j2 gtest_main benchmark_main yaml-cpp - name: Build tests env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 525M CCACHE_IGNOREOPTIONS: "-fprofile-abs-path" run: | ccache -z cd build - make -k -j2 api_test cli_test + CMAKE_BUILD_PARALLEL_LEVEL=2 cmake --build . -- -k test ccache -sv - - name: Run tests - run: | - cd build - ctest . -j2 --output-on-failure - - name: Generate coverage report run: | - gcovr --gcov-executable ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/gcov.sh \ - --root ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/test/coverage \ + gcovr --gcov-executable ${{ github.workspace }}/.github/workflows/scripts/gcov.sh \ + --root ${{ github.workspace }}/test/coverage \ ${{ github.workspace }}/build \ - --filter ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/include \ - --filter ${{ github.workspace }}/${{ env.REPOSITORY_NAME }}/src \ + --filter ${{ github.workspace }}/include \ + --filter ${{ github.workspace }}/src \ --exclude-lines-by-pattern '^\s*$' \ --exclude-lines-by-pattern '^\s*};$' \ - --exclude-lines-by-pattern '^.*GCOVR_EXCL_LINE.*$' \ --exclude-unreachable-branches \ --exclude-throw-branches \ + --exclude-noncode-lines \ -j 2 \ --xml \ --output ${{ github.workspace }}/build/coverage_report.xml - - name: Submit coverage report + - name: Submit coverage build uses: codecov/codecov-action@v3 with: files: ${{ github.workspace }}/build/coverage_report.xml - root_dir: ${{ github.workspace }}/${{ env.REPOSITORY_NAME }} + fail_ci_if_error: false diff --git a/.github/workflows/ci_documentation.yml b/.github/workflows/ci_documentation.yml new file mode 100644 index 0000000..e010715 --- /dev/null +++ b/.github/workflows/ci_documentation.yml @@ -0,0 +1,63 @@ +name: Documentation + +on: + push: + pull_request: + workflow_dispatch: + +concurrency: + group: documentation-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name != 'push' }} + +env: + TZ: Europe/Berlin + +defaults: + run: + shell: bash -Eexuo pipefail {0} + +jobs: + build: + name: Documentation + runs-on: ubuntu-22.04 + timeout-minutes: 120 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + submodules: false + + - name: Install CMake + uses: seqan/actions/setup-cmake@main + with: + cmake: 3.21.7 + + - name: Install Doxygen + uses: seqan/actions/setup-doxygen@main + with: + doxygen: 1.9.8 + + - name: Configure + run: | + mkdir build + cd build + cmake .. + + - name: Build documentation + run: | + cd build + make -k -j${{ matrix.test_threads }} doc 2>doxygen_warnings.txt + cat doxygen_warnings.txt + test ! -s doxygen_warnings.txt + + - name: Package documentation + continue-on-error: true + run: tar -zcf documentation.tar.gz doc/html + + - name: Upload documentation + continue-on-error: true + uses: actions/upload-artifact@v3 + with: + name: documentation + path: documentation.tar.gz diff --git a/.github/workflows/ci_linux.yml b/.github/workflows/ci_linux.yml index ff9001f..30a9739 100644 --- a/.github/workflows/ci_linux.yml +++ b/.github/workflows/ci_linux.yml @@ -1,25 +1,21 @@ -name: CI on Linux +name: Linux on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: linux-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name != 'push' }} env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eeuxo pipefail {0} jobs: build: @@ -27,105 +23,62 @@ jobs: runs-on: ubuntu-22.04 timeout-minutes: 120 strategy: - fail-fast: true + fail-fast: false matrix: include: - - name: "Unit gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "clang17" + compiler: "clang-17" + build: unit build_type: Release - cxx_flags: "-std=c++23" + cxx_flags: "-stdlib=libc++" - - name: "Unit gcc11" - cxx: "g++-11" - cc: "gcc-11" + - name: "gcc13" + compiler: "gcc-13" + build: unit build_type: Release - cxx_flags: "-std=c++23" - - name: "Unit gcc10" - cxx: "g++-10" - cc: "gcc-10" + - name: "gcc12" + compiler: "gcc-12" + build: unit build_type: Release - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + - name: "gcc11" + compiler: "gcc-11" + build: unit + build_type: Release + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive + fetch-depth: 1 + submodules: false - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 75M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - run: sudo apt-get install --yes ${{ matrix.cxx }} - - - name: Load ccache - uses: actions/cache@v3 + uses: seqan/actions/setup-cmake@main with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version + cmake: 3.21.7 - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} + - name: Configure run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - make -j2 gtest_build + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" + make -j2 gtest_main benchmark_main yaml-cpp - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - run: | - ccache -z - cd build - make -k -j2 - ccache -sv - - - name: Build tests - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M run: | - ccache -z cd build - make -k -j2 api_test cli_test - ccache -sv + CMAKE_BUILD_PARALLEL_LEVEL=2 cmake --build . -- -k - - name: Run tests + - name: Build and run tests run: | cd build - ctest . -j2 --output-on-failure + CMAKE_BUILD_PARALLEL_LEVEL=2 cmake --build . -- -k test diff --git a/.github/workflows/ci_macos.yml b/.github/workflows/ci_macos.yml index 83baac0..d2be181 100644 --- a/.github/workflows/ci_macos.yml +++ b/.github/workflows/ci_macos.yml @@ -1,25 +1,21 @@ -name: CI on macOS +name: macOS on: push: - branches: - - 'main' pull_request: workflow_dispatch: concurrency: group: macos-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name != 'push' }} env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 SHARG_NO_VERSION_CHECK: 1 TZ: Europe/Berlin defaults: run: - shell: bash -ex {0} + shell: bash -Eeuxo pipefail {0} jobs: build: @@ -27,106 +23,62 @@ jobs: runs-on: macos-12 timeout-minutes: 120 strategy: - fail-fast: true + fail-fast: false matrix: include: - - name: "Unit gcc12" - cxx: "g++-12" - cc: "gcc-12" + - name: "clang17" + compiler: "clang-17" + build: unit build_type: Release - cxx_flags: "-std=c++23" + cxx_flags: "-stdlib=libc++" # For verbosity. This is already the default. - - name: "Unit gcc11" - cxx: "g++-11" - cc: "gcc-11" + - name: "gcc13" + compiler: "gcc-13" + build: unit build_type: Release - cxx_flags: "-std=c++23" - - name: "Unit gcc10" - cxx: "g++-10" - cc: "gcc-10" + - name: "gcc12" + compiler: "gcc-12" + build: unit build_type: Release - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + - name: "gcc11" + compiler: "gcc-11" + build: unit + build_type: Release + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive + fetch-depth: 1 + submodules: false - - name: Configure Homebrew - uses: Homebrew/actions/setup-homebrew@master + - name: Setup toolchain + uses: seqan/actions/setup-toolchain@main + with: + compiler: ${{ matrix.compiler }} + ccache_size: 75M - name: Install CMake - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install ccache - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_via_brew.sh ccache - - - name: Install compiler ${{ matrix.cxx }} - env: - CC: ${{ matrix.cc }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_via_brew.sh $(echo ${CC/clang/llvm} | awk -F '-' '{print $1, $2}') - - - name: Load ccache - uses: actions/cache@v3 + uses: seqan/actions/setup-cmake@main with: - path: .ccache - key: ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ runner.os }}-${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env ${{ matrix.cxx }} --version - sudo xcode-select -s '/Applications/Xcode_13.4.1.app/Contents/Developer' # https://github.com/actions/runner-images/issues/6350 + cmake: 3.21.7 - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} + - name: Configure run: | mkdir build cd build - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" - make -j3 gtest_build + cmake .. -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" + make -j3 gtest_main benchmark_main yaml-cpp - name: Build application - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - run: | - ccache -z - cd build - make -k -j3 - ccache -sv - - - name: Build tests - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M run: | - ccache -z cd build - make -k -j3 api_test cli_test - ccache -sv + CMAKE_BUILD_PARALLEL_LEVEL=3 cmake --build . -- -k - - name: Run tests + - name: Build and run tests run: | cd build - ctest . -j3 --output-on-failure + CMAKE_BUILD_PARALLEL_LEVEL=3 cmake --build . -- -k test diff --git a/.github/workflows/ci_misc.yml b/.github/workflows/ci_misc.yml deleted file mode 100644 index 049767d..0000000 --- a/.github/workflows/ci_misc.yml +++ /dev/null @@ -1,175 +0,0 @@ -name: CI misc - -on: - push: - branches: - - 'main' - pull_request: - workflow_dispatch: - -concurrency: - group: misc-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - CMAKE_VERSION: 3.16.9 - SEQAN3_NO_VERSION_CHECK: 1 - SHARG_NO_VERSION_CHECK: 1 - TZ: Europe/Berlin - -defaults: - run: - shell: bash -ex {0} - -jobs: - build: - name: ${{ matrix.name }} - runs-on: ubuntu-22.04 - timeout-minutes: 120 - strategy: - fail-fast: false - matrix: - include: - - name: "Documentation" - build: documentation - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - doxygen: 1.9.4 - requires_toolchain: false - requires_ccache: false - skip_build_tests: true - skip_run_tests: false - - name: "Header gcc12" - cxx: "g++-12" - cc: "gcc-12" - build_type: Release - build: header - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - requires_toolchain: true - requires_ccache: true - skip_build_tests: false - skip_run_tests: true - - name: "Header gcc10" - cxx: "g++-10" - cc: "gcc-10" - build_type: Release - build: header - build_threads: 2 - test_threads: 2 - cmake: 3.16.9 - requires_toolchain: true - requires_ccache: true - skip_build_tests: false - skip_run_tests: true - - steps: - - name: Set repository name - run: echo "REPOSITORY_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV - - - name: Checkout - uses: actions/checkout@v3 - with: - path: ${{ env.REPOSITORY_NAME }} - fetch-depth: 2 - submodules: recursive - - - name: Add package source - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/configure_apt.sh - - - name: Install CMake - env: - BUILD: ${{ matrix.build }} - CMAKE_VERSION: ${{ matrix.cmake }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_cmake.sh - - - name: Install Doxygen - if: matrix.build == 'documentation' - env: - DOXYGEN_VERSION: ${{ matrix.doxygen }} - run: bash ./${{ env.REPOSITORY_NAME }}/lib/seqan3/.github/workflows/scripts/install_doxygen.sh - - - name: Install ccache - if: matrix.requires_ccache - run: | - conda install --yes --override-channels --channel conda-forge ccache - sudo ln -s $CONDA/bin/ccache /usr/bin/ccache - - - name: Install compiler ${{ matrix.cxx }} - if: matrix.requires_toolchain - run: sudo apt-get install --yes ${{ matrix.cxx }} - - - name: Load ccache - if: matrix.requires_ccache - uses: actions/cache@v3 - with: - path: .ccache - key: ${{ matrix.name }}-ccache-${{ github.ref }}-${{ github.run_number }} - # Restoring: From current branch, otherwise from base branch, otherwise from any branch. - restore-keys: | - ${{ matrix.name }}-ccache-${{ github.ref }} - ${{ matrix.name }}-ccache-${{ github.base_ref }} - ${{ matrix.name }}-ccache- - - - name: Tool versions - run: | - env cmake --version - env doxygen --version || true - env ${{ matrix.cxx }} --version || true - - - name: Configure tests - env: - CXX: ${{ matrix.cxx }} - CC: ${{ matrix.cc }} - run: | - mkdir build - cd build - header_test_flag=$(echo "${{ env.REPOSITORY_NAME }}_HEADER_TEST_ONLY" | tr '[:lower:]' '[:upper:]') - cmake ../${{ env.REPOSITORY_NAME }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ - -D${header_test_flag}=${{ matrix.build == 'header' && 'ON' || 'OFF'}} - if [[ "${{ matrix.build }}" =~ ^(header)$ ]]; then - make -j${{ matrix.build_threads }} gtest_build - fi - - - name: Build tests - if: ${{!matrix.skip_build_tests}} - env: - CCACHE_BASEDIR: ${{ github.workspace }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - CCACHE_COMPRESS: true - CCACHE_COMPRESSLEVEL: 12 - CCACHE_MAXSIZE: 75M - CMAKE_BUILD_PARALLEL_LEVEL: ${{ matrix.build_threads }} - run: | - ccache -p || true - cd build - make -k test - ccache -s || true - - - name: Run tests - if: ${{!matrix.skip_run_tests}} - run: | - cd build - if [[ "${{ matrix.build }}" =~ ^(documentation)$ ]]; then - make -k -j${{ matrix.test_threads }} doc 2>doxygen_warnings.txt - cat doxygen_warnings.txt - test ! -s doxygen_warnings.txt - else - ctest . -j${{ matrix.test_threads }} --output-on-failure - fi - - - name: Package documentation - if: matrix.build == 'documentation' - continue-on-error: true - run: tar -zcf documentation.tar.gz build - - - name: Upload documentation - if: matrix.build == 'documentation' - continue-on-error: true - uses: actions/upload-artifact@v3 - with: - name: documentation - path: documentation.tar.gz diff --git a/.github/workflows/scripts/gcov.sh b/.github/workflows/scripts/gcov.sh new file mode 100755 index 0000000..258340d --- /dev/null +++ b/.github/workflows/scripts/gcov.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2006-2023, Knut Reinert & Freie Universität Berlin +# SPDX-FileCopyrightText: 2016-2023, Knut Reinert & MPI für molekulare Genetik +# SPDX-License-Identifier: CC0-1.0 + +set -Eeuo pipefail + +args=${@/--branch-counts/""} +args=${args/--branch-probabilities/""} + +exec gcov $args diff --git a/CMakeLists.txt b/CMakeLists.txt index 24b589e..639a5b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,11 @@ set (FontBold "${Esc}[1m") set (FontReset "${Esc}[m") list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +# Use ccache. +include (ccache) +require_ccache () + set (CPM_INDENT " CMake Package Manager CPM: ") include (CPM) include (CPMGetSystemPackage) @@ -40,10 +45,6 @@ list (APPEND CMAKE_MODULE_PATH "${seqan3_SOURCE_DIR}/test/cmake/") # Allow to include CMake scripts from the app-template. list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/test/cmake/") -# Use ccache. -include (ccache) -require_ccache () - # Add the application. add_subdirectory (src) message (STATUS "${FontBold}You can run `make` to build the application.${FontReset}") diff --git a/cmake/package-lock.cmake b/cmake/package-lock.cmake index 7058b42..9774342 100644 --- a/cmake/package-lock.cmake +++ b/cmake/package-lock.cmake @@ -36,7 +36,7 @@ CPMDeclarePackage (seqan3 OPTIONS "INSTALL_SEQAN3 OFF" "CMAKE_MESSAGE_LOG_LEVEL WARNING" ) # benchmark -set (BENCHMARK_VERSION 1.8.2) +set (BENCHMARK_VERSION 1.8.3) CPMDeclarePackage (benchmark NAME benchmark VERSION ${BENCHMARK_VERSION} diff --git a/doc/doxygen_cfg b/doc/doxygen_cfg index 20672f2..07cc4e6 100644 --- a/doc/doxygen_cfg +++ b/doc/doxygen_cfg @@ -1,4 +1,4 @@ -# Doxyfile 1.9.1 +# Doxyfile 1.9.8 #--------------------------------------------------------------------------- # Project related configuration options @@ -10,6 +10,7 @@ PROJECT_BRIEF = "A template for creation of SeqAn3 apps, with a FASTQ t PROJECT_LOGO = OUTPUT_DIRECTORY = ${APP_TEMPLATE_DOXYGEN_OUTPUT_DIR} CREATE_SUBDIRS = NO +CREATE_SUBDIRS_LEVEL = 8 ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES @@ -48,6 +49,7 @@ OPTIMIZE_OUTPUT_SLICE = NO EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 5 +MARKDOWN_ID_STYLE = DOXYGEN AUTOLINK_SUPPORT = YES BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO @@ -61,6 +63,7 @@ INLINE_SIMPLE_STRUCTS = NO TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 NUM_PROC_THREADS = 1 +TIMESTAMP = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -81,6 +84,7 @@ INTERNAL_DOCS = NO CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO +SHOW_HEADERFILE = YES SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO FORCE_LOCAL_INCLUDES = NO @@ -110,9 +114,12 @@ QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES +WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO +WARN_IF_UNDOC_ENUM_VAL = NO WARN_AS_ERROR = NO WARN_FORMAT = "$file:$line: $text" +WARN_LINE_FORMAT = "at line $line of file $file" WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files @@ -121,6 +128,7 @@ INPUT = ${CMAKE_SOURCE_DIR}/include \ ${CMAKE_SOURCE_DIR}/src \ ${CMAKE_SOURCE_DIR}/LICENSE.md INPUT_ENCODING = UTF-8 +INPUT_FILE_ENCODING = FILE_PATTERNS = *.c \ *.cc \ *.cxx \ @@ -182,6 +190,7 @@ FILTER_PATTERNS = FILTER_SOURCE_FILES = NO FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = +FORTRAN_COMMENT_AFTER = 72 #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- @@ -210,15 +219,17 @@ HTML_FOOTER = HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = +HTML_COLORSTYLE = AUTO_LIGHT HTML_COLORSTYLE_HUE = 220 HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -HTML_TIMESTAMP = NO HTML_DYNAMIC_MENUS = YES HTML_DYNAMIC_SECTIONS = NO +HTML_CODE_FOLDING = YES HTML_INDEX_NUM_ENTRIES = 100 GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_FEEDURL = DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher @@ -229,6 +240,7 @@ GENERATE_CHI = NO CHM_INDEX_ENCODING = BINARY_TOC = NO TOC_EXPAND = NO +SITEMAP_URL = GENERATE_QHP = NO QCH_FILE = QHP_NAMESPACE = org.doxygen.Project @@ -241,16 +253,18 @@ GENERATE_ECLIPSEHELP = NO ECLIPSE_DOC_ID = org.doxygen.Project DISABLE_INDEX = NO GENERATE_TREEVIEW = NO +FULL_SIDEBAR = NO ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +OBFUSCATE_EMAILS = YES HTML_FORMULA_FORMAT = png FORMULA_FONTSIZE = 10 -FORMULA_TRANSPARENT = YES FORMULA_MACROFILE = -USE_MATHJAX = NO +USE_MATHJAX = YES +MATHJAX_VERSION = MathJax_3 MATHJAX_FORMAT = HTML-CSS -MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/ MATHJAX_EXTENSIONS = MATHJAX_CODEFILE = SEARCHENGINE = YES @@ -263,7 +277,7 @@ EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -GENERATE_LATEX = YES +GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = MAKEINDEX_CMD_NAME = makeindex @@ -280,7 +294,6 @@ USE_PDFLATEX = YES LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -LATEX_TIMESTAMP = NO LATEX_EMOJI_DIRECTORY = #--------------------------------------------------------------------------- # Configuration options related to the RTF output @@ -316,6 +329,12 @@ DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- +# Configuration options related to Sqlite3 output +#--------------------------------------------------------------------------- +GENERATE_SQLITE3 = NO +SQLITE3_OUTPUT = sqlite3 +SQLITE3_RECREATE_DB = YES +#--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO @@ -343,14 +362,14 @@ ALLEXTERNALS = NO EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -DIA_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO DOT_NUM_THREADS = 0 -DOT_FONTNAME = Helvetica -DOT_FONTSIZE = 10 +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = CLASS_GRAPH = YES COLLABORATION_GRAPH = YES @@ -366,18 +385,20 @@ CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES +DIR_GRAPH_MAX_DEPTH = 1 DOT_IMAGE_FORMAT = png INTERACTIVE_SVG = NO DOT_PATH = DOTFILE_DIRS = -MSCFILE_DIRS = +DIA_PATH = DIAFILE_DIRS = PLANTUML_JAR_PATH = PLANTUML_CFG_FILE = PLANTUML_INCLUDE_PATH = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES +MSCGEN_TOOL = +MSCFILE_DIRS = diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1b763cf..c15d490 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,17 @@ cmake_minimum_required (VERSION 3.16) +# CMake sometimes has trouble detecting pthreads on macOS, so we just assume a built-in pthreads. +if (APPLE) + set (CMAKE_THREAD_LIBS_INIT "-lpthread") + set (CMAKE_HAVE_THREADS_LIBRARY 1) + set (CMAKE_USE_WIN32_THREADS_INIT 0) + set (CMAKE_USE_PTHREADS_INIT 1) + set (THREADS_PREFER_PTHREAD_FLAG ON) +endif () + CPMGetSystemPackage (benchmark) CPMGetSystemPackage (googletest) +include (GoogleTest OPTIONAL) # Set directories for test output files, input data and binaries. file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/output)