| name: Build and Test |
| |
| on: |
| push: |
| branches: |
| - main |
| pull_request: |
| branches: |
| - main |
| |
| env: |
| CTEST_OUTPUT_ON_FAILURE: 1 |
| |
| jobs: |
| build: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [windows-latest, ubuntu-latest, macos-latest] |
| crypto: [OPENSSL_1_1, OPENSSL_3, BORINGSSL] |
| no_alloc: [OFF, ON] |
| include: |
| - os: windows-latest |
| vcpkg-cmake-file: "$env:VCPKG_INSTALLATION_ROOT\\scripts\\buildsystems\\vcpkg.cmake" |
| ctest-target: RUN_TESTS |
| - os: ubuntu-latest |
| vcpkg-cmake-file: "$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" |
| ctest-target: test |
| - os: macos-latest |
| vcpkg-cmake-file: "$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" |
| ctest-target: test |
| |
| env: |
| CMAKE_BUILD_DIR: ${{ github.workspace }}/build |
| CMAKE_TEST_DIR: ${{ github.workspace }}/build/test |
| CMAKE_GENERATOR: "Ninja" |
| |
| steps: |
| - uses: actions/checkout@v4 |
| |
| - name: dependencies (ubuntu) |
| if: ${{ matrix.os == 'ubuntu-latest' }} |
| run: | |
| sudo apt-get install nasm |
| |
| - name: dependencies (macos) |
| if: ${{ matrix.os == 'macos-latest' }} |
| run: | |
| brew install llvm ninja nasm go |
| ln -s "/usr/local/opt/llvm/bin/clang-format" "/usr/local/bin/clang-format" |
| ln -s "/usr/local/opt/llvm/bin/clang-tidy" "/usr/local/bin/clang-tidy" |
| |
| - name: Restore cache |
| uses: actions/cache@v4 |
| with: |
| path: | |
| ${{ env.CMAKE_BUILD_DIR }}/vcpkg_installed |
| key: ${{ runner.os }}-${{ hashFiles( '**/vcpkg.json' ) }} |
| |
| - name: configure to use clang-tidy and sanitizers |
| run: cmake -B "${{ env.CMAKE_BUILD_DIR }}" |
| -DTESTING=ON -DCLANG_TIDY=ON -DSANITIZERS=ON |
| -DCMAKE_TOOLCHAIN_FILE="${{ matrix.vcpkg-cmake-file}}" |
| -DCRYPTO="${{ matrix.crypto }}" |
| -DVCPKG_MANIFEST_DIR="alternatives/${{ matrix.crypto }}" |
| -DNO_ALLOC="${{ matrix.no_alloc }}" |
| |
| - name: build |
| run: | |
| cmake --build "${{ env.CMAKE_BUILD_DIR }}" --config Release |
| |
| - name: Unit tests |
| run: | |
| ctest --test-dir "${{ env.CMAKE_BUILD_DIR }}" |
| |