diff options
author | Cristian Morales Vega <cristian@samknows.com> | 2020-11-19 07:54:09 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-11-19 13:38:47 +0100 |
commit | f21cc62832a9d5c521d10da9177b075bfed43f2f (patch) | |
tree | 13c3f34d01fc4f3e980c462dac2d0a0cf765e0a6 | |
parent | 73b63876b1d7ede288f38b35ad664b2f9d058825 (diff) | |
download | curl-f21cc62832a9d5c521d10da9177b075bfed43f2f.tar.gz |
cmake: make CURL_ZLIB a tri-state variable
By differentiating between ON and AUTO it can make a missing zlib
library a hard error when CURL_ZLIB=ON is used.
Reviewed-by: Jakub Zakrzewski
Closes #6221
Fixes #6173
-rw-r--r-- | CMake/Macros.cmake | 11 | ||||
-rw-r--r-- | CMakeLists.txt | 33 | ||||
-rw-r--r-- | docs/KNOWN_BUGS | 13 |
3 files changed, 30 insertions, 27 deletions
diff --git a/CMake/Macros.cmake b/CMake/Macros.cmake index 6c29856c4..d57dd6ad5 100644 --- a/CMake/Macros.cmake +++ b/CMake/Macros.cmake @@ -107,3 +107,14 @@ macro(curl_nroff_check) message(WARNING "Found no *nroff program") endif() endmacro() + +macro(optional_dependency DEPENDENCY) + set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)") + set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF) + + if(CURL_${DEPENDENCY} STREQUAL AUTO) + find_package(${DEPENDENCY}) + elseif(CURL_${DEPENDENCY}) + find_package(${DEPENDENCY} REQUIRED) + endif() +endmacro() diff --git a/CMakeLists.txt b/CMakeLists.txt index 29c588bcd..7a2ad440b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -623,28 +623,25 @@ check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2) # Check for symbol dlopen (same as HAVE_LIBDL) check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN) -option(CURL_ZLIB "Set to ON to enable building curl with zlib support." ON) set(HAVE_LIBZ OFF) set(HAVE_ZLIB_H OFF) set(USE_ZLIB OFF) -if(CURL_ZLIB) - find_package(ZLIB QUIET) - if(ZLIB_FOUND) - set(HAVE_ZLIB_H ON) - 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() - list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS}) +optional_dependency(ZLIB) +if(ZLIB_FOUND) + set(HAVE_ZLIB_H ON) + 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() + list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS}) endif() option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF) diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS index 04ada571d..c427b3fb6 100644 --- a/docs/KNOWN_BUGS +++ b/docs/KNOWN_BUGS @@ -129,9 +129,8 @@ problems may have been fixed or changed somewhat since this was written! 15.6 uses -lpthread instead of Threads::Threads 15.7 generated .pc file contains strange entries 15.8 libcurl.pc uses absolute library paths - 15.9 doesn't fail if zlib support is requested but not found - 15.10 cert paths autodetected when cross-compiling - 15.11 libspsl is not supported + 15.9 cert paths autodetected when cross-compiling + 15.10 libspsl is not supported ============================================================================== @@ -887,17 +886,13 @@ problems may have been fixed or changed somewhat since this was written! See https://github.com/curl/curl/issues/6169 -15.9 doesn't fail if zlib support is requested but not found - - See https://github.com/curl/curl/issues/6173 - -15.10 cert paths autodetected when cross-compiling +15.9 cert paths autodetected when cross-compiling The autotools build disables the ca_path/ca_bundle detection when cross-compiling. The cmake build keeps doing the detection. See https://github.com/curl/curl/issues/6178 -15.11 libspsl is not supported +15.10 libspsl is not supported See https://github.com/curl/curl/issues/6214 |