Don't use ZLIB_WINAPI if the required DLL is not provided to CMake
authorsfan5 <sfan5@live.de>
Tue, 20 Sep 2016 19:40:05 +0000 (21:40 +0200)
committersfan5 <sfan5@live.de>
Wed, 21 Sep 2016 18:16:31 +0000 (20:16 +0200)
This allows you to use an stdcall zlib (zlib1.dll instead of zlibwapi.dll)
when building Minetest for win32.

src/CMakeLists.txt
src/serialization.cpp

index 608437f3a51f0848dd42015d5dbda7a3aaf14632..ef40bf8fc031756f803a0063a29ba351bdec9860 100644 (file)
@@ -293,9 +293,10 @@ if(WIN32)
        set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
                        CACHE PATH "Zlib include directory")
        set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
-                       CACHE FILEPATH "Path to zlibwapi.lib")
+                       CACHE FILEPATH "Path to zlib library (usually zlibwapi.lib)")
        set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
-                       CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
+                       CACHE FILEPATH "Path to zlib DLL (for installation)")
+       set(ZLIBWAPI_DLL "" CACHE FILEPATH "Path to zlibwapi DLL")
        set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
                        CACHE PATH "irrlicht dir")
        if(USE_FREETYPE)
@@ -723,8 +724,14 @@ else()
                set(OTHER_FLAGS "${OTHER_FLAGS} -Wsign-compare")
        endif()
 
+       if(NOT ZLIBWAPI_DLL AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+               set(OTHER_FLAGS "${OTHER_FLAGS} -DWIN32_NO_ZLIB_WINAPI")
+               message(WARNING "Defaulting to cdecl for zlib on win32 because ZLIBWAPI_DLL"
+                       " isn't set, ensure that ZLIBWAPI_DLL is set if you want stdcall.")
+       endif()
+
        if(MINGW)
-               set(OTHER_FLAGS "-mthreads -fexceptions")
+               set(OTHER_FLAGS "${OTHER_FLAGS} -mthreads -fexceptions")
        endif()
 
        set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} ${OTHER_FLAGS} -ffast-math -Wall -pipe -funroll-loops")
index 79f66fcaebb15b3c8d4fc2c2f21600c03d97b6e1..d30e83726f307cac9d58f83c6f4f80d93d1ebac3 100644 (file)
@@ -20,7 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "serialization.h"
 
 #include "util/serialize.h"
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(WIN32_NO_ZLIB_WINAPI)
        #define ZLIB_WINAPI
 #endif
 #include "zlib.h"