diff --git a/CMakeLists.txt b/CMakeLists.txt
index cef2941d18b743f39e52655a769307021158795f..e432b9ecce3edb7102bf1e7a238b9a299aff4a06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,9 +57,38 @@ if(UNIX)
 endif()
 
 if(WIN32)
-add_definitions("-DHAVE_PREAD")
-add_definitions("-DHAVE_MMAP")
-add_definitions("-DHAVE_STRNDUP")
+    message(STATUS "Building for Windows")
+    add_definitions("-DHAVE_PREAD")
+    add_definitions("-DHAVE_MMAP")
+    add_definitions("-DHAVE_STRNDUP")
+
+    add_definitions ("-DUNDEBUG")
+    add_definitions ("-DNDEBUG")
+    add_definitions ("-DWIN32")
+    add_definitions ("-D_WINDOWS")
+    add_definitions ("-D__WINDOWS__")
+    add_definitions ("-D_CRT_SECURE_NO_WARNINGS")
+    add_definitions ("-DCURL_STATICLIB")
+    add_definitions("-DHAVE_PREAD")
+    add_definitions("-DHAVE_MMAP")
+    add_definitions("-DHAVE_STRNDUP")
+    add_definitions("-DNGHTTP2_STATICLIB")
+    add_compile_definitions(WINVER=0x0600 _WIN32_WINNT=0x0600)
+    add_definitions ("-DDAP_OS_WINDOWS")
+
+     if(DAP_DEBUG)
+      set(_CCOPT "-mconsole -static -Wall -std=gnu11 -Wextra -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -g3 -ggdb -fno-eliminate-unused-debug-symbols -pg")
+      set(_LOPT "-mconsole -static -pg")
+    else()
+      set(_CCOPT "-static -std=gnu11 -Wall -Wextra -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -O3 -fno-ident -ffast-math -ftree-vectorize -mfpmath=sse -mmmx -msse2 -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all")
+    endif()
+
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT} ")
+    set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
+
+    include_directories(3rdparty/uthash/src/)
+    include_directories(3rdparty/wepoll/)
+    #include_directories(libdap-chain-net-srv-vpn/)
 endif()
 
 add_subdirectory(libdap)