diff --git a/CMakeLists.txt b/CMakeLists.txt index 14b7c1eb5..0b1ba6eba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,11 @@ if("${CMAKE_SOURCE_DIR}" MATCHES " ") message(FATAL_ERROR "The server cannot build in the path (" ${CMAKE_SOURCE_DIR} ") because it contains a space. Please move the server to a path without spaces.") endif() +# Only 64-bit builds are supported: sent and stored values assume 64-bit pointers and sizes +if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + message(FATAL_ERROR "The server only builds for 64-bit targets (this configuration is ${CMAKE_SIZEOF_VOID_P}-byte pointers). Use a 64-bit compiler and generator, e.g. -A x64 with Visual Studio.") +endif() + include(CTest) set(CMAKE_C_STANDARD 99) diff --git a/README.md b/README.md index 23e982680..647bc9a24 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ CREATE DATABASE darkflame; ``` ## Build the server +The server only builds for 64-bit targets; CMake refuses to configure a 32-bit build. + You can either run `build.sh` when in the root folder of the repository: ```bash diff --git a/dCommon/dEnums/dCommonVars.h b/dCommon/dEnums/dCommonVars.h index 271669e30..89946de39 100644 --- a/dCommon/dEnums/dCommonVars.h +++ b/dCommon/dEnums/dCommonVars.h @@ -14,6 +14,8 @@ #pragma warning (disable:4251) //Disables SQL warnings +static_assert(sizeof(void*) == 8, "The server only builds for 64-bit targets"); + // These are the same define, but they mean two different things in different contexts // so a different define to distinguish what calculation is happening will help clarity. #define FRAMES_TO_MS(x) (1000 / (x))