mirror of
https://github.com/curl/curl.git
synced 2025-02-17 14:59:45 +08:00
cmake: option to disable install & drop curlu
target when unused
This patch makes the following changes: - adds the option `CURL_DISABLE_INSTALL` - to disable 'install' targets. - Removes the target `curlu` when the option `BUILD_TESTING` is set to `OFF` - to prevent it from being loaded in Visual Studio. Closes #12287
This commit is contained in:
parent
45d2ff6f85
commit
aace27b096
481
CMakeLists.txt
481
CMakeLists.txt
@ -105,6 +105,8 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
|
|||||||
option(BUILD_STATIC_LIBS "Build static libraries" OFF)
|
option(BUILD_STATIC_LIBS "Build static libraries" OFF)
|
||||||
option(BUILD_STATIC_CURL "Build curl executable with static libcurl" OFF)
|
option(BUILD_STATIC_CURL "Build curl executable with static libcurl" OFF)
|
||||||
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
|
option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
|
||||||
|
option(CURL_DISABLE_INSTALL "Set to ON to disable instalation targets" OFF)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
|
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)
|
option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
|
||||||
@ -1523,259 +1525,262 @@ if(BUILD_TESTING)
|
|||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Helper to populate a list (_items) with a label when conditions (the remaining
|
if(NOT CURL_DISABLE_INSTALL)
|
||||||
# args) are satisfied
|
|
||||||
macro(_add_if label)
|
|
||||||
# needs to be a macro to allow this indirection
|
|
||||||
if(${ARGN})
|
|
||||||
set(_items ${_items} "${label}")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# NTLM support requires crypto function adaptions from various SSL libs
|
# Helper to populate a list (_items) with a label when conditions (the remaining
|
||||||
# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS
|
# args) are satisfied
|
||||||
if(NOT (CURL_DISABLE_NTLM) AND
|
macro(_add_if label)
|
||||||
(USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO OR USE_GNUTLS))
|
# needs to be a macro to allow this indirection
|
||||||
set(use_curl_ntlm_core ON)
|
if(${ARGN})
|
||||||
endif()
|
set(_items ${_items} "${label}")
|
||||||
|
|
||||||
# Clear list and try to detect available features
|
|
||||||
set(_items)
|
|
||||||
_add_if("SSL" SSL_ENABLED)
|
|
||||||
_add_if("IPv6" ENABLE_IPV6)
|
|
||||||
_add_if("unixsockets" USE_UNIX_SOCKETS)
|
|
||||||
_add_if("libz" HAVE_LIBZ)
|
|
||||||
_add_if("brotli" HAVE_BROTLI)
|
|
||||||
_add_if("zstd" HAVE_ZSTD)
|
|
||||||
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
|
|
||||||
_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN)
|
|
||||||
_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND
|
|
||||||
((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
|
|
||||||
# TODO SSP1 (Schannel) check is missing
|
|
||||||
_add_if("SSPI" USE_WINDOWS_SSPI)
|
|
||||||
_add_if("GSS-API" HAVE_GSSAPI)
|
|
||||||
_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC)
|
|
||||||
_add_if("HSTS" NOT CURL_DISABLE_HSTS)
|
|
||||||
# TODO SSP1 missing for SPNEGO
|
|
||||||
_add_if("SPNEGO" NOT CURL_DISABLE_NEGOTIATE_AUTH AND
|
|
||||||
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
|
|
||||||
_add_if("Kerberos" NOT CURL_DISABLE_KERBEROS_AUTH AND
|
|
||||||
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
|
|
||||||
# NTLM support requires crypto function adaptions from various SSL libs
|
|
||||||
# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS
|
|
||||||
_add_if("NTLM" NOT (CURL_DISABLE_NTLM) AND
|
|
||||||
(use_curl_ntlm_core OR USE_WINDOWS_SSPI))
|
|
||||||
# TODO missing option (autoconf: --enable-ntlm-wb)
|
|
||||||
_add_if("NTLM_WB" NOT (CURL_DISABLE_NTLM) AND
|
|
||||||
(use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND
|
|
||||||
NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
|
|
||||||
_add_if("TLS-SRP" USE_TLS_SRP)
|
|
||||||
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
|
|
||||||
_add_if("HTTP2" USE_NGHTTP2)
|
|
||||||
_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE)
|
|
||||||
_add_if("MultiSSL" CURL_WITH_MULTI_SSL)
|
|
||||||
# TODO wolfSSL only support this from v5.0.0 onwards
|
|
||||||
_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS
|
|
||||||
OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR
|
|
||||||
USE_MBEDTLS OR USE_SECTRANSP))
|
|
||||||
_add_if("unicode" ENABLE_UNICODE)
|
|
||||||
_add_if("threadsafe" HAVE_ATOMIC OR
|
|
||||||
(USE_THREADS_POSIX AND HAVE_PTHREAD_H) OR
|
|
||||||
(WIN32 AND HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
|
|
||||||
_add_if("PSL" USE_LIBPSL)
|
|
||||||
string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
|
|
||||||
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
|
|
||||||
|
|
||||||
# Clear list and try to detect available protocols
|
|
||||||
set(_items)
|
|
||||||
_add_if("HTTP" NOT CURL_DISABLE_HTTP)
|
|
||||||
_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED)
|
|
||||||
_add_if("FTP" NOT CURL_DISABLE_FTP)
|
|
||||||
_add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED)
|
|
||||||
_add_if("FILE" NOT CURL_DISABLE_FILE)
|
|
||||||
_add_if("TELNET" NOT CURL_DISABLE_TELNET)
|
|
||||||
_add_if("LDAP" NOT CURL_DISABLE_LDAP)
|
|
||||||
# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS
|
|
||||||
_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND
|
|
||||||
((USE_OPENLDAP AND SSL_ENABLED) OR
|
|
||||||
(NOT USE_OPENLDAP AND HAVE_LDAP_SSL)))
|
|
||||||
_add_if("DICT" NOT CURL_DISABLE_DICT)
|
|
||||||
_add_if("TFTP" NOT CURL_DISABLE_TFTP)
|
|
||||||
_add_if("GOPHER" NOT CURL_DISABLE_GOPHER)
|
|
||||||
_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
|
|
||||||
_add_if("POP3" NOT CURL_DISABLE_POP3)
|
|
||||||
_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
|
|
||||||
_add_if("IMAP" NOT CURL_DISABLE_IMAP)
|
|
||||||
_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
|
|
||||||
_add_if("SMB" NOT CURL_DISABLE_SMB AND
|
|
||||||
use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
|
|
||||||
_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND
|
|
||||||
use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
|
|
||||||
_add_if("SMTP" NOT CURL_DISABLE_SMTP)
|
|
||||||
_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
|
|
||||||
_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH)
|
|
||||||
_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH)
|
|
||||||
_add_if("RTSP" NOT CURL_DISABLE_RTSP)
|
|
||||||
_add_if("RTMP" USE_LIBRTMP)
|
|
||||||
_add_if("MQTT" NOT CURL_DISABLE_MQTT)
|
|
||||||
_add_if("WS" USE_WEBSOCKETS)
|
|
||||||
_add_if("WSS" USE_WEBSOCKETS)
|
|
||||||
if(_items)
|
|
||||||
list(SORT _items)
|
|
||||||
endif()
|
|
||||||
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
|
|
||||||
message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")
|
|
||||||
|
|
||||||
# Clear list and collect SSL backends
|
|
||||||
set(_items)
|
|
||||||
_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL)
|
|
||||||
_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL)
|
|
||||||
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
|
|
||||||
_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS)
|
|
||||||
_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL)
|
|
||||||
_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL)
|
|
||||||
_add_if("GnuTLS" SSL_ENABLED AND USE_GNUTLS)
|
|
||||||
|
|
||||||
if(_items)
|
|
||||||
list(SORT _items)
|
|
||||||
endif()
|
|
||||||
string(REPLACE ";" " " SSL_BACKENDS "${_items}")
|
|
||||||
message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")
|
|
||||||
if(CURL_DEFAULT_SSL_BACKEND)
|
|
||||||
message(STATUS "Default SSL backend: ${CURL_DEFAULT_SSL_BACKEND}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# curl-config needs the following options to be set.
|
|
||||||
set(CC "${CMAKE_C_COMPILER}")
|
|
||||||
# TODO probably put a -D... options here?
|
|
||||||
set(CONFIGURE_OPTIONS "")
|
|
||||||
set(CURLVERSION "${CURL_VERSION}")
|
|
||||||
set(exec_prefix "\${prefix}")
|
|
||||||
set(includedir "\${prefix}/include")
|
|
||||||
set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
|
||||||
set(LIBCURL_LIBS "")
|
|
||||||
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
|
|
||||||
foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
|
|
||||||
if(TARGET "${_lib}")
|
|
||||||
set(_libname "${_lib}")
|
|
||||||
get_target_property(_imported "${_libname}" IMPORTED)
|
|
||||||
if(NOT _imported)
|
|
||||||
# Reading the LOCATION property on non-imported target will error out.
|
|
||||||
# Assume the user won't need this information in the .pc file.
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
get_target_property(_lib "${_libname}" LOCATION)
|
|
||||||
if(NOT _lib)
|
|
||||||
message(WARNING "Bad lib in library list: ${_libname}")
|
|
||||||
continue()
|
|
||||||
endif()
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# NTLM support requires crypto function adaptions from various SSL libs
|
||||||
|
# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS
|
||||||
|
if(NOT (CURL_DISABLE_NTLM) AND
|
||||||
|
(USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO OR USE_GNUTLS))
|
||||||
|
set(use_curl_ntlm_core ON)
|
||||||
endif()
|
endif()
|
||||||
if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
|
|
||||||
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
|
# Clear list and try to detect available features
|
||||||
|
set(_items)
|
||||||
|
_add_if("SSL" SSL_ENABLED)
|
||||||
|
_add_if("IPv6" ENABLE_IPV6)
|
||||||
|
_add_if("unixsockets" USE_UNIX_SOCKETS)
|
||||||
|
_add_if("libz" HAVE_LIBZ)
|
||||||
|
_add_if("brotli" HAVE_BROTLI)
|
||||||
|
_add_if("zstd" HAVE_ZSTD)
|
||||||
|
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
|
||||||
|
_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN)
|
||||||
|
_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND
|
||||||
|
((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES))
|
||||||
|
# TODO SSP1 (Schannel) check is missing
|
||||||
|
_add_if("SSPI" USE_WINDOWS_SSPI)
|
||||||
|
_add_if("GSS-API" HAVE_GSSAPI)
|
||||||
|
_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC)
|
||||||
|
_add_if("HSTS" NOT CURL_DISABLE_HSTS)
|
||||||
|
# TODO SSP1 missing for SPNEGO
|
||||||
|
_add_if("SPNEGO" NOT CURL_DISABLE_NEGOTIATE_AUTH AND
|
||||||
|
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
|
||||||
|
_add_if("Kerberos" NOT CURL_DISABLE_KERBEROS_AUTH AND
|
||||||
|
(HAVE_GSSAPI OR USE_WINDOWS_SSPI))
|
||||||
|
# NTLM support requires crypto function adaptions from various SSL libs
|
||||||
|
# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS
|
||||||
|
_add_if("NTLM" NOT (CURL_DISABLE_NTLM) AND
|
||||||
|
(use_curl_ntlm_core OR USE_WINDOWS_SSPI))
|
||||||
|
# TODO missing option (autoconf: --enable-ntlm-wb)
|
||||||
|
_add_if("NTLM_WB" NOT (CURL_DISABLE_NTLM) AND
|
||||||
|
(use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND
|
||||||
|
NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
|
||||||
|
_add_if("TLS-SRP" USE_TLS_SRP)
|
||||||
|
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
|
||||||
|
_add_if("HTTP2" USE_NGHTTP2)
|
||||||
|
_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE)
|
||||||
|
_add_if("MultiSSL" CURL_WITH_MULTI_SSL)
|
||||||
|
# TODO wolfSSL only support this from v5.0.0 onwards
|
||||||
|
_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS
|
||||||
|
OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR
|
||||||
|
USE_MBEDTLS OR USE_SECTRANSP))
|
||||||
|
_add_if("unicode" ENABLE_UNICODE)
|
||||||
|
_add_if("threadsafe" HAVE_ATOMIC OR
|
||||||
|
(USE_THREADS_POSIX AND HAVE_PTHREAD_H) OR
|
||||||
|
(WIN32 AND HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
|
||||||
|
_add_if("PSL" USE_LIBPSL)
|
||||||
|
string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
|
||||||
|
message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
|
||||||
|
|
||||||
|
# Clear list and try to detect available protocols
|
||||||
|
set(_items)
|
||||||
|
_add_if("HTTP" NOT CURL_DISABLE_HTTP)
|
||||||
|
_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED)
|
||||||
|
_add_if("FTP" NOT CURL_DISABLE_FTP)
|
||||||
|
_add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED)
|
||||||
|
_add_if("FILE" NOT CURL_DISABLE_FILE)
|
||||||
|
_add_if("TELNET" NOT CURL_DISABLE_TELNET)
|
||||||
|
_add_if("LDAP" NOT CURL_DISABLE_LDAP)
|
||||||
|
# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS
|
||||||
|
_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND
|
||||||
|
((USE_OPENLDAP AND SSL_ENABLED) OR
|
||||||
|
(NOT USE_OPENLDAP AND HAVE_LDAP_SSL)))
|
||||||
|
_add_if("DICT" NOT CURL_DISABLE_DICT)
|
||||||
|
_add_if("TFTP" NOT CURL_DISABLE_TFTP)
|
||||||
|
_add_if("GOPHER" NOT CURL_DISABLE_GOPHER)
|
||||||
|
_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED)
|
||||||
|
_add_if("POP3" NOT CURL_DISABLE_POP3)
|
||||||
|
_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
|
||||||
|
_add_if("IMAP" NOT CURL_DISABLE_IMAP)
|
||||||
|
_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
|
||||||
|
_add_if("SMB" NOT CURL_DISABLE_SMB AND
|
||||||
|
use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
|
||||||
|
_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND
|
||||||
|
use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4))
|
||||||
|
_add_if("SMTP" NOT CURL_DISABLE_SMTP)
|
||||||
|
_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
|
||||||
|
_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH)
|
||||||
|
_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH)
|
||||||
|
_add_if("RTSP" NOT CURL_DISABLE_RTSP)
|
||||||
|
_add_if("RTMP" USE_LIBRTMP)
|
||||||
|
_add_if("MQTT" NOT CURL_DISABLE_MQTT)
|
||||||
|
_add_if("WS" USE_WEBSOCKETS)
|
||||||
|
_add_if("WSS" USE_WEBSOCKETS)
|
||||||
|
if(_items)
|
||||||
|
list(SORT _items)
|
||||||
|
endif()
|
||||||
|
string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}")
|
||||||
|
message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}")
|
||||||
|
|
||||||
|
# Clear list and collect SSL backends
|
||||||
|
set(_items)
|
||||||
|
_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL)
|
||||||
|
_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL)
|
||||||
|
_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP)
|
||||||
|
_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS)
|
||||||
|
_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL)
|
||||||
|
_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL)
|
||||||
|
_add_if("GnuTLS" SSL_ENABLED AND USE_GNUTLS)
|
||||||
|
|
||||||
|
if(_items)
|
||||||
|
list(SORT _items)
|
||||||
|
endif()
|
||||||
|
string(REPLACE ";" " " SSL_BACKENDS "${_items}")
|
||||||
|
message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}")
|
||||||
|
if(CURL_DEFAULT_SSL_BACKEND)
|
||||||
|
message(STATUS "Default SSL backend: ${CURL_DEFAULT_SSL_BACKEND}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# curl-config needs the following options to be set.
|
||||||
|
set(CC "${CMAKE_C_COMPILER}")
|
||||||
|
# TODO probably put a -D... options here?
|
||||||
|
set(CONFIGURE_OPTIONS "")
|
||||||
|
set(CURLVERSION "${CURL_VERSION}")
|
||||||
|
set(exec_prefix "\${prefix}")
|
||||||
|
set(includedir "\${prefix}/include")
|
||||||
|
set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
|
||||||
|
set(LIBCURL_LIBS "")
|
||||||
|
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
|
||||||
|
foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
|
||||||
|
if(TARGET "${_lib}")
|
||||||
|
set(_libname "${_lib}")
|
||||||
|
get_target_property(_imported "${_libname}" IMPORTED)
|
||||||
|
if(NOT _imported)
|
||||||
|
# Reading the LOCATION property on non-imported target will error out.
|
||||||
|
# Assume the user won't need this information in the .pc file.
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
get_target_property(_lib "${_libname}" LOCATION)
|
||||||
|
if(NOT _lib)
|
||||||
|
message(WARNING "Bad lib in library list: ${_libname}")
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
|
||||||
|
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
|
||||||
|
else()
|
||||||
|
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
set(ENABLE_SHARED "yes")
|
||||||
|
set(LIBCURL_NO_SHARED "")
|
||||||
|
set(CPPFLAG_CURL_STATICLIB "")
|
||||||
else()
|
else()
|
||||||
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
|
set(ENABLE_SHARED "no")
|
||||||
|
set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}")
|
||||||
|
set(CPPFLAG_CURL_STATICLIB "-DCURL_STATICLIB")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
if(BUILD_STATIC_LIBS)
|
||||||
if(BUILD_SHARED_LIBS)
|
set(ENABLE_STATIC "yes")
|
||||||
set(ENABLE_SHARED "yes")
|
else()
|
||||||
set(LIBCURL_NO_SHARED "")
|
set(ENABLE_STATIC "no")
|
||||||
set(CPPFLAG_CURL_STATICLIB "")
|
endif()
|
||||||
else()
|
# "a" (Linux) or "lib" (Windows)
|
||||||
set(ENABLE_SHARED "no")
|
string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}")
|
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(CPPFLAG_CURL_STATICLIB "-DCURL_STATICLIB")
|
# Set this to "yes" to append all libraries on which -lcurl is dependent
|
||||||
endif()
|
set(REQUIRE_LIB_DEPS "no")
|
||||||
if(BUILD_STATIC_LIBS)
|
# SUPPORT_FEATURES
|
||||||
set(ENABLE_STATIC "yes")
|
# SUPPORT_PROTOCOLS
|
||||||
else()
|
set(VERSIONNUM "${CURL_VERSION_NUM}")
|
||||||
set(ENABLE_STATIC "no")
|
|
||||||
endif()
|
|
||||||
# "a" (Linux) or "lib" (Windows)
|
|
||||||
string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
|
||||||
# Set this to "yes" to append all libraries on which -lcurl is dependent
|
|
||||||
set(REQUIRE_LIB_DEPS "no")
|
|
||||||
# SUPPORT_FEATURES
|
|
||||||
# SUPPORT_PROTOCOLS
|
|
||||||
set(VERSIONNUM "${CURL_VERSION_NUM}")
|
|
||||||
|
|
||||||
# Finally generate a "curl-config" matching this config
|
# Finally generate a "curl-config" matching this config
|
||||||
# Use:
|
# Use:
|
||||||
# * ENABLE_SHARED
|
# * ENABLE_SHARED
|
||||||
# * ENABLE_STATIC
|
# * ENABLE_STATIC
|
||||||
configure_file("${CURL_SOURCE_DIR}/curl-config.in"
|
configure_file("${CURL_SOURCE_DIR}/curl-config.in"
|
||||||
"${CURL_BINARY_DIR}/curl-config" @ONLY)
|
"${CURL_BINARY_DIR}/curl-config" @ONLY)
|
||||||
install(FILES "${CURL_BINARY_DIR}/curl-config"
|
install(FILES "${CURL_BINARY_DIR}/curl-config"
|
||||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
PERMISSIONS
|
PERMISSIONS
|
||||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||||
GROUP_READ GROUP_EXECUTE
|
GROUP_READ GROUP_EXECUTE
|
||||||
WORLD_READ WORLD_EXECUTE)
|
WORLD_READ WORLD_EXECUTE)
|
||||||
|
|
||||||
# Finally generate a pkg-config file matching this config
|
# Finally generate a pkg-config file matching this config
|
||||||
configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in"
|
configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in"
|
||||||
"${CURL_BINARY_DIR}/libcurl.pc" @ONLY)
|
"${CURL_BINARY_DIR}/libcurl.pc" @ONLY)
|
||||||
install(FILES "${CURL_BINARY_DIR}/libcurl.pc"
|
install(FILES "${CURL_BINARY_DIR}/libcurl.pc"
|
||||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
|
|
||||||
# install headers
|
# install headers
|
||||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
|
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl"
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
FILES_MATCHING PATTERN "*.h")
|
FILES_MATCHING PATTERN "*.h")
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
write_basic_package_version_file(
|
write_basic_package_version_file(
|
||||||
"${version_config}"
|
"${version_config}"
|
||||||
VERSION ${CURL_VERSION}
|
VERSION ${CURL_VERSION}
|
||||||
COMPATIBILITY SameMajorVersion
|
COMPATIBILITY SameMajorVersion
|
||||||
)
|
)
|
||||||
file(READ "${version_config}" generated_version_config)
|
file(READ "${version_config}" generated_version_config)
|
||||||
file(WRITE "${version_config}"
|
file(WRITE "${version_config}"
|
||||||
"if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\")
|
"if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\")
|
||||||
# Version 8 satisfies version 7... requirements
|
# Version 8 satisfies version 7... requirements
|
||||||
set(PACKAGE_FIND_VERSION_MAJOR 8)
|
set(PACKAGE_FIND_VERSION_MAJOR 8)
|
||||||
set(PACKAGE_FIND_VERSION_COUNT 1)
|
set(PACKAGE_FIND_VERSION_COUNT 1)
|
||||||
endif()
|
endif()
|
||||||
${generated_version_config}"
|
${generated_version_config}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Use:
|
# Use:
|
||||||
# * TARGETS_EXPORT_NAME
|
# * TARGETS_EXPORT_NAME
|
||||||
# * PROJECT_NAME
|
# * PROJECT_NAME
|
||||||
configure_package_config_file(CMake/curl-config.cmake.in
|
configure_package_config_file(CMake/curl-config.cmake.in
|
||||||
"${project_config}"
|
"${project_config}"
|
||||||
INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(CURL_ENABLE_EXPORT_TARGET)
|
||||||
|
install(
|
||||||
|
EXPORT "${TARGETS_EXPORT_NAME}"
|
||||||
|
NAMESPACE "${PROJECT_NAME}::"
|
||||||
|
DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CURL_ENABLE_EXPORT_TARGET)
|
|
||||||
install(
|
install(
|
||||||
EXPORT "${TARGETS_EXPORT_NAME}"
|
FILES ${version_config} ${project_config}
|
||||||
NAMESPACE "${PROJECT_NAME}::"
|
|
||||||
DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
install(
|
# Workaround for MSVS10 to avoid the Dialog Hell
|
||||||
FILES ${version_config} ${project_config}
|
# FIXME: This could be removed with future version of CMake.
|
||||||
DESTINATION ${CURL_INSTALL_CMAKE_DIR}
|
if(MSVC_VERSION EQUAL 1600)
|
||||||
)
|
set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln")
|
||||||
|
if(EXISTS "${CURL_SLN_FILENAME}")
|
||||||
|
file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Workaround for MSVS10 to avoid the Dialog Hell
|
if(NOT TARGET curl_uninstall)
|
||||||
# FIXME: This could be removed with future version of CMake.
|
configure_file(
|
||||||
if(MSVC_VERSION EQUAL 1600)
|
${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
|
||||||
set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln")
|
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
|
||||||
if(EXISTS "${CURL_SLN_FILENAME}")
|
IMMEDIATE @ONLY)
|
||||||
file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n")
|
|
||||||
|
add_custom_target(curl_uninstall
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT TARGET curl_uninstall)
|
|
||||||
configure_file(
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
|
|
||||||
IMMEDIATE @ONLY)
|
|
||||||
|
|
||||||
add_custom_target(curl_uninstall
|
|
||||||
COMMAND ${CMAKE_COMMAND} -P
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
|
|
||||||
endif()
|
|
||||||
|
@ -47,20 +47,25 @@ if(USE_ARES)
|
|||||||
include_directories(${CARES_INCLUDE_DIR})
|
include_directories(${CARES_INCLUDE_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(
|
if(BUILD_TESTING)
|
||||||
curlu # special libcurlu library just for unittests
|
add_library(
|
||||||
STATIC
|
curlu # special libcurlu library just for unittests
|
||||||
EXCLUDE_FROM_ALL
|
STATIC
|
||||||
${HHEADERS} ${CSOURCES}
|
EXCLUDE_FROM_ALL
|
||||||
)
|
${HHEADERS} ${CSOURCES}
|
||||||
target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB)
|
)
|
||||||
|
target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(ENABLE_CURLDEBUG)
|
if(ENABLE_CURLDEBUG)
|
||||||
# We must compile these sources separately to avoid memdebug.h redefinitions
|
# We must compile these sources separately to avoid memdebug.h redefinitions
|
||||||
# applying to them.
|
# applying to them.
|
||||||
set_source_files_properties(memdebug.c curl_multibyte.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
set_source_files_properties(memdebug.c curl_multibyte.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(curlu PRIVATE ${CURL_LIBS})
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
target_link_libraries(curlu PRIVATE ${CURL_LIBS})
|
||||||
|
endif()
|
||||||
|
|
||||||
transform_makefile_inc("Makefile.soname" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake")
|
transform_makefile_inc("Makefile.soname" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake")
|
||||||
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake)
|
include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake)
|
||||||
|
Loading…
Reference in New Issue
Block a user