diff options
-rw-r--r-- | cmake/platform/win/settings.cmake | 4 | ||||
-rw-r--r-- | src/common/Debugging/WheatyExceptionReport.cpp | 2 | ||||
-rw-r--r-- | src/common/Utilities/Util.cpp | 24 | ||||
-rw-r--r-- | src/common/Utilities/Util.h | 2 | ||||
-rw-r--r-- | src/server/bnetserver/Main.cpp | 2 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 2 | ||||
-rw-r--r-- | src/tools/map_extractor/System.cpp | 3 | ||||
-rw-r--r-- | src/tools/mmaps_generator/PathGenerator.cpp | 2 | ||||
-rw-r--r-- | src/tools/vmap4_assembler/VMapAssembler.cpp | 3 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/vmapexport.cpp | 3 |
10 files changed, 41 insertions, 6 deletions
diff --git a/cmake/platform/win/settings.cmake b/cmake/platform/win/settings.cmake index 5bf3439a203..63c118f76e0 100644 --- a/cmake/platform/win/settings.cmake +++ b/cmake/platform/win/settings.cmake @@ -1,6 +1,8 @@ -add_definitions(-D_WIN32_WINNT=0x0601) +add_definitions(-D_WIN32_WINNT=0x0A00) # Windows 10 +add_definitions(-DNTDDI_VERSION=0x0A000007) # 19H1 (1903) add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-DNOMINMAX) +add_definitions(-DTRINITY_REQUIRED_WINDOWS_BUILD=18362) if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") include(${CMAKE_SOURCE_DIR}/cmake/compiler/msvc/settings.cmake) diff --git a/src/common/Debugging/WheatyExceptionReport.cpp b/src/common/Debugging/WheatyExceptionReport.cpp index bab98e72e3b..2c20a8a2e0b 100644 --- a/src/common/Debugging/WheatyExceptionReport.cpp +++ b/src/common/Debugging/WheatyExceptionReport.cpp @@ -243,7 +243,7 @@ BOOL WheatyExceptionReport::_GetWindowsVersion(TCHAR* szVersion, DWORD cntMax) RTL_OSVERSIONINFOEXW osvi = { }; osvi.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW); NTSTATUS bVersionEx = RtlGetVersion((PRTL_OSVERSIONINFOW)&osvi); - if (bVersionEx < 0) + if (FAILED(bVersionEx)) { osvi.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOW); if (!RtlGetVersion((PRTL_OSVERSIONINFOW)&osvi)) diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp index d852ed655a0..5fb34c59948 100644 --- a/src/common/Utilities/Util.cpp +++ b/src/common/Utilities/Util.cpp @@ -31,11 +31,27 @@ #include <cstdarg> #include <ctime> -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU - #include <sys/socket.h> - #include <netinet/in.h> - #include <arpa/inet.h> +void Trinity::VerifyOsVersion() +{ +#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS + auto isWindowsBuildGreaterOrEqual = [](DWORD build) + { + OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, build, 0, {0}, 0, 0, 0, 0 }; + ULONGLONG conditionMask = 0; + VER_SET_CONDITION(conditionMask, VER_BUILDNUMBER, VER_GREATER_EQUAL); + + return VerifyVersionInfo(&osvi, VER_BUILDNUMBER, conditionMask); + }; + + if (!isWindowsBuildGreaterOrEqual(TRINITY_REQUIRED_WINDOWS_BUILD)) + { + OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, 0 }; + GetVersionEx((LPOSVERSIONINFO)&osvi); + ABORT_MSG("TrinityCore requires Windows 10 19H1 (1903) or Windows Server 2019 (1903) - require build number 10.0.%d but found %d.%d.%d", + TRINITY_REQUIRED_WINDOWS_BUILD, osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber); + } #endif +} std::vector<std::string_view> Trinity::Tokenize(std::string_view str, char sep, bool keepEmpty) { diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 334b3ab6ac0..e847eaab24a 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -40,6 +40,8 @@ enum class TimeFormat : uint8 namespace Trinity { + TC_COMMON_API void VerifyOsVersion(); + TC_COMMON_API std::vector<std::string_view> Tokenize(std::string_view str, char sep, bool keepEmpty); /* this would return string_view into temporary otherwise */ diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp index 5d4fae4ce51..afa8ed940c3 100644 --- a/src/server/bnetserver/Main.cpp +++ b/src/server/bnetserver/Main.cpp @@ -90,6 +90,8 @@ int main(int argc, char** argv) { signal(SIGABRT, &Trinity::AbortHandler); + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); auto configFile = fs::absolute(_TRINITY_BNET_CONFIG); diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index eb5aba0e1aa..4ba4a8de9c4 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -131,6 +131,8 @@ extern int main(int argc, char** argv) { signal(SIGABRT, &Trinity::AbortHandler); + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); auto configFile = fs::absolute(_TRINITY_CORE_CONFIG); diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index 8d50b414ea6..cdcb9aff2c8 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -26,6 +26,7 @@ #include "Locales.h" #include "MapDefines.h" #include "StringFormat.h" +#include "Util.h" #include "adt.h" #include "wdt.h" #include <CascLib.h> @@ -1470,6 +1471,8 @@ static bool RetardCheck() int main(int argc, char * arg[]) { + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); Trinity::Banner::Show("Map & DBC Extractor", [](char const* text) { printf("%s\n", text); }, nullptr); diff --git a/src/tools/mmaps_generator/PathGenerator.cpp b/src/tools/mmaps_generator/PathGenerator.cpp index ac9df06265e..803c9e653b4 100644 --- a/src/tools/mmaps_generator/PathGenerator.cpp +++ b/src/tools/mmaps_generator/PathGenerator.cpp @@ -393,6 +393,8 @@ std::unordered_map<uint32, std::vector<uint32>> LoadMap(std::string const& local int main(int argc, char** argv) { + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); Trinity::Banner::Show("MMAP generator", [](char const* text) { printf("%s\n", text); }, nullptr); diff --git a/src/tools/vmap4_assembler/VMapAssembler.cpp b/src/tools/vmap4_assembler/VMapAssembler.cpp index aedafb6d3da..38eb53ed9be 100644 --- a/src/tools/vmap4_assembler/VMapAssembler.cpp +++ b/src/tools/vmap4_assembler/VMapAssembler.cpp @@ -21,9 +21,12 @@ #include "TileAssembler.h" #include "Banner.h" #include "Locales.h" +#include "Util.h" int main(int argc, char* argv[]) { + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); Trinity::Banner::Show("VMAP assembler", [](char const* text) { std::cout << text << std::endl; }, nullptr); diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 541d8136ec3..503170ec7f1 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -25,6 +25,7 @@ #include "VMapDefinitions.h" #include "vmapexport.h" #include "Locales.h" +#include "Util.h" #include "wdtfile.h" #include "wmo.h" #include <algorithm> @@ -446,6 +447,8 @@ static bool RetardCheck() int main(int argc, char ** argv) { + Trinity::VerifyOsVersion(); + Trinity::Locale::Init(); Trinity::Banner::Show("VMAP data extractor", [](char const* text) { printf("%s\n", text); }, nullptr); |