WIP: make this work on AVR #353
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: Basic builds | |
| "on": | |
| push: | |
| pull_request: | |
| jobs: | |
| clang-format: | |
| name: Clang Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - uses: jidicula/clang-format-action@v4.17.0 | |
| with: | |
| clang-format-version: '21' | |
| check-path: '.' | |
| cmake: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: MSVC install | |
| os: windows-latest | |
| preset: MSVC | |
| install: true | |
| - name: MSVC 23 | |
| os: windows-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=23 | |
| preset: MSVC | |
| - name: MSVC 20 | |
| os: windows-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=20 | |
| preset: MSVC | |
| - name: ClangCL | |
| os: windows-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=17 | |
| preset: ClangCL | |
| - name: Clang-Tidy | |
| os: ubuntu-latest | |
| preset: clang-tidy | |
| - name: Linux Clang 11 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=11 | |
| preset: Clang | |
| - name: Linux Clang 14 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=14 | |
| preset: Clang | |
| - name: Linux Clang 17 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=17 | |
| preset: Clang | |
| - name: Linux Clang 20 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=20 | |
| preset: Clang | |
| - name: Linux Clang 23 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=23 | |
| preset: Clang | |
| - name: Detailed | |
| os: ubuntu-latest | |
| preset: detailed | |
| - name: Linux GNU Install | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=11 | |
| preset: GNU | |
| install: true | |
| - name: Linux GNU 14 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=14 | |
| preset: GNU | |
| - name: Linux GNU 17 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=17 | |
| preset: GNU | |
| - name: Linux GNU 20 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=20 | |
| preset: GNU | |
| - name: Linux GNU 23 | |
| os: ubuntu-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=23 | |
| preset: GNU | |
| - name: MinGW | |
| os: ubuntu-latest | |
| preset: MinGW | |
| apt_packages: mingw-w64 wine64 | |
| - name: No C++ Standard Library | |
| os: ubuntu-latest | |
| preset: no-std-cpp | |
| - name: No RTTI | |
| os: ubuntu-latest | |
| preset: no-rtti | |
| - name: No Exceptions | |
| os: ubuntu-latest | |
| preset: no-exceptions | |
| - name: Coverage | |
| os: ubuntu-latest | |
| preset: coverage | |
| apt_packages: lcov | |
| - name: Address Sanitizer | |
| os: ubuntu-latest | |
| preset: asan | |
| - name: GCC ARM embedded | |
| os: ubuntu-latest | |
| preset: arm-embedded | |
| - name: Mac install | |
| os: macos-latest | |
| preset: defaults | |
| install: true | |
| - name: Apple Clang 14 | |
| os: macos-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=14 | |
| preset: Clang | |
| - name: Apple Clang 17 | |
| os: macos-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=17 | |
| preset: Clang | |
| - name: Apple Clang 20 | |
| os: macos-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=20 | |
| preset: Clang | |
| - name: Apple Clang 23 | |
| os: macos-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=23 | |
| preset: Clang | |
| - name: Mac GNU 14 | |
| os: macos-latest | |
| cmake_args: -DCMAKE_CXX_STANDARD=14 | |
| preset: GNU | |
| name: CMake ${{ matrix.name }} | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| ### SETUP | |
| - name: Install packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ${{ matrix.apt_packages }} | |
| if: ${{ matrix.apt_packages }} | |
| - uses: carlosperate/arm-none-eabi-gcc-action@v1 | |
| if: ${{ matrix.name == 'GCC ARM embedded' }} | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| ## BUILD AND TEST | |
| - name: Configure | |
| run: cmake --preset ${{ matrix.preset }} ${{ matrix.cmake_args }} | |
| - name: Build | |
| run: cmake --build --preset ${{ matrix.preset }} | |
| - name: Test | |
| run: ctest --preset ${{ matrix.preset }} | |
| # POST PROCESSING | |
| - name: Install (*nix) | |
| run: | | |
| sudo cmake --install build/${{ matrix.preset }}/ | |
| if: ${{ matrix.install && !startswith(matrix.os, 'windows')}} | |
| - name: Install (Windows) | |
| run: cmake --install build/${{ matrix.preset }}/ --config=Debug | |
| if: ${{ matrix.install && startswith(matrix.os, 'windows')}} | |
| - name: Use install | |
| run: | | |
| cmake -B examples_build -S examples | |
| cmake --build examples_build -j | |
| ctest --test-dir examples_build | |
| if: ${{ matrix.install }} | |
| - name: Coveralls | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| path-to-lcov: build/coverage/coverage.lcov | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| if: ${{ matrix.name == 'Coverage' }} | |
| test_report: | |
| name: JUnit Test Report | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - run: cmake --preset=defaults -DCPPUTEST_JUNIT_REPORT=TRUE | |
| - run: cmake --build --preset defaults | |
| - run: ctest --preset defaults | |
| - uses: actions/upload-artifact@v4 | |
| if: success() || failure() | |
| with: | |
| name: test-results | |
| path: "build/defaults/**/cpputest_*.xml" | |
| verify_headers: | |
| name: Verify Interface Header Sets | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Configure | |
| run: cmake --preset GNU | |
| - name: Build | |
| run: cmake --build --preset verify-headers | |
| cmake_msys: | |
| name: CMake MSYS | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| env: | |
| LDFLAGS: -static | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: > | |
| git | |
| mingw-w64-x86_64-cc | |
| mingw-w64-x86_64-cmake | |
| mingw-w64-x86_64-make | |
| - name: Configure | |
| run: cmake --preset=GNU | |
| - name: Build | |
| run: cmake --build --preset GNU | |
| - name: Test | |
| run: ctest --preset GNU | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Doxygen | |
| run: sudo apt-get update && sudo apt-get install -y doxygen | |
| - name: Install Python dependencies | |
| run: pip install -r docs/requirements.txt | |
| - name: Build documentation | |
| run: make -C docs html | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: docs | |
| path: docs/_build/html | |
| cmake_cygwin: | |
| name: CMake Cygwin | |
| runs-on: windows-latest | |
| steps: | |
| - name: Set line endings | |
| run: git config --global core.autocrlf input | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Cygwin | |
| uses: cygwin/cygwin-install-action@v6 | |
| with: | |
| packages: > | |
| cmake | |
| gcc-core | |
| gcc-g++ | |
| ninja | |
| - name: Configure | |
| run: cmake --preset=GNU -G Ninja | |
| - name: Build | |
| run: cmake --build --preset GNU | |
| - name: Test | |
| run: ctest --preset GNU |