diff --git a/cmake/FindWinSock.cmake b/cmake/FindWinSock.cmake
index 25c4f2fa..26753e5d 100644
--- a/cmake/FindWinSock.cmake
+++ b/cmake/FindWinSock.cmake
@@ -39,6 +39,7 @@ endmacro(REMOVE_DUPLICATE_PATHS)
 
 set(WINSOCK_INCLUDE_PATHS "${WINSOCK_ROOT}/include/")
 if(MINGW)
+  file(TOUCH ${CMAKE_BINARY_DIR}/nul)
   execute_process(
     COMMAND ${CMAKE_C_COMPILER} -xc -E -v -
     RESULT_VARIABLE RESULT
@@ -71,7 +72,17 @@ if(MINGW)
   )
   if (NOT RESULT)
     string(REGEX MATCH "libraries: =([^\r\n]*)" OUT "${OUT}")
-    list(APPEND WINSOCK_LIBRARY_PATHS "${CMAKE_MATCH_1}")
+    if(CMAKE_HOST_WIN32)
+      message(STATUS "not replacing ${_SEARCH_PATHS}")
+      list(APPEND WINSOCK_LIBRARY_PATHS "${CMAKE_MATCH_1}")
+    else()
+      # On Unix-like host systems, search dirs are separated by ':'.
+      # Thus we need to replace ':' with ';' to make a valid cmake list.
+      string(REPLACE ":" ";" _SEARCH_PATHS "${CMAKE_MATCH_1}")
+      message(STATUS "after replace ${_SEARCH_PATHS}")
+      list(APPEND WINSOCK_LIBRARY_PATHS "${_SEARCH_PATHS}")
+      unset(_SEARCH_PATHS)
+    endif()
   endif()
 endif()
 if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" AND "${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
