mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
cmake: add ENABLE_THREADED_RESOLVER, rename ARES
Fix detection of the AsynchDNS feature which not just depends on pthreads support, but also on whether USE_POSIX_THREADS is set or not. Caught by test 1014. This patch adds a new ENABLE_THREADED_RESOLVER option (corresponding to --enable-threaded-resolver of autotools) which also needs a check for HAVE_PTHREAD_H. For symmetry with autotools, CURL_USE_ARES is renamed to ENABLE_ARES (--enable-ares). Checks that test for the availability actually use USE_ARES instead as that is the result of whether a-res is available or not (in practice this does not matter as CARES is marked as required package, but nevertheless it is better to write the intent). Signed-off-by: Peter Wu <peter@lekensteyn.nl>
This commit is contained in:
parent
767aaf587c
commit
17d27805f9
@ -74,12 +74,17 @@ include_directories( ${CURL_SOURCE_DIR}/include )
|
|||||||
option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
|
option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
|
||||||
option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
|
option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
|
||||||
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
|
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
|
||||||
option(CURL_USE_ARES "Set to ON to enable c-ares support" OFF)
|
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
|
||||||
|
option(ENABLE_THREADED_RESOLVER "Set to ON to enable POSIX threaded DNS lookup" OFF)
|
||||||
# initialize CURL_LIBS
|
# initialize CURL_LIBS
|
||||||
set(CURL_LIBS "")
|
set(CURL_LIBS "")
|
||||||
|
|
||||||
if(CURL_USE_ARES)
|
if(ENABLE_THREADED_RESOLVER AND ENABLE_ARES)
|
||||||
set(USE_ARES ${CURL_USE_ARES})
|
message(FATAL_ERROR "Options ENABLE_THREADED_RESOLVER and ENABLE_ARES are mutually exclusive")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_ARES)
|
||||||
|
set(USE_ARES 1)
|
||||||
find_package(CARES REQUIRED)
|
find_package(CARES REQUIRED)
|
||||||
list(APPEND CURL_LIBS ${CARES_LIBRARY} )
|
list(APPEND CURL_LIBS ${CARES_LIBRARY} )
|
||||||
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
|
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
|
||||||
@ -236,6 +241,18 @@ if(WIN32)
|
|||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
|
if(ENABLE_THREADED_RESOLVER)
|
||||||
|
check_include_file_concat("pthread.h" HAVE_PTHREAD_H)
|
||||||
|
if(HAVE_PTHREAD_H)
|
||||||
|
set(CMAKE_THREAD_PREFER_PTHREAD 1)
|
||||||
|
find_package(Threads)
|
||||||
|
if(CMAKE_USE_PTHREADS_INIT)
|
||||||
|
set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
set(USE_THREADS_POSIX 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Check for all needed libraries
|
# Check for all needed libraries
|
||||||
check_library_exists_concat("dl" dlopen HAVE_LIBDL)
|
check_library_exists_concat("dl" dlopen HAVE_LIBDL)
|
||||||
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
|
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
|
||||||
@ -1003,9 +1020,7 @@ _add_if("SSL" SSL_ENABLED)
|
|||||||
_add_if("IPv6" ENABLE_IPV6)
|
_add_if("IPv6" ENABLE_IPV6)
|
||||||
_add_if("unix-sockets" USE_UNIX_SOCKETS)
|
_add_if("unix-sockets" USE_UNIX_SOCKETS)
|
||||||
_add_if("libz" HAVE_LIBZ)
|
_add_if("libz" HAVE_LIBZ)
|
||||||
find_package(Threads)
|
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX)
|
||||||
# AsynchDNS depends or USE_ARES or pthreads (mutually exclusive)
|
|
||||||
_add_if("AsynchDNS" USE_ARES OR CMAKE_USE_PTHREADS_INIT)
|
|
||||||
_add_if("IDN" HAVE_LIBIDN)
|
_add_if("IDN" HAVE_LIBIDN)
|
||||||
# TODO SSP1 (WinSSL) check is missing
|
# TODO SSP1 (WinSSL) check is missing
|
||||||
_add_if("SSPI" USE_WINDOWS_SSPI)
|
_add_if("SSPI" USE_WINDOWS_SSPI)
|
||||||
|
@ -57,7 +57,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
|
|||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
|
||||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
if(CURL_USE_ARES)
|
if(USE_ARES)
|
||||||
include_directories(${CARES_INCLUDE_DIR})
|
include_directories(${CARES_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -467,6 +467,9 @@
|
|||||||
/* Define to 1 if you have a working POSIX-style strerror_r function. */
|
/* Define to 1 if you have a working POSIX-style strerror_r function. */
|
||||||
#cmakedefine HAVE_POSIX_STRERROR_R 1
|
#cmakedefine HAVE_POSIX_STRERROR_R 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <pthread.h> header file */
|
||||||
|
#cmakedefine HAVE_PTHREAD_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <pwd.h> header file. */
|
/* Define to 1 if you have the <pwd.h> header file. */
|
||||||
#cmakedefine HAVE_PWD_H 1
|
#cmakedefine HAVE_PWD_H 1
|
||||||
|
|
||||||
@ -879,6 +882,9 @@
|
|||||||
/* Define if you want to enable c-ares support */
|
/* Define if you want to enable c-ares support */
|
||||||
#cmakedefine USE_ARES 1
|
#cmakedefine USE_ARES 1
|
||||||
|
|
||||||
|
/* Define if you want to enable POSIX threaded DNS lookup */
|
||||||
|
#cmakedefine USE_THREADS_POSIX 1
|
||||||
|
|
||||||
/* Define to disable non-blocking sockets. */
|
/* Define to disable non-blocking sockets. */
|
||||||
#cmakedefine USE_BLOCKING_SOCKETS 1
|
#cmakedefine USE_BLOCKING_SOCKETS 1
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ function(SETUP_TEST TEST_NAME) # ARGN are the files in the test
|
|||||||
${CURL_BINARY_DIR}/lib # To be able to reach "curl_config.h"
|
${CURL_BINARY_DIR}/lib # To be able to reach "curl_config.h"
|
||||||
${CURL_BINARY_DIR}/include # To be able to reach "curl/curlbuild.h"
|
${CURL_BINARY_DIR}/include # To be able to reach "curl/curlbuild.h"
|
||||||
)
|
)
|
||||||
if(CURL_USE_ARES)
|
if(USE_ARES)
|
||||||
include_directories(${CARES_INCLUDE_DIR})
|
include_directories(${CARES_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ function(SETUP_EXECUTABLE TEST_NAME) # ARGN are the files in the test
|
|||||||
${CURL_BINARY_DIR}/lib # To be able to reach "curl_config.h"
|
${CURL_BINARY_DIR}/lib # To be able to reach "curl_config.h"
|
||||||
${CURL_BINARY_DIR}/include # To be able to reach "curl/curlbuild.h"
|
${CURL_BINARY_DIR}/include # To be able to reach "curl/curlbuild.h"
|
||||||
)
|
)
|
||||||
if(CURL_USE_ARES)
|
if(USE_ARES)
|
||||||
include_directories(${CARES_INCLUDE_DIR})
|
include_directories(${CARES_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user