diff --git a/.gitignore b/.gitignore index d7af5d1f..fd927b6a 100644 --- a/.gitignore +++ b/.gitignore @@ -112,6 +112,8 @@ CMakeFiles/TargetDirectories.txt *.sln *.recipe +CMakeUserPresets.json + # clangd .cache thirdparty/zlib-1.2.11/ diff --git a/CMakePresets.json b/CMakePresets.json index bbe7c43f..abcf8549 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,697 +1,136 @@ { - "version": 6, - "cmakeMinimumRequired": { - "major": 3, - "minor": 25, - "patch": 0 + "version": 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 25, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Default configure step", + "description": "Use 'build' dir and Unix makefiles", + "binaryDir": "${sourceDir}/build", + "environment": { + "DLU_CONFIG_DIR": "${sourceDir}/build" + }, + "generator": "Unix Makefiles", + + "hidden": true }, - "configurePresets": [ - { - "name": "default", - "displayName": "Default configure step", - "description": "Use 'build' dir and Unix makefiles", - "binaryDir": "${sourceDir}/build", - "generator": "Unix Makefiles" - }, - { - "name": "debug-config", - "hidden": true, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "relwithdebinfo-config", - "hidden": true, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } - }, - { - "name": "release-config", - "hidden": true, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "clang-config", - "hidden": true, - "toolchainFile": "${sourceDir}/cmake/toolchains/linux-clang.cmake" - }, - { - "name": "gnu-config", - "hidden": true, - "toolchainFile": "${sourceDir}/cmake/toolchains/linux-gnu.cmake" - }, - { - "name": "windows-msvc", - "inherits": "default", - "displayName": "[Multi] Windows (MSVC)", - "description": "Set architecture to 64-bit (b/c RakNet)", - "generator": "Visual Studio 17 2022", - "binaryDir": "${sourceDir}/build/msvc", - "architecture": { - "value": "x64" - }, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Windows" - } - }, - { - "name": "windows-default", - "inherits": "windows-msvc", - "displayName": "Windows only Configure Settings", - "description": "Sets build and install directories", - "generator": "Ninja", - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Windows" - }, - "architecture": { - "value": "x64" - } - }, - { - "name": "windows-msvc-clang", - "inherits": [ - "windows-msvc", - "clang-config" - ], - "displayName": "EXPERIMENTAL - [Multi] Windows (MSVC - Clang)", - "description": "Create a build using the Clang toolchain for MSVC", - "binaryDir": "${sourceDir}/build/msvc-clang", - "toolset": "ClangCL" - }, - { - "name": "linux-config", - "inherits": "default", - "hidden": true, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Linux" - } - }, - { - "name": "linux-clang-debug", - "inherits": [ - "linux-config", - "clang-config", - "debug-config" - ], - "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", - "description": "Create a debug build using the Clang toolchain for Linux", - "binaryDir": "${sourceDir}/build/clang-debug" - }, - { - "name": "linux-clang-relwithdebinfo", - "inherits": [ - "linux-config", - "clang-config", - "relwithdebinfo-config" - ], - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", - "description": "Create a release build with debug info using the Clang toolchain for Linux", - "binaryDir": "${sourceDir}/build/clang-relwithdebinfo" - }, - { - "name": "linux-clang-release", - "inherits": [ - "linux-config", - "clang-config", - "release-config" - ], - "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", - "description": "Create a release build using the Clang toolchain for Linux", - "binaryDir": "${sourceDir}/build/clang-release" - }, - { - "name": "linux-gnu-debug", - "inherits": [ - "linux-config", - "gnu-config", - "debug-config" - ], - "displayName": "[Debug] Linux (GNU)", - "description": "Create a debug build using the GNU toolchain for Linux", - "binaryDir": "${sourceDir}/build/gnu-debug" - }, - { - "name": "linux-gnu-relwithdebinfo", - "inherits": [ - "linux-config", - "gnu-config", - "relwithdebinfo-config" - ], - "displayName": "[RelWithDebInfo] Linux (GNU)", - "description": "Create a release build with debug info using the GNU toolchain for Linux", - "binaryDir": "${sourceDir}/build/gnu-relwithdebinfo" - }, - { - "name": "linux-gnu-release", - "inherits": [ - "linux-config", - "gnu-config", - "release-config" - ], - "displayName": "[Release] Linux (GNU)", - "description": "Create a release build using the GNU toolchain for Linux", - "binaryDir": "${sourceDir}/build/gnu-release" - }, - { - "name": "macos", - "inherits": "default", - "displayName": "[Multi] MacOS", - "description": "Create a build for MacOS", - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Darwin" - }, - "binaryDir": "${sourceDir}/build/macos" + { + "name": "windows-default", + "inherits": "default", + "displayName": "Windows Default Configure Settings", + "description": "Sets build and install directories", + "generator": "Visual Studio 17 2022", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + }, + + "hidden": true + }, + { + "name": "windows-msvc", + "inherits": "windows-default", + "displayName": "Windows (MSVC)", + "description": "Create a build using MSVC", + "binaryDir": "${sourceDir}/build/msvc" + }, + { + "name": "windows-clang", + "inherits": "windows-default", + "displayName": "EXPERIMENTAL - Windows (Clang)", + "description": "Create a build using Clang", + "binaryDir": "${sourceDir}/build/windows-clang", + "toolset": "ClangCL" + }, + + { + "name": "linux-default", + "inherits": "default", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Linux" + } + }, + { + "name": "linux-clang", + "inherits": "linux-default", + + "toolchainFile": "${sourceDir}/cmake/toolchains/linux-clang.cmake", + + "displayName": "Linux (Clang)", + "description": "Create a build using the Clang toolchain for Linux", + "binaryDir": "${sourceDir}/build/linux-clang" + }, + { + "name": "linux-gnu", + "inherits": "linux-default", + + "toolchainFile": "${sourceDir}/cmake/toolchains/linux-gnu.cmake", + + "displayName": "Linux (GNU)", + "description": "Create a build using the GNU toolchain for Linux", + "binaryDir": "${sourceDir}/build/gnu" + }, + { + "name": "macos", + "inherits": "default", + "displayName": "MacOS", + "description": "Create a build for MacOS", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + }, + "binaryDir": "${sourceDir}/build/macos" + } + ], + "testPresets": [ + { + "name": "default", + "configurePreset": "default", + "execution": { + "jobs": 2 + }, + "output": { + "outputOnFailure": true + } + }, + { + "name": "windows-msvc-test", + "inherits": "default", + "configurePreset": "windows-msvc", + "hidden": true, + "filter": { + "exclude": { + "name": "((example)|(minigzip))+" } - ], - "buildPresets": [ + } + } + ], + "workflowPresets": [ + { + "name": "default", + "steps": [ { - "name": "default", - "configurePreset": "default", - "displayName": "Default Build", - "description": "Default Build", - "jobs": 2 + "type": "configure", + "name": "default" }, { - "name": "windows-msvc-debug", - "inherits": "default", - "configurePreset": "windows-msvc", - "displayName": "[Debug] Windows (MSVC)", - "description": "This preset is used to build in debug mode using the MSVC toolchain on Windows", - "configuration": "Debug" + "type": "build", + "name": "default" }, { - "name": "windows-msvc-relwithdebinfo", - "inherits": "default", - "configurePreset": "windows-msvc", - "displayName": "[RelWithDebInfo] Windows (MSVC)", - "description": "This preset is used to build in debug mode using the MSVC toolchain on Windows", - "configuration": "RelWithDebInfo" - }, - { - "name": "windows-msvc-release", - "inherits": "default", - "configurePreset": "windows-msvc", - "displayName": "[Release] Windows (MSVC)", - "description": "This preset is used to build in release mode using the MSVC toolchain on Windows", - "configuration": "Release" - }, - { - "name": "windows-msvc-clang-debug", - "inherits": "default", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [Debug] Windows (MSVC - Clang)", - "description": "This preset is used to build in debug mode using the Clang toolchain on Windows MSVC", - "configuration": "Debug" - }, - { - "name": "windows-msvc-clang-relwithdebinfo", - "inherits": "default", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Windows (MSVC - Clang)", - "description": "This preset is used to build in debug mode using the Clang toolchain on Windows MSVC", - "configuration": "RelWithDebInfo" - }, - { - "name": "windows-msvc-clang-release", - "inherits": "default", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [Release] Windows (MSVC - Clang)", - "description": "This preset is used to build in release mode using the Clang toolchain on Windows MSVC", - "configuration": "Release" - }, - { - "name": "linux-clang-debug", - "inherits": "default", - "configurePreset": "linux-clang-debug", - "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", - "description": "This preset is used to build in debug mode using the Clang toolchain on Linux", - "configuration": "Debug" - }, - { - "name": "linux-clang-relwithdebinfo", - "inherits": "default", - "configurePreset": "linux-clang-relwithdebinfo", - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", - "description": "This preset is used to build in release mode with debug info using the Clang toolchain on Linux", - "configuration": "RelWithDebInfo" - }, - { - "name": "linux-clang-release", - "inherits": "default", - "configurePreset": "linux-clang-release", - "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", - "description": "This preset is used to build in release mode using the Clang toolchain on Linux", - "configuration": "Release" - }, - { - "name": "linux-gnu-debug", - "inherits": "default", - "configurePreset": "linux-gnu-debug", - "displayName": "[Debug] Linux (GNU)", - "description": "This preset is used to build in debug mode using the GNU toolchain on Linux", - "configuration": "Debug" - }, - { - "name": "linux-gnu-relwithdebinfo", - "inherits": "default", - "configurePreset": "linux-gnu-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (GNU)", - "description": "This preset is used to build in release mode with debug info using the GNU toolchain on Linux", - "configuration": "RelWithDebInfo" - }, - { - "name": "linux-gnu-release", - "inherits": "default", - "configurePreset": "linux-gnu-release", - "displayName": "[Release] Linux (GNU)", - "description": "This preset is used to build in release mode using the GNU toolchain on Linux", - "configuration": "Release" - }, - { - "name": "macos-debug", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[Debug] MacOS", - "description": "This preset is used to build in debug mode on MacOS", - "configuration": "Debug" - }, - { - "name": "macos-relwithdebinfo", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[RelWithDebInfo] MacOS", - "description": "This preset is used to build in release mode with debug info on MacOS", - "configuration": "RelWithDebInfo" - }, - { - "name": "macos-release", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[Release] MacOS", - "description": "This preset is used to build in release mode on MacOS", - "configuration": "Release" + "type": "test", + "name": "default" } - ], - "testPresets": [ - { - "name": "default", - "configurePreset": "default", - "execution": { - "jobs": 2 - }, - "output": { - "outputOnFailure": true - } - }, - { - "name": "windows-msvc-test", - "inherits": "default", - "configurePreset": "windows-msvc", - "hidden": true, - "filter": { - "exclude": { - "name": "((example)|(minigzip))+" - } - } - }, - { - "name": "windows-msvc-debug", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc", - "displayName": "[Debug] Windows (MSVC)", - "description": "Runs all tests on a Windows configuration", - "configuration": "Debug" - }, - { - "name": "windows-msvc-relwithdebinfo", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc", - "displayName": "[RelWithDebInfo] Windows (MSVC)", - "description": "Runs all tests on a Windows configuration", - "configuration": "RelWithDebInfo" - }, - { - "name": "windows-msvc-release", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc", - "displayName": "[Release] Windows (MSVC)", - "description": "Runs all tests on a Windows configuration", - "configuration": "Release" - }, - { - "name": "windows-msvc-clang-debug", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [Debug] Windows (MSVC - Clang)", - "description": "Runs all tests on a Windows Clang configuration", - "configuration": "Debug" - }, - { - "name": "windows-msvc-clang-relwithdebinfo", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Windows (MSVC - Clang)", - "description": "Runs all tests on a Windows Clang configuration", - "configuration": "RelWithDebInfo" - }, - { - "name": "windows-msvc-clang-release", - "inherits": "windows-msvc-test", - "configurePreset": "windows-msvc-clang", - "displayName": "EXPERIMENTAL - [Release] Windows (MSVC - Clang)", - "description": "Runs all tests on a Windows Clang configuration", - "configuration": "Release" - }, - { - "name": "linux-clang-debug", - "inherits": "default", - "configurePreset": "linux-clang-debug", - "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", - "description": "Runs all tests on a Linux Clang configuration", - "configuration": "Release" - }, - { - "name": "linux-clang-relwithdebinfo", - "inherits": "default", - "configurePreset": "linux-clang-relwithdebinfo", - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", - "description": "Runs all tests on a Linux Clang configuration", - "configuration": "RelWithDebInfo" - }, - { - "name": "linux-clang-release", - "inherits": "default", - "configurePreset": "linux-clang-release", - "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", - "description": "Runs all tests on a Linux Clang configuration", - "configuration": "Release" - }, - { - "name": "linux-gnu-debug", - "inherits": "default", - "configurePreset": "linux-gnu-debug", - "displayName": "[Debug] Linux (GNU)", - "description": "Runs all tests on a Linux GNU configuration", - "configuration": "Release" - }, - { - "name": "linux-gnu-relwithdebinfo", - "inherits": "default", - "configurePreset": "linux-gnu-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (GNU)", - "description": "Runs all tests on a Linux GNU configuration", - "configuration": "RelWithDebInfo" - }, - { - "name": "linux-gnu-release", - "inherits": "default", - "configurePreset": "linux-gnu-release", - "displayName": "[Release] Linux (GNU)", - "description": "Runs all tests on a Linux GNU configuration", - "configuration": "Release" - }, - { - "name": "macos-debug", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[Debug] MacOS", - "description": "Runs all tests on a MacOS configuration", - "configuration": "Debug" - }, - { - "name": "macos-relwithdebinfo", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[RelWithDebInfo] MacOS", - "description": "Runs all tests on a MacOS configuration", - "configuration": "RelWithDebInfo" - }, - { - "name": "macos-release", - "inherits": "default", - "configurePreset": "macos", - "displayName": "[Release] MacOS", - "description": "Runs all tests on a MacOS configuration", - "configuration": "Release" - } - ], - "workflowPresets": [ - { - "name": "default", - "steps": [ - { - "type": "configure", - "name": "default" - }, - { - "type": "build", - "name": "default" - }, - { - "type": "test", - "name": "default" - } - ] - }, - { - "name": "windows-msvc-debug", - "displayName": "[Debug] Windows (MSVC)", - "description": "MSVC debug workflow preset for Windows", - "steps": [ - { - "type": "configure", - "name": "windows-msvc" - }, - { - "type": "build", - "name": "windows-msvc-debug" - }, - { - "type": "test", - "name": "windows-msvc-debug" - } - ] - }, - { - "name": "windows-msvc-relwithdebinfo", - "displayName": "[RelWithDebInfo] Windows (MSVC)", - "description": "MSVC release with debug info workflow preset for Windows", - "steps": [ - { - "type": "configure", - "name": "windows-msvc" - }, - { - "type": "build", - "name": "windows-msvc-relwithdebinfo" - }, - { - "type": "test", - "name": "windows-msvc-relwithdebinfo" - } - ] - }, - { - "name": "ci-windows-2022", - "displayName": "[Release] Windows (MSVC)", - "description": "CI workflow preset for Windows", - "steps": [ - { - "type": "configure", - "name": "windows-msvc" - }, - { - "type": "build", - "name": "windows-msvc-release" - }, - { - "type": "test", - "name": "windows-msvc-release" - } - ] - }, - { - "name": "linux-gnu-debug", - "displayName": "[Debug] Linux (GNU)", - "description": "GNU debug workflow preset for Linux", - "steps": [ - { - "type": "configure", - "name": "linux-gnu-debug" - }, - { - "type": "build", - "name": "linux-gnu-debug" - }, - { - "type": "test", - "name": "linux-gnu-debug" - } - ] - }, - { - "name": "linux-gnu-relwithdebinfo", - "displayName": "[RelWithDebInfo] Linux (GNU)", - "description": "GNU release with debug info workflow preset for Linux", - "steps": [ - { - "type": "configure", - "name": "linux-gnu-relwithdebinfo" - }, - { - "type": "build", - "name": "linux-gnu-relwithdebinfo" - }, - { - "type": "test", - "name": "linux-gnu-relwithdebinfo" - } - ] - }, - { - "name": "ci-ubuntu-22.04", - "displayName": "[Release] Linux (GNU)", - "description": "CI workflow preset for Ubuntu", - "steps": [ - { - "type": "configure", - "name": "linux-gnu-release" - }, - { - "type": "build", - "name": "linux-gnu-release" - }, - { - "type": "test", - "name": "linux-gnu-release" - } - ] - }, - { - "name": "linux-clang-debug", - "displayName": "EXPERIMENTAL - [Debug] Linux (Clang)", - "description": "Clang debug workflow preset for Linux", - "steps": [ - { - "type": "configure", - "name": "linux-clang-debug" - }, - { - "type": "build", - "name": "linux-clang-debug" - }, - { - "type": "test", - "name": "linux-clang-debug" - } - ] - }, - { - "name": "linux-clang-relwithdebinfo", - "displayName": "EXPERIMENTAL - [RelWithDebInfo] Linux (Clang)", - "description": "Clang release with debug info workflow preset for Linux", - "steps": [ - { - "type": "configure", - "name": "linux-clang-relwithdebinfo" - }, - { - "type": "build", - "name": "linux-clang-relwithdebinfo" - }, - { - "type": "test", - "name": "linux-clang-relwithdebinfo" - } - ] - }, - { - "name": "linux-clang-release", - "displayName": "EXPERIMENTAL - [Release] Linux (Clang)", - "description": "Clang release workflow preset for Linux", - "steps": [ - { - "type": "configure", - "name": "linux-clang-release" - }, - { - "type": "build", - "name": "linux-clang-release" - }, - { - "type": "test", - "name": "linux-clang-release" - } - ] - }, - { - "name": "macos-debug", - "displayName": "[Debug] MacOS", - "description": "Release workflow preset for MacOS", - "steps": [ - { - "type": "configure", - "name": "macos" - }, - { - "type": "build", - "name": "macos-debug" - }, - { - "type": "test", - "name": "macos-debug" - } - ] - }, - { - "name": "macos-relwithdebinfo", - "displayName": "[RelWithDebInfo] MacOS", - "description": "Release with debug info workflow preset for MacOS", - "steps": [ - { - "type": "configure", - "name": "macos" - }, - { - "type": "build", - "name": "macos-relwithdebinfo" - }, - { - "type": "test", - "name": "macos-relwithdebinfo" - } - ] - }, - { - "name": "ci-macos-13", - "displayName": "[Release] MacOS", - "description": "CI workflow preset for MacOS", - "steps": [ - { - "type": "configure", - "name": "macos" - }, - { - "type": "build", - "name": "macos-release" - }, - { - "type": "test", - "name": "macos-release" - } - ] - } - ] + ] + } + ] } diff --git a/dCommon/CMakeLists.txt b/dCommon/CMakeLists.txt index 18fda0ed..e68eea41 100644 --- a/dCommon/CMakeLists.txt +++ b/dCommon/CMakeLists.txt @@ -44,11 +44,14 @@ if (UNIX) elseif (WIN32) include(FetchContent) + set(WITH_GTEST OFF CACHE BOOL "" FORCE) + set(ZLIB_ENABLE_TESTS OFF CACHE BOOL "" FORCE) + # TODO Keep an eye on the zlib repository for an update to disable testing. Don't forget to update CMakePresets FetchContent_Declare( zlib - URL https://github.com/madler/zlib/archive/refs/tags/v1.2.11.zip - URL_HASH MD5=9d6a627693163bbbf3f26403a3a0b0b1 + URL https://github.com/zlib-ng/zlib-ng/archive/refs/tags/2.2.2.zip + URL_HASH MD5=2cf9199fb785ea579a2a9905a75c38b3 ) # Disable warning about no project version. @@ -59,7 +62,6 @@ elseif (WIN32) FetchContent_MakeAvailable(zlib) set(ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR}) - set_target_properties(zlib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}") add_library(ZLIB::ZLIB ALIAS zlib) else () message(