Commit ec80b1f4 authored by Sergei Nikulov's avatar Sergei Nikulov Committed by Daniel Stenberg
Browse files

CMake: fix winsock2 detection on windows



Set CMAKE_REQUIRED_DEFINITIONS to include definitions needed to get
the winsock2 API from windows.h.  Simplify the order of checks to
avoid extra conditions.

Use check_include_file instead of check_include_file_concat to look
for OpenSSL headers.  They do not need to participate in a sequence
of dependent system headers.  Also they may cause winsock.h to be
included before ws2tcpip.h, causing the latter to not be detected
in the sequence.

Reviewed-by: default avatarBrad King <brad.king@kitware.com>
parent 676ac46f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
                set(GSS_FLAVOUR "MIT")
            else()
                # prevent compiling the header - just check if we can include it
                set(CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
                set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__")
                check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)

                check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
+14 −15
Original line number Diff line number Diff line
@@ -238,6 +238,7 @@ include (CheckCSourceCompiles)

# On windows preload settings
if(WIN32)
  set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_")
  include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
endif(WIN32)

@@ -294,15 +295,15 @@ if(CMAKE_USE_OPENSSL)
    set(HAVE_LIBSSL ON)
    include_directories(${OPENSSL_INCLUDE_DIR})
    set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
    check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
    check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
    check_include_file_concat("openssl/err.h"    HAVE_OPENSSL_ERR_H)
    check_include_file_concat("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
    check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
    check_include_file_concat("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
    check_include_file_concat("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
    check_include_file_concat("openssl/x509.h"   HAVE_OPENSSL_X509_H)
    check_include_file_concat("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
    check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
    check_include_file("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
    check_include_file("openssl/err.h"    HAVE_OPENSSL_ERR_H)
    check_include_file("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
    check_include_file("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
    check_include_file("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
    check_include_file("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
    check_include_file("openssl/x509.h"   HAVE_OPENSSL_X509_H)
    check_include_file("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
  endif()
endif()

@@ -384,7 +385,7 @@ if(NOT CURL_DISABLE_LDAP)
        return 0;
      }"
    )
    set(CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1" "-DWIN32_LEAN_AND_MEAN")
    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1")
    list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB})
    if(HAVE_LIBLBER)
      list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB})
@@ -536,16 +537,14 @@ else()
endif()

# Check for header files
if(NOT UNIX)
  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
endif(NOT UNIX)
check_include_file_concat("stdio.h"          HAVE_STDIO_H)
if(NOT UNIX)
  check_include_file_concat("windows.h"      HAVE_WINDOWS_H)
  check_include_file_concat("winsock.h"      HAVE_WINSOCK_H)
  check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H)
  check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H)
endif(NOT UNIX)

check_include_file_concat("stdio.h"          HAVE_STDIO_H)
check_include_file_concat("inttypes.h"       HAVE_INTTYPES_H)
check_include_file_concat("sys/filio.h"      HAVE_SYS_FILIO_H)
check_include_file_concat("sys/ioctl.h"      HAVE_SYS_IOCTL_H)