summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Morales Vega <cristian@samknows.com>2020-11-19 07:54:09 +0000
committerDaniel Stenberg <daniel@haxx.se>2020-11-19 13:38:47 +0100
commitf21cc62832a9d5c521d10da9177b075bfed43f2f (patch)
tree13c3f34d01fc4f3e980c462dac2d0a0cf765e0a6
parent73b63876b1d7ede288f38b35ad664b2f9d058825 (diff)
downloadcurl-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.cmake11
-rw-r--r--CMakeLists.txt33
-rw-r--r--docs/KNOWN_BUGS13
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