diff --git a/CMakeLists.txt b/CMakeLists.txt
index 595d9722a08c8be73f81c2db3dd7457bb5927772..c591149ad41cebdf60e52cd6dcf01917ee63645a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -310,7 +310,11 @@ endif(UNIX)
 
 
 if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+    if (UNIX)
 	set( CMAKE_C_FLAGS "-Wall -Werror -O4 -fvisibility=hidden ${CMAKE_C_FLAGS}" )
+    else(UNIX)
+	set( CMAKE_C_FLAGS "-Wall -O4 -fvisibility=hidden ${CMAKE_C_FLAGS}" )
+    endif(UNIX)
 endif ()
 
 source_group("Headers Private"  FILES ${HDR_PRIVATE})
diff --git a/cross-ming.cmake b/cross-ming.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..94989f23007e93a03c12b6fa46db16dad051c01c
--- /dev/null
+++ b/cross-ming.cmake
@@ -0,0 +1,31 @@
+#
+# CMake Toolchain file for crosscompiling on MingW.
+#
+# This can be used when running cmake in the following way:
+#  cd build/
+#  cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-ming.cmake
+#
+
+set(CROSS_PATH /usr/bin)
+
+# Target operating system name.
+set(CMAKE_SYSTEM_NAME Windows)
+set(BUILD_SHARED_LIBS OFF)
+
+# Name of C compiler.
+set(CMAKE_C_COMPILER "${CROSS_PATH}/x86_64-w64-mingw32-gcc")
+#set(CMAKE_CXX_COMPILER "${CROSS_PATH}/x86_64-w64-mingw32-g++")
+set(CMAKE_RC_COMPILER "${CROSS_PATH}/x86_64-w64-mingw32-windres")
+set(CMAKE_C_FLAGS "-Wno-error")
+
+# Where to look for the target environment. (More paths can be added here)
+set(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}")
+
+# Adjust the default behavior of the FIND_XXX() commands:
+# search programs in the host environment only.
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+
+# Search headers and libraries in the target environment only.
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index e4e8e23bf82419133d2087ecea2ea750e0e9b210..f957e54d116113a5a553177e487b5971c1b55e11 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -35,7 +35,7 @@ extern "C" {
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #include <stddef.h>
-#include <BaseTsd.h>
+#include <basetsd.h>
 #include "websock-w32.h"
 
 #include "gettimeofday.h"
diff --git a/win32port/zlib/gzio.c b/win32port/zlib/gzio.c
index 26f2da1e9781d9e4dd6d4f0f670568665bf0ea08..a57352e1e028cadc1ce1b77cdcc9b15c6eb5f7f3 100644
--- a/win32port/zlib/gzio.c
+++ b/win32port/zlib/gzio.c
@@ -10,6 +10,7 @@
 #include <stdio.h>
 
 #include "zutil.h"
+#include "gzguts.h"
 
 #ifdef NO_DEFLATE       /* for compatiblity with old definition */
 #  define NO_GZCOMPRESS
@@ -977,7 +978,7 @@ const char * ZEXPORT gzerror (file, errnum)
     *errnum = s->z_err;
     if (*errnum == Z_OK) return (const char*)"";
 
-    m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
+    m = (char*)(*errnum == Z_ERRNO ? zstrerror() : s->stream.msg);
 
     if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);