name: ci on: [push, pull_request] jobs: build_linux: runs-on: ubuntu-latest defaults: run: shell: bash strategy: fail-fast: false matrix: config: - { compiler: gcc, version: 7, build_type: Release, cppstd: 11 } - { compiler: gcc, version: 9, build_type: Release, cppstd: 17 } - { compiler: gcc, version: 11, build_type: Debug, cppstd: 20 } - { compiler: gcc, version: 12, build_type: Release, cppstd: 20 } - { compiler: clang, version: 12, build_type: Debug, cppstd: 17, asan: OFF } - { compiler: clang, version: 15, build_type: Release, cppstd: 20, asan: OFF } container: image: ${{ matrix.config.compiler == 'clang' && 'teeks99/clang-ubuntu' || matrix.config.compiler }}:${{ matrix.config.version }} name: "${{ matrix.config.compiler}} ${{ matrix.config.version }} (C++${{ matrix.config.cppstd }}, ${{ matrix.config.build_type }})" steps: - uses: actions/checkout@main - name: Setup run: | apt-get update apt-get install -y curl git pkg-config libsystemd-dev CMAKE_VERSION="3.24.2" curl -sSL https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh -o install-cmake.sh chmod +x install-cmake.sh ./install-cmake.sh --prefix=/usr/local --skip-license - name: Setup Compiler if: matrix.config.compiler == 'clang' run: | if [[ "${{ matrix.config.version }}" -ge 4 ]]; then scripts/ci_setup_clang.sh "${{ matrix.config.version }}" echo "CXXFLAGS=-stdlib=libc++" >> $GITHUB_ENV fi echo "CC=clang-${{ matrix.config.version }}" >> $GITHUB_ENV echo "CXX=clang++-${{ matrix.config.version }}" >> $GITHUB_ENV - name: Build run: | mkdir -p build && cd build cmake .. \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_CXX_STANDARD=${{ matrix.config.cppstd }} \ -DSPDLOG_BUILD_EXAMPLE=${{ matrix.config.examples || 'ON' }} \ -DSPDLOG_BUILD_EXAMPLE_HO=${{ matrix.config.examples || 'ON' }} \ -DSPDLOG_BUILD_WARNINGS=ON \ -DSPDLOG_BUILD_BENCH=OFF \ -DSPDLOG_BUILD_TESTS=ON \ -DSPDLOG_BUILD_TESTS_HO=OFF \ -DSPDLOG_SANITIZE_ADDRESS=${{ matrix.config.asan || 'ON' }} make -j2 ctest -j2 --output-on-failure build_osx: runs-on: macOS-latest name: "OS X Clang (C++11, Release)" steps: - uses: actions/checkout@main - name: Build run: | mkdir -p build && cd build cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_STANDARD=11 \ -DSPDLOG_BUILD_EXAMPLE=ON \ -DSPDLOG_BUILD_EXAMPLE_HO=ON \ -DSPDLOG_BUILD_WARNINGS=ON \ -DSPDLOG_BUILD_BENCH=OFF \ -DSPDLOG_BUILD_TESTS=ON \ -DSPDLOG_BUILD_TESTS_HO=OFF \ -DSPDLOG_SANITIZE_ADDRESS=OFF make -j2 ctest -j2 --output-on-failure build_windows: runs-on: windows-latest strategy: matrix: config: - GENERATOR: '"Visual Studio 15 2017 Win64"' BUILD_TYPE: Debug BUILD_SHARED: 'OFF' FATAL_ERRORS: 'OFF' WCHAR: 'ON' WCHAR_FILES: 'OFF' BUILD_EXAMPLE: 'ON' USE_STD_FORMAT: 'OFF' CXX_STANDARD: 11 - GENERATOR: '"Visual Studio 15 2017 Win64"' BUILD_TYPE: Release BUILD_SHARED: 'OFF' FATAL_ERRORS: 'OFF' WCHAR: 'OFF' WCHAR_FILES: 'OFF' BUILD_EXAMPLE: 'ON' USE_STD_FORMAT: 'OFF' CXX_STANDARD: 11 - GENERATOR: '"Visual Studio 15 2017 Win64"' BUILD_TYPE: Release BUILD_SHARED: 'ON' FATAL_ERRORS: 'OFF' WCHAR: 'OFF' WCHAR_FILES: 'OFF' BUILD_EXAMPLE: 'ON' USE_STD_FORMAT: 'OFF' CXX_STANDARD: 11 - GENERATOR: '"Visual Studio 15 2017 Win64"' BUILD_TYPE: Release BUILD_SHARED: 'ON' FATAL_ERRORS: 'OFF' WCHAR: 'ON' WCHAR_FILES: 'ON' BUILD_EXAMPLE: 'OFF' USE_STD_FORMAT: 'OFF' CXX_STANDARD: 11 - GENERATOR: '"Visual Studio 16 2019" -A x64' BUILD_TYPE: Release BUILD_SHARED: 'ON' FATAL_ERRORS: 'ON' WCHAR: 'OFF' WCHAR_FILES: 'OFF' BUILD_EXAMPLE: 'OFF' USE_STD_FORMAT: 'OFF' CXX_STANDARD: 17 - GENERATOR: '"Visual Studio 17 2022" -A x64' BUILD_TYPE: Release BUILD_SHARED: 'ON' FATAL_ERRORS: 'ON' WCHAR: 'OFF' WCHAR_FILES: 'OFF' BUILD_EXAMPLE: 'OFF' USE_STD_FORMAT: 'ON' CXX_STANDARD: 20 - GENERATOR: '"Visual Studio 17 2022" -A x64' BUILD_TYPE: Release BUILD_SHARED: 'ON' FATAL_ERRORS: 'ON' WCHAR: 'ON' WCHAR_FILES: 'ON' BUILD_EXAMPLE: 'OFF' USE_STD_FORMAT: 'ON' CXX_STANDARD: 20 steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up CMake uses: jwlawson/actions-setup-cmake@v1 - name: Configure CMake run: | mkdir build cd build cmake -G ${{ matrix.config.GENERATOR }} \ -D CMAKE_BUILD_TYPE=${{ matrix.config.BUILD_TYPE }} \ -D BUILD_SHARED_LIBS=${{ matrix.config.BUILD_SHARED }} \ -D SPDLOG_WCHAR_SUPPORT=${{ matrix.config.WCHAR }} \ -D SPDLOG_WCHAR_FILENAMES=${{ matrix.config.WCHAR_FILES }} \ -D SPDLOG_BUILD_EXAMPLE=${{ matrix.config.BUILD_EXAMPLE }} \ -D SPDLOG_BUILD_EXAMPLE_HO=${{ matrix.config.BUILD_EXAMPLE }} \ -D SPDLOG_BUILD_TESTS=ON \ -D SPDLOG_BUILD_TESTS_HO=OFF \ -D SPDLOG_BUILD_WARNINGS=${{ matrix.config.FATAL_ERRORS }} \ -D SPDLOG_USE_STD_FORMAT=${{ matrix.config.USE_STD_FORMAT }} \ -D CMAKE_CXX_STANDARD=${{ matrix.config.CXX_STANDARD }} .. - name: Build run: | cd build cmake --build . --config ${{ matrix.config.BUILD_TYPE }} - name: Run tests env: PATH: ${{ env.PATH }};${{ github.workspace }}\build\_deps\catch2-build\src\${{ matrix.config.BUILD_TYPE }};${{ github.workspace }}\build\${{ matrix.config.BUILD_TYPE }} run: | build\tests\${{ matrix.config.BUILD_TYPE }}\spdlog-utests.exe