diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 7c62dd5e..8347c547 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -12,11 +12,23 @@ on: jobs: preset-test: - runs-on: ubuntu-latest strategy: matrix: - preset: ["gcc-debug", "gcc-release"] - name: "Preset: ${{ matrix.preset }}" + presets: + - preset: "gcc-debug" + platform: "ubuntu-latest" + - preset: "gcc-release" + platform: "ubuntu-latest" + - preset: "appleclang-debug" + platform: "macos-latest" + - preset: "appleclang-release" + platform: "macos-latest" + - preset: "msvc-debug" + platform: "windows-latest" + - preset: "msvc-release" + platform: "windows-latest" + name: "Preset: ${{ matrix.presets.preset }} on ${{ matrix.presets.platform }}" + runs-on: ${{ matrix.presets.platform }} steps: - uses: actions/checkout@v4 - name: Setup build environment @@ -24,8 +36,13 @@ jobs: with: cmakeVersion: "~3.25.0" ninjaVersion: "^1.11.1" + - name: Setup MSVC + if: startsWith(matrix.presets.platform, 'windows') + uses: TheMrMilchmann/setup-msvc-dev@v3 + with: + arch: x64 - name: Run preset - run: cmake --workflow --preset ${{ matrix.preset }} + run: cmake --workflow --preset ${{ matrix.presets.preset }} gtest-test: strategy: diff --git a/CMakePresets.json b/CMakePresets.json index ede9472e..9186bd17 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -14,16 +14,14 @@ "name": "_debug-base", "hidden": true, "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_CXX_FLAGS": "-fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=leak -fsanitize=undefined" + "CMAKE_BUILD_TYPE": "Debug" } }, { "name": "_release-base", "hidden": true, "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "CMAKE_CXX_FLAGS": "-O3" + "CMAKE_BUILD_TYPE": "RelWithDebInfo" } }, { @@ -34,7 +32,8 @@ "_debug-base" ], "cacheVariables": { - "CMAKE_CXX_COMPILER": "g++" + "CMAKE_CXX_COMPILER": "g++", + "CMAKE_CXX_FLAGS": "-fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=leak -fsanitize=undefined" } }, { @@ -45,7 +44,56 @@ "_release-base" ], "cacheVariables": { - "CMAKE_CXX_COMPILER": "g++" + "CMAKE_CXX_COMPILER": "g++", + "CMAKE_CXX_FLAGS": "-O3" + } + }, + { + "name": "appleclang-debug", + "displayName": "xcode Debug Build", + "inherits": [ + "_root-config", + "_debug-base" + ], + "cacheVariables": { + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_CXX_FLAGS": "-fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined" + } + }, + { + "name": "appleclang-release", + "displayName": "xcode Release Build", + "inherits": [ + "_root-config", + "_release-base" + ], + "cacheVariables": { + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_CXX_FLAGS": "-O3" + } + }, + { + "name": "msvc-debug", + "displayName": "MSVC Debug Build", + "inherits": [ + "_root-config", + "_debug-base" + ], + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl", + "CMAKE_CXX_FLAGS": "/EHsc /permissive- /fsanitize=address /Zi" + } + }, + { + "name": "msvc-release", + "displayName": "MSVC Release Build", + "inherits": [ + "_root-config", + "_release-base" + ], + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl", + "CMAKE_CXX_FLAGS": "/EHsc /permissive- /O2" } } ], @@ -57,6 +105,22 @@ { "name": "gcc-release", "configurePreset": "gcc-release" + }, + { + "name": "appleclang-debug", + "configurePreset": "appleclang-debug" + }, + { + "name": "appleclang-release", + "configurePreset": "appleclang-release" + }, + { + "name": "msvc-debug", + "configurePreset": "msvc-debug" + }, + { + "name": "msvc-release", + "configurePreset": "msvc-release" } ], "testPresets": [ @@ -80,6 +144,26 @@ "name": "gcc-release", "inherits": "_test_base", "configurePreset": "gcc-release" + }, + { + "name": "appleclang-debug", + "inherits": "_test_base", + "configurePreset": "appleclang-debug" + }, + { + "name": "appleclang-release", + "inherits": "_test_base", + "configurePreset": "appleclang-release" + }, + { + "name": "msvc-debug", + "inherits": "_test_base", + "configurePreset": "msvc-debug" + }, + { + "name": "msvc-release", + "inherits": "_test_base", + "configurePreset": "msvc-release" } ], "workflowPresets": [ @@ -116,6 +200,74 @@ "name": "gcc-release" } ] + }, + { + "name": "appleclang-debug", + "steps": [ + { + "type": "configure", + "name": "appleclang-debug" + }, + { + "type": "build", + "name": "appleclang-debug" + }, + { + "type": "test", + "name": "appleclang-debug" + } + ] + }, + { + "name": "appleclang-release", + "steps": [ + { + "type": "configure", + "name": "appleclang-release" + }, + { + "type": "build", + "name": "appleclang-release" + }, + { + "type": "test", + "name": "appleclang-release" + } + ] + }, + { + "name": "msvc-debug", + "steps": [ + { + "type": "configure", + "name": "msvc-debug" + }, + { + "type": "build", + "name": "msvc-debug" + }, + { + "type": "test", + "name": "msvc-debug" + } + ] + }, + { + "name": "msvc-release", + "steps": [ + { + "type": "configure", + "name": "msvc-release" + }, + { + "type": "build", + "name": "msvc-release" + }, + { + "type": "test", + "name": "msvc-release" + } + ] } ] }