diff --git a/Doc/changelog.docu b/Doc/changelog.docu
index b95f1239ba973fc60837b898891be29c8e0e9ef0..a8e8c1357341604c15a16aa5131f7f16d2810758 100644
--- a/Doc/changelog.docu
+++ b/Doc/changelog.docu
@@ -29,6 +29,7 @@
 <b>Build System</b>
 <ul>
 <li>Some fixes for min gw (Thanks to Xan for the patch)</li>
+<li>Several changes to support mingw on windows again. (Thanks to Christian Feurer for the patches).</li>
 </ul>
 
 <b>Infrastructure</b>
diff --git a/cmake/ACGCommon.cmake b/cmake/ACGCommon.cmake
index 3eb69f5b0745c0d63e2f11eb871ba32e8e6e78c2..a4419084fe5ee46d7fd48b4d4b71c6d67f0c80db 100644
--- a/cmake/ACGCommon.cmake
+++ b/cmake/ACGCommon.cmake
@@ -619,7 +619,7 @@ function (acg_add_library _target _libtype)
 
   if (${_libtype} STREQUAL SHAREDANDSTATIC)
     set (_type SHARED)
-    if (NOT WIN32)
+    if (NOT WIN32 OR MINGW)
       set (_and_static 1)
     else ()
       set (_and_static 0)
@@ -649,7 +649,7 @@ function (acg_add_library _target _libtype)
     endif ()
   endif ()
 
-  if (WIN32 OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE))
+  if ( (WIN32 AND MSVC) OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE))
     if (${_type} STREQUAL SHARED)
       add_custom_command (TARGET ${_target} POST_BUILD
                           COMMAND ${CMAKE_COMMAND} -E
@@ -688,7 +688,7 @@ function (acg_add_library _target _libtype)
                             ${CMAKE_BINARY_DIR}/Build/${ACG_PROJECT_BINDIR}/$<TARGET_FILE_NAME:${_target}>)
 	endif () 
     
-  endif(WIN32 OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE))
+  endif( (WIN32 AND MSVC) OR (APPLE AND NOT ACG_PROJECT_MACOS_BUNDLE))
   
   if (_and_static)
     add_custom_command (TARGET ${_target}Static POST_BUILD
diff --git a/src/OpenMesh/Core/CMakeLists.txt b/src/OpenMesh/Core/CMakeLists.txt
index f74c41db4460dfa13b61c4356aaad60abc70f0be..9c8c1670bb1c71c2080c2d0dd99706318933fee8 100644
--- a/src/OpenMesh/Core/CMakeLists.txt
+++ b/src/OpenMesh/Core/CMakeLists.txt
@@ -35,7 +35,7 @@ if ( NOT ${PROJECT_NAME} MATCHES "OpenMesh")
 endif()
 
 
-if (WIN32)
+if (WIN32 AND NOT MINGW)
 
   if ( OPENMESH_BUILD_SHARED )
     add_definitions( -DOPENMESHDLL -DBUILDOPENMESHDLL)
diff --git a/src/OpenMesh/Tools/CMakeLists.txt b/src/OpenMesh/Tools/CMakeLists.txt
index a37785b1215226b0fc3590df5961f4a564cb8471..728a367a69783cffeeccaf6880299a4aa7cf4d91 100644
--- a/src/OpenMesh/Tools/CMakeLists.txt
+++ b/src/OpenMesh/Tools/CMakeLists.txt
@@ -25,9 +25,9 @@ acg_append_files (sources "*.cc" ${directories})
 #Drop the template only cc files
 acg_drop_templates(sources)
 
-IF(WIN32)
+IF(WIN32 AND NOT MINGW)
   acg_append_files (sources "*.c" ${directories})
-ENDIF(WIN32)
+ENDIF(WIN32 AND NOT MINGW)
 
 # Disable Library installation when not building OpenMesh on its own but as part of another project!
 if ( NOT ${PROJECT_NAME} MATCHES "OpenMesh")