Pārlūkot izejas kodu

Merge pull request #1053 from cyfdecyf/fix-FindWinSock.cmake

fix: FindWinSock include dir and library detection.
bel2125 3 gadi atpakaļ
vecāks
revīzija
f88023ba61
1 mainītis faili ar 11 papildinājumiem un 1 dzēšanām
  1. 11 1
      cmake/FindWinSock.cmake

+ 11 - 1
cmake/FindWinSock.cmake

@@ -39,6 +39,7 @@ endmacro(REMOVE_DUPLICATE_PATHS)
 
 
 set(WINSOCK_INCLUDE_PATHS "${WINSOCK_ROOT}/include/")
 set(WINSOCK_INCLUDE_PATHS "${WINSOCK_ROOT}/include/")
 if(MINGW)
 if(MINGW)
+  file(TOUCH ${CMAKE_BINARY_DIR}/nul)
   execute_process(
   execute_process(
     COMMAND ${CMAKE_C_COMPILER} -xc -E -v -
     COMMAND ${CMAKE_C_COMPILER} -xc -E -v -
     RESULT_VARIABLE RESULT
     RESULT_VARIABLE RESULT
@@ -71,7 +72,16 @@ if(MINGW)
   )
   )
   if (NOT RESULT)
   if (NOT RESULT)
     string(REGEX MATCH "libraries: =([^\r\n]*)" OUT "${OUT}")
     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}")
+      list(APPEND WINSOCK_LIBRARY_PATHS "${_SEARCH_PATHS}")
+      unset(_SEARCH_PATHS)
+    endif()
   endif()
   endif()
 endif()
 endif()
 if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" AND "${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
 if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" AND "${CMAKE_SIZEOF_VOID_P}" EQUAL 4)