From 0509aaf855ab07e8dd2c8fc1de0656ff352609c1 Mon Sep 17 00:00:00 2001 From: David Markowitz Date: Sun, 27 Oct 2024 11:11:56 -0700 Subject: [PATCH] Update to have debug and release builds --- .github/workflows/build-and-test.yml | 9 +- CMakePresets.json | 401 ++++++++++++++++----------- tests/CMakeLists.txt | 6 +- tests/dCommonTests/CMakeLists.txt | 6 +- 4 files changed, 251 insertions(+), 171 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 5a5a39969..1f277a4d7 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -13,7 +13,8 @@ jobs: continue-on-error: true strategy: matrix: - os: [ windows-2022, ubuntu-22.04, macos-13, windows-2022-debug ] + os: [ windows-2022, ubuntu-22.04, macos-13 ] + cfg: [ debug, release ] steps: - uses: actions/checkout@v3 @@ -33,9 +34,9 @@ jobs: - name: cmake uses: lukka/run-cmake@v10 with: - configurePreset: "ci-${{matrix.os}}" - buildPreset: "ci-${{matrix.os}}" - testPreset: "ci-${{matrix.os}}" + configurePreset: "ci-${{matrix.os}}-${{matrix.cfg}}" + buildPreset: "ci-${{matrix.os}}-${{matrix.cfg}}" + testPreset: "ci-${{matrix.os}}-${{matrix.cfg}}" - name: artifacts uses: actions/upload-artifact@v3 with: diff --git a/CMakePresets.json b/CMakePresets.json index cb6ebdbb8..03dc5d051 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,167 +1,242 @@ { - "version": 3, - "cmakeMinimumRequired": { - "major": 3, - "minor": 14, - "patch": 0 - }, - "configurePresets": [ - { - "name": "default", - "displayName": "Default configure step", - "description": "Use 'build' dir and Unix makefiles", - "binaryDir": "${sourceDir}/build", - "generator": "Unix Makefiles" + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 14, + "patch": 0 }, - { - "name": "ci-ubuntu-22.04", - "displayName": "CI configure step for Ubuntu", - "description": "Same as default, Used in GitHub actions workflow", - "inherits": "default" - }, - { - "name": "ci-macos-13", - "displayName": "CI configure step for MacOS", - "description": "Same as default, Used in GitHub actions workflow", - "inherits": "default" - }, - { - "name": "ci-windows-2022", - "displayName": "CI configure step for Windows", - "description": "Set architecture to 64-bit (b/c RakNet)", - "inherits": "default", - "generator": "Visual Studio 17 2022", - "architecture": { - "value": "x64" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } - }, - { - "name": "ci-windows-2022-debug", - "displayName": "CI configure step for Windows", - "description": "Set architecture to 64-bit (b/c RakNet)", - "inherits": "default", - "generator": "Visual Studio 17 2022", - "architecture": { - "value": "x64" - }, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "windows-default", - "inherits": "ci-windows-2022", - "displayName": "Windows only Configure Settings", - "description": "Sets build and install directories", - "generator": "Ninja", - "architecture": { - "value": "x64", - "strategy": "external" - } - } - ], - "buildPresets": [ - { - "name": "default", - "configurePreset": "default", - "displayName": "Default Build", - "description": "Default Build", - "jobs": 2 - }, - { - "name": "ci-windows-2022", - "configurePreset": "ci-windows-2022", - "displayName": "Windows CI Build", - "description": "This preset is used by the CI build on windows", - "configuration": "RelWithDebInfo", - "jobs": 2 - }, - { - "name": "ci-windows-2022-debug", - "configurePreset": "ci-windows-2022-debug", - "displayName": "Windows CI Build", - "description": "This preset is used by the CI build on windows for debug", - "configuration": "Debug", - "jobs": 2 - }, - { - "name": "ci-ubuntu-22.04", - "configurePreset": "ci-ubuntu-22.04", - "displayName": "Linux CI Build", - "description": "This preset is used by the CI build on linux", - "jobs": 2 - }, - { - "name": "ci-macos-13", - "configurePreset": "ci-macos-13", - "displayName": "MacOS CI Build", - "description": "This preset is used by the CI build on MacOS", - "jobs": 2 - } - ], - "testPresets": [ - { - "name": "ci-ubuntu-22.04", - "configurePreset": "ci-ubuntu-22.04", - "displayName": "CI Tests on Linux", - "description": "Runs all tests on a linux configuration", - "execution": { - "jobs": 2 - }, - "output": { - "outputOnFailure": true - } - }, - { - "name": "ci-macos-13", - "configurePreset": "ci-macos-13", - "displayName": "CI Tests on MacOS", - "description": "Runs all tests on a Mac configuration", - "execution": { - "jobs": 2 - }, - "output": { - "outputOnFailure": true - } - }, - { - "name": "ci-windows-2022", - "configurePreset": "ci-windows-2022", - "displayName": "CI Tests on windows", - "description": "Runs all tests on a windows configuration", - "configuration": "RelWithDebInfo", - "execution": { - "jobs": 2 - }, - "output": { - "outputOnFailure": true - }, - "filter": { - "exclude": { - "name": "((example)|(minigzip))+" + "configurePresets": [ + { + "name": "default", + "displayName": "Default configure step", + "description": "Use 'build' dir and Unix makefiles", + "binaryDir": "${sourceDir}/build", + "generator": "Unix Makefiles" + }, + { + "name": "ci-debug", + "displayName": "CI configure step for Debug", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "ci-release", + "displayName": "CI configure step for Release", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "ci-ubuntu-22.04-release", + "displayName": "CI configure step for Ubuntu", + "description": "Same as default, Used in GitHub actions workflow", + "inherits": "ci-release" + }, + { + "name": "ci-ubuntu-22.04-debug", + "displayName": "CI configure step for Ubuntu", + "description": "Same as default, Used in GitHub actions workflow", + "inherits": "ci-debug" + }, + { + "name": "ci-macos-13-release", + "displayName": "CI configure step for MacOS", + "description": "Same as default, Used in GitHub actions workflow", + "inherits": "ci-release" + }, + { + "name": "ci-macos-13-debug", + "displayName": "CI configure step for MacOS", + "description": "Same as default, Used in GitHub actions workflow", + "inherits": "ci-debug" + }, + { + "name": "ci-windows-2022-release", + "displayName": "CI configure step for Windows", + "description": "Set architecture to 64-bit (b/c RakNet)", + "inherits": "ci-release", + "generator": "Visual Studio 17 2022", + "architecture": { + "value": "x64" + } + }, + { + "name": "ci-windows-2022-debug", + "displayName": "CI configure step for Windows", + "description": "Set architecture to 64-bit (b/c RakNet)", + "inherits": "ci-debug", + "generator": "Visual Studio 17 2022", + "architecture": { + "value": "x64" + } + }, + { + "name": "windows-default-release", + "inherits": "ci-windows-2022-release", + "displayName": "Windows only Configure Settings (Release)", + "description": "Sets build and install directories", + "generator": "Ninja", + "architecture": { + "value": "x64", + "strategy": "external" + } + }, + { + "name": "windows-default-debug", + "inherits": "ci-windows-2022-debug", + "displayName": "Windows only Configure Settings (Debug)", + "description": "Sets build and install directories", + "generator": "Ninja", + "architecture": { + "value": "x64", + "strategy": "external" + } } - } - }, - { - "name": "ci-windows-2022-debug", - "configurePreset": "ci-windows-2022-debug", - "displayName": "CI Tests on windows", - "description": "Runs all tests on a windows configuration for debug", - "configuration": "Debug", - "execution": { - "jobs": 2 - }, - "output": { - "outputOnFailure": true - }, - "filter": { - "exclude": { - "name": "((example)|(minigzip))+" + ], + "buildPresets": [ + { + "name": "default", + "configurePreset": "default", + "displayName": "Default Build", + "description": "Default Build", + "jobs": 2 + }, + { + "name": "ci-windows-2022-debug", + "configurePreset": "ci-windows-2022-debug", + "displayName": "Windows CI Build", + "description": "This preset is used by the CI build on windows", + "configuration": "RelWithDebInfo", + "inherits": "default" + }, + { + "name": "ci-windows-2022-release", + "configurePreset": "ci-windows-2022-release", + "displayName": "Windows CI Build", + "description": "This preset is used by the CI build on windows", + "configuration": "RelWithDebInfo", + "inherits": "default" + }, + { + "name": "ci-ubuntu-22.04-debug", + "configurePreset": "ci-ubuntu-22.04-debug", + "displayName": "Linux CI Build", + "description": "This preset is used by the CI build on linux", + "inherits": "default" + }, + { + "name": "ci-ubuntu-22.04-release", + "configurePreset": "ci-ubuntu-22.04-release", + "displayName": "Linux CI Build", + "description": "This preset is used by the CI build on linux", + "inherits": "default" + }, + { + "name": "ci-macos-13-debug", + "configurePreset": "ci-macos-13-debug", + "displayName": "MacOS CI Build", + "description": "This preset is used by the CI build on MacOS", + "inherits": "default" + }, + { + "name": "ci-macos-13-release", + "configurePreset": "ci-macos-13-release", + "displayName": "MacOS CI Build", + "description": "This preset is used by the CI build on MacOS", + "inherits": "default" + } + ], + "testPresets": [ + { + "name": "ci-ubuntu-22.04-debug", + "configurePreset": "ci-ubuntu-22.04-debug", + "displayName": "CI Tests on Linux", + "description": "Runs all tests on a linux configuration", + "configuration": "Debug", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + } + }, + { + "name": "ci-ubuntu-22.04-release", + "configurePreset": "ci-ubuntu-22.04-release", + "displayName": "CI Tests on Linux", + "description": "Runs all tests on a linux configuration", + "configuration": "RelWithDebInfo", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + } + }, + { + "name": "ci-macos-13-debug", + "configurePreset": "ci-macos-13-debug", + "displayName": "CI Tests on MacOS", + "description": "Runs all tests on a Mac configuration", + "configuration": "Debug", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + } + }, + { + "name": "ci-macos-13-release", + "configurePreset": "ci-macos-13-release", + "displayName": "CI Tests on MacOS", + "description": "Runs all tests on a Mac configuration", + "configuration": "RelWithDebInfo", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + } + }, + { + "name": "ci-windows-2022-release", + "configurePreset": "ci-windows-2022-release", + "displayName": "CI Tests on windows", + "description": "Runs all tests on a windows configuration", + "configuration": "RelWithDebInfo", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + }, + "filter": { + "exclude": { + "name": "((example)|(minigzip))+" + } + } + }, + { + "name": "ci-windows-2022-debug", + "configurePreset": "ci-windows-2022-debug", + "displayName": "CI Tests on windows", + "description": "Runs all tests on a windows configuration for debug", + "configuration": "Debug", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + }, + "filter": { + "exclude": { + "name": "((example)|(minigzip))+" + } + } } - } - } - ] - } + ] +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index fb7c8519c..f9abf11a4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,8 +15,10 @@ endif() add_custom_target(conncpp_tests ${CMAKE_COMMAND} -E copy $ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -add_custom_target(zlib_tests - ${CMAKE_COMMAND} -E copy $ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +if(MSVC) + add_custom_target(zlib_tests + ${CMAKE_COMMAND} -E copy $ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +endif() # Add the subdirectories add_subdirectory(dCommonTests) diff --git a/tests/dCommonTests/CMakeLists.txt b/tests/dCommonTests/CMakeLists.txt index a11f51c0e..b90aa4c07 100644 --- a/tests/dCommonTests/CMakeLists.txt +++ b/tests/dCommonTests/CMakeLists.txt @@ -17,8 +17,10 @@ list(APPEND DCOMMONTEST_SOURCES ${DENUMS_TESTS}) # Set our executable add_executable(dCommonTests ${DCOMMONTEST_SOURCES}) -add_dependencies(dCommonTests conncpp_tests zlib_tests) - +add_dependencies(dCommonTests conncpp_tests) +if(MSVC) + add_dependencies(dCommonTests zlib_tests) +endif() # Apple needs some special linkage for the mariadb connector for tests. if(APPLE) add_custom_command(TARGET dCommonTests POST_BUILD