matrix-coro

A WIP highlevel matrix c++ SDK with a MAS first approach
git clone git://archive.git.mtrnord.blog/MTRNord/matrix-coro.git
Log | Files | Refs | README | LICENSE

cmake-multi-platform.yml (4794B)


      1 # This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
      2 # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
      3 name: CMake on multiple platforms
      4 
      5 on:
      6   push:
      7     branches: [ "main" ]
      8   pull_request:
      9     branches: [ "main" ]
     10 
     11 jobs:
     12   build:
     13     runs-on: ${{ matrix.os }}
     14 
     15     strategy:
     16       # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
     17       fail-fast: false
     18 
     19       # Set up a matrix to run the following 3 configurations:
     20       # 1. <Windows, Release, latest MSVC compiler toolchain on the default runner image, default generator>
     21       # 2. <Linux, Release, latest GCC compiler toolchain on the default runner image, default generator>
     22       # 3. <Linux, Release, latest Clang compiler toolchain on the default runner image, default generator>
     23       #
     24       # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list.
     25       matrix:
     26         os: [ ubuntu-latest, windows-latest ]
     27         build_type: [ Release ]
     28         c_compiler: [ gcc, clang, cl ]
     29         include:
     30           - os: windows-latest
     31             c_compiler: cl
     32             cpp_compiler: cl
     33           - os: ubuntu-latest
     34             c_compiler: gcc
     35             cpp_compiler: g++
     36           - os: ubuntu-latest
     37             c_compiler: clang
     38             cpp_compiler: clang++
     39         exclude:
     40           - os: windows-latest
     41             c_compiler: gcc
     42           - os: windows-latest
     43             c_compiler: clang
     44           - os: ubuntu-latest
     45             c_compiler: cl
     46 
     47     steps:
     48       - uses: actions/checkout@v4
     49 
     50       - name: Set reusable strings
     51         # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
     52         id: strings
     53         shell: bash
     54         run: |
     55           echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
     56 
     57       # Install dependencies if linux
     58       - name: Install dependencies
     59         if: startsWith(matrix.os, 'ubuntu')
     60         run: sudo apt-get -y install cmake libcurl4-openssl-dev libspdlog-dev libjsoncpp-dev
     61 
     62       # Setup vcpkg if windows
     63       - name: Setup vcpkg
     64         if: startsWith(matrix.os, 'windows')
     65         uses: friendlyanon/setup-vcpkg@v1
     66 
     67       - name: Configure CMake
     68         # Only run this step if we are not on windows as windows will use the vcpkg toolchain file. So this only runs on macos or linux.
     69         if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
     70 
     71         # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
     72         # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
     73         run: >
     74           cmake -B ${{ steps.strings.outputs.build-output-dir }}
     75           -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
     76           -DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
     77           -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
     78           -S ${{ github.workspace }}
     79 
     80       - name: Configure CMake
     81         # Only run this step if we are not on windows as windows will use the vcpkg toolchain file. So this only runs on macos or linux.
     82         if: startsWith(matrix.os, 'windows')
     83 
     84         # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
     85         # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
     86         run: |
     87           vcpkg install curl spdlog jsoncpp
     88           cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -D "CMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -S ${{ github.workspace }}
     89 
     90       - name: Build
     91         # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
     92         run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
     93 
     94       - name: Test
     95         working-directory: ${{ steps.strings.outputs.build-output-dir }}
     96         # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
     97         # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
     98         run: ctest --build-config ${{ matrix.build_type }}