]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
cmake: make CURL_ZLIB a tri-state variable
authorCristian Morales Vega <cristian@samknows.com>
Thu, 19 Nov 2020 07:54:09 +0000 (07:54 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 19 Nov 2020 12:38:47 +0000 (13:38 +0100)
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

CMake/Macros.cmake
CMakeLists.txt
docs/KNOWN_BUGS

index 6c29856c4915008f8b8c3f19c0973b15908c1040..d57dd6ad57a626b7a967995a51cbe69b6e4dfe3a 100644 (file)
@@ -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()
index 29c588bcd70c1726d5e9568d2accbfec9353b825..7a2ad440bdaae9fc95dfa942dcb434eb3db06080 100644 (file)
@@ -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)
index 04ada571d9160fdc7f3f070cddb6c78b01dbcb7c..c427b3fb6d559f742d3c6ecfc77fca8f6517ebf9 100644 (file)
@@ -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