Skip to content

WIP: make this work on AVR #353

WIP: make this work on AVR

WIP: make this work on AVR #353

Workflow file for this run

---
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