endif()
if(CURL_HIDDEN_SYMBOLS)
- set(SUPPORTS_SYMBOL_HIDING FALSE)
+ set(_supports_symbol_hiding FALSE)
if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ set(_supports_symbol_hiding TRUE)
+ set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))")
+ set(_cflag_symbols_hide "-fvisibility=hidden")
elseif(CMAKE_COMPILER_IS_GNUCC)
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
# Note: This is considered buggy prior to 4.0 but the autotools do not care, so let us ignore that fact
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ set(_supports_symbol_hiding TRUE)
+ set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))")
+ set(_cflag_symbols_hide "-fvisibility=hidden")
endif()
elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__global")
- set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
+ set(_supports_symbol_hiding TRUE)
+ set(_symbol_extern "__global")
+ set(_cflag_symbols_hide "-xldscope=hidden")
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
# Note: This should probably just check for version 9.1.045 but I am not 100% sure
# so let us do it the same way autotools do.
- set(SUPPORTS_SYMBOL_HIDING TRUE)
- set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
- set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
+ set(_supports_symbol_hiding TRUE)
+ set(_symbol_extern "__attribute__ ((__visibility__ (\"default\")))")
+ set(_cflag_symbols_hide "-fvisibility=hidden")
check_c_source_compiles("#include <stdio.h>
- int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
+ int main(void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
if(NOT _no_bug)
- set(SUPPORTS_SYMBOL_HIDING FALSE)
- set(_SYMBOL_EXTERN "")
- set(_CFLAG_SYMBOLS_HIDE "")
+ set(_supports_symbol_hiding FALSE)
+ set(_symbol_extern "")
+ set(_cflag_symbols_hide "")
endif()
elseif(MSVC)
- set(SUPPORTS_SYMBOL_HIDING TRUE)
+ set(_supports_symbol_hiding TRUE)
endif()
- set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
-elseif(MSVC)
- if(NOT CMAKE_VERSION VERSION_LESS 3.7)
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
- set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
- else()
- message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
- set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
- endif()
+ set(HIDES_CURL_PRIVATE_SYMBOLS ${_supports_symbol_hiding})
else()
+ if(MSVC)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+ endif()
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
endif()
-set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
-set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN})
+set(CURL_CFLAG_SYMBOLS_HIDE ${_cflag_symbols_hide})
+set(CURL_EXTERN_SYMBOL ${_symbol_extern})
if(WIN32)
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
+
option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
+ if(ENABLE_UNICODE)
+ add_definitions("-DUNICODE" "-D_UNICODE")
+ if(MINGW)
+ add_compile_options(-municode)
+ endif()
+ endif()
+
set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
if(CURL_TARGET_WINDOWS_VERSION)
add_definitions("-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
endif()
- if(ENABLE_UNICODE)
- add_definitions("-DUNICODE" "-D_UNICODE")
- if(MINGW)
- add_compile_options(-municode)
- endif()
+
+ # Detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
+ curl_internal_test(HAVE_WIN32_WINNT)
+ if(HAVE_WIN32_WINNT)
+ string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}")
+ string(REGEX REPLACE ".*_WIN32_WINNT=" "" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}")
+ string(REGEX REPLACE "0x([0-9a-f][0-9a-f][0-9a-f])$" "0x0\\1" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") # pad to 4 digits
+ string(TOLOWER "${CURL_TEST_OUTPUT}" HAVE_WIN32_WINNT)
+ message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}")
endif()
+ # Avoid storing HAVE_WIN32_WINNT in CMake cache
+ unset(HAVE_WIN32_WINNT CACHE)
endif()
option(CURL_LTO "Turn on compiler Link Time Optimizations" OFF)
endif()
# If we are on AIX, do the _ALL_SOURCE magic
-if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
- set(_ALL_SOURCE 1)
+if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
+ add_definitions("-D_ALL_SOURCE")
endif()
# If we are on Haiku, make sure that the network library is brought in.
-if(${CMAKE_SYSTEM_NAME} MATCHES Haiku)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lnetwork")
+if(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
+ list(APPEND CURL_LIBS "network")
endif()
# Include all the necessary files for macros
find_package(Threads REQUIRED)
set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT})
set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT})
- set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT})
+ list(APPEND CURL_LIBS ${CMAKE_THREAD_LIBS_INIT})
endif()
endif()
set(SSL_ENABLED ON)
set(USE_OPENSSL ON)
- # Depend on OpenSSL via imported targets if supported by the running
- # version of CMake. This allows our dependents to get our dependencies
- # transitively.
- if(NOT CMAKE_VERSION VERSION_LESS 3.4)
- list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
- else()
- list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
- include_directories(${OPENSSL_INCLUDE_DIR})
- endif()
+ # Depend on OpenSSL via imported targets. This allows our dependents to
+ # get our dependencies transitively.
+ list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "openssl")
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "openssl")
set(HAVE_LIBZ ON)
set(USE_ZLIB ON)
- # Depend on ZLIB via imported targets if supported by the running
- # version of CMake. This allows our dependents to get our dependencies
- # transitively.
- if(NOT CMAKE_VERSION VERSION_LESS 3.4)
- list(APPEND CURL_LIBS ZLIB::ZLIB)
- else()
- list(APPEND CURL_LIBS ${ZLIB_LIBRARIES})
- include_directories(${ZLIB_INCLUDE_DIRS})
- endif()
+ # Depend on ZLIB via imported targets. This allows our dependents to
+ # get our dependencies transitively.
+ list(APPEND CURL_LIBS ZLIB::ZLIB)
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "zlib")
list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS})
endif()
endif()
list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DHAVE_UINTPTR_T") # to pull in stdint.h (as of wolfSSL v5.5.4)
endif()
- if(NOT _extra_libs STREQUAL "")
- list(APPEND CMAKE_REQUIRED_LIBRARIES "${_extra_libs}")
- endif()
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "${_extra_libs}")
check_symbol_exists("${_symbol}" "${_files}" "${_variable}")
cmake_pop_check_state()
endmacro()
set(CURL_INCLUDES ${CURL_INCLUDES} "winsock2.h")
set(CURL_INCLUDES ${CURL_INCLUDES} "ws2tcpip.h")
set(CURL_INCLUDES ${CURL_INCLUDES} "windows.h")
-endif()
-
-if(WIN32)
- # Detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
- curl_internal_test(HAVE_WIN32_WINNT)
- if(HAVE_WIN32_WINNT)
- string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}")
- string(REGEX REPLACE ".*_WIN32_WINNT=" "" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}")
- string(REGEX REPLACE "0x([0-9a-f][0-9a-f][0-9a-f])$" "0x0\\1" CURL_TEST_OUTPUT "${CURL_TEST_OUTPUT}") # pad to 4 digits
- string(TOLOWER "${CURL_TEST_OUTPUT}" HAVE_WIN32_WINNT)
- message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}")
- endif()
- # Avoid storing HAVE_WIN32_WINNT in CMake cache
- unset(HAVE_WIN32_WINNT CACHE)
if(HAVE_WIN32_WINNT)
if(HAVE_WIN32_WINNT LESS 0x0501)
list(SORT _items)
endif()
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
- string(TOLOWER "${SUPPORT_PROTOCOLS}" SUPPORT_PROTOCOLS_LOWER)
- message("Protocols: ${SUPPORT_PROTOCOLS_LOWER}")
+ string(TOLOWER "${SUPPORT_PROTOCOLS}" _support_protocols_lower)
+ message("Protocols: ${_support_protocols_lower}")
# Clear list and try to detect available features
set(_items)
IMMEDIATE @ONLY)
add_custom_target(curl_uninstall
- COMMAND ${CMAKE_COMMAND} -P
- "${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake")
+ COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake")
endif()
endif()