From 60dd9be77dab9c03ab2740054721284ba8eae6d5 Mon Sep 17 00:00:00 2001 From: Chirag Singla Date: Sun, 28 Jan 2024 10:02:16 +0530 Subject: [PATCH] Update test.yml --- .github/workflows/test.yml | 68 +++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2895589..53f6fcb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,15 +25,60 @@ jobs: test: runs-on: ${{ matrix.os }} strategy: + # 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. + fail-fast: false + + # Set up a matrix to run the following 3 configurations: + # 1. + # 2. + # 3. + # + # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. matrix: os: [ubuntu-latest, windows-latest, macos-latest] + build_type: [Release] + c_compiler: [gcc, clang, cl] include: - os: windows-latest - path: "C:/msys64/mingw64/bin/" - + c_compiler: cl + cpp_compiler: cl + cpp_flags: /WX + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + cpp_flags: -Werror + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + cpp_flags: -Werror + - os: macos-latest + c_compiler: clang + cpp_compiler: clang++ + cpp_flags: -Werror + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + - os: macos-latest + c_compiler: cl + - os: macos-latest + c_compiler: gcc + steps: - name: "Checkout repository" uses: actions/checkout@v4 + with: + submodules: true + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - name: "Setup ccache" uses: ./ @@ -41,11 +86,16 @@ jobs: key: "ccache-key" cache_dir: ".ccache" path: ${{ matrix.path }} + + - name: Configure CMake + run: > + 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_C_COMPILER_LAUNCHER=ccache + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache + -S ${{ github.workspace }} - - name: "Run with cmake" - uses: lukka/run-cmake@v3.4 - with: - cmakeListsTxtPath: '${{ github.workspace }}/examples/CMakeLists.txt' - cmakeAppendedArgs: '-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache' - buildWithCmake: true - buildDirectory: '${{ github.workspace }}/examples/build' + - name: Build Executable + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}