| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | 
							- #.rst:
 
- # FindWinSock
 
- # --------
 
- #
 
- # Find the native realtime includes and library.
 
- #
 
- # IMPORTED Targets
 
- # ^^^^^^^^^^^^^^^^
 
- #
 
- # This module defines :prop_tgt:`IMPORTED` target ``WINSOCK::WINSOCK``, if
 
- # WINSOCK has been found.
 
- #
 
- # Result Variables
 
- # ^^^^^^^^^^^^^^^^
 
- #
 
- # This module defines the following variables:
 
- #
 
- # ::
 
- #
 
- #   WINSOCK_INCLUDE_DIRS  - where to find winsock.h, etc.
 
- #   WINSOCK_LIBRARIES     - List of libraries when using librt.
 
- #   WINSOCK_FOUND         - True if realtime library found.
 
- #
 
- # Hints
 
- # ^^^^^
 
- #
 
- # A user may set ``WINSOCK_ROOT`` to a realtime installation root to tell this
 
- # module where to look.
 
- macro(REMOVE_DUPLICATE_PATHS LIST_VAR)
 
-   set(WINSOCK_LIST "")
 
-   foreach(PATH IN LISTS ${LIST_VAR})
 
-     get_filename_component(PATH "${PATH}" REALPATH)
 
-     list(APPEND WINSOCK_LIST "${PATH}")
 
-   endforeach(PATH)
 
-   set(${LIST_VAR} ${WINSOCK_LIST})
 
-   list(REMOVE_DUPLICATES ${LIST_VAR})
 
- endmacro(REMOVE_DUPLICATE_PATHS)
 
- set(WINSOCK_INCLUDE_PATHS "${WINSOCK_ROOT}/include/")
 
- if(MINGW)
 
-   execute_process(
 
-     COMMAND ${CMAKE_C_COMPILER} -xc -E -v -
 
-     RESULT_VARIABLE RESULT
 
-     INPUT_FILE nul
 
-     ERROR_VARIABLE ERR
 
-     OUTPUT_QUIET
 
-   )
 
-   if (NOT RESULT)
 
-     string(FIND "${ERR}" "#include <...> search starts here:" START)
 
-     string(FIND "${ERR}" "End of search list." END)
 
-     if (NOT ${START} EQUAL -1 AND NOT ${END} EQUAL -1)
 
-       math(EXPR START "${START} + 36")
 
-       math(EXPR END "${END} - 1")
 
-       math(EXPR LENGTH "${END} - ${START}")
 
-       string(SUBSTRING "${ERR}" ${START} ${LENGTH} WINSOCK_INCLUDE_PATHS)
 
-       string(REPLACE "\n " ";" WINSOCK_INCLUDE_PATHS "${WINSOCK_INCLUDE_PATHS}")
 
-       list(REVERSE WINSOCK_INCLUDE_PATHS)
 
-     endif()
 
-   endif()
 
- endif()
 
- remove_duplicate_paths(WINSOCK_INCLUDE_PATHS)
 
- set(WINSOCK_LIBRARY_PATHS "${WINSOCK_ROOT}/lib/")
 
- if(MINGW)
 
-   execute_process(
 
-     COMMAND ${CMAKE_C_COMPILER} -print-search-dirs
 
-     RESULT_VARIABLE RESULT
 
-     OUTPUT_VARIABLE OUT
 
-     ERROR_QUIET
 
-   )
 
-   if (NOT RESULT)
 
-     string(REGEX MATCH "libraries: =([^\r\n]*)" OUT "${OUT}")
 
-     list(APPEND WINSOCK_LIBRARY_PATHS "${CMAKE_MATCH_1}")
 
-   endif()
 
- endif()
 
- if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" AND "${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
 
-   list(APPEND WINSOCK_LIBRARY_PATHS "C:/Windows/SysWOW64")
 
- endif()
 
- list(APPEND WINSOCK_LIBRARY_PATHS "C:/Windows/System32")
 
- remove_duplicate_paths(WINSOCK_LIBRARY_PATHS)
 
- find_path(WINSOCK_INCLUDE_DIRS
 
-   NAMES winsock2.h
 
-   PATHS ${WINSOCK_INCLUDE_PATHS}
 
- )
 
- find_library(WINSOCK_LIBRARIES ws2_32
 
-   PATHS ${WINSOCK_LIBRARY_PATHS}
 
-   NO_DEFAULT_PATH
 
- )
 
- include(FindPackageHandleStandardArgs)
 
- find_package_handle_standard_args(WinSock DEFAULT_MSG WINSOCK_LIBRARIES WINSOCK_INCLUDE_DIRS)
 
- mark_as_advanced(WINSOCK_INCLUDE_DIRS WINSOCK_LIBRARIES)
 
- if(WINSOCK_FOUND)
 
-     if(NOT TARGET WINSOCK::WINSOCK)
 
-       add_library(WINSOCK::WINSOCK UNKNOWN IMPORTED)
 
-       set_target_properties(WINSOCK::WINSOCK PROPERTIES
 
-         IMPORTED_LOCATION "${WINSOCK_LIBRARIES}"
 
-         INTERFACE_INCLUDE_DIRECTORIES "${WINSOCK_INCLUDE_DIRS}")
 
-     endif()
 
- endif()
 
 
  |