# - `BROTLI_FOUND`: System has brotli.
# - `BROTLI_INCLUDE_DIRS`: The brotli include directories.
# - `BROTLI_LIBRARIES`: The brotli library names.
+# - `BROTLI_LIBRARY_DIRS`: The brotli library directories.
+# - `BROTLI_CFLAGS`: Required compiler flags.
# - `BROTLI_VERSION`: Version of brotli.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED BROTLI_INCLUDE_DIR AND
+ NOT DEFINED BROTLICOMMON_LIBRARY AND
+ NOT DEFINED BROTLIDEC_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_BROTLI "libbrotlidec")
+ pkg_check_modules(BROTLI "libbrotlicommon")
+ pkg_check_modules(BROTLIDEC "libbrotlidec")
endif()
-find_path(BROTLI_INCLUDE_DIR "brotli/decode.h"
- HINTS
- ${PC_BROTLI_INCLUDEDIR}
- ${PC_BROTLI_INCLUDE_DIRS}
-)
+if(BROTLI_FOUND AND BROTLIDEC_FOUND)
+ list(APPEND BROTLIDEC_LIBRARIES ${BROTLI_LIBRARIES}) # order is significant: brotlidec then brotlicommon
+ list(REVERSE BROTLIDEC_LIBRARIES)
+ list(REMOVE_DUPLICATES BROTLIDEC_LIBRARIES)
+ list(REVERSE BROTLIDEC_LIBRARIES)
+ set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARIES})
+ string(REPLACE ";" " " BROTLI_CFLAGS "${BROTLI_CFLAGS}")
+ message(STATUS "Found Brotli (via pkg-config): ${BROTLI_INCLUDE_DIRS} (found version \"${BROTLI_VERSION}\")")
+else()
+ find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
+ find_library(BROTLICOMMON_LIBRARY NAMES "brotlicommon")
+ find_library(BROTLIDEC_LIBRARY NAMES "brotlidec")
-find_library(BROTLICOMMON_LIBRARY NAMES "brotlicommon"
- HINTS
- ${PC_BROTLI_LIBDIR}
- ${PC_BROTLI_LIBRARY_DIRS}
-)
-find_library(BROTLIDEC_LIBRARY NAMES "brotlidec"
- HINTS
- ${PC_BROTLI_LIBDIR}
- ${PC_BROTLI_LIBRARY_DIRS}
-)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Brotli
+ REQUIRED_VARS
+ BROTLI_INCLUDE_DIR
+ BROTLIDEC_LIBRARY
+ BROTLICOMMON_LIBRARY
+ )
-if(PC_BROTLI_VERSION)
- set(BROTLI_VERSION ${PC_BROTLI_VERSION})
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Brotli
- REQUIRED_VARS
- BROTLI_INCLUDE_DIR
- BROTLIDEC_LIBRARY
- BROTLICOMMON_LIBRARY
- VERSION_VAR
- BROTLI_VERSION
-)
+ if(BROTLI_FOUND)
+ set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
+ set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY})
+ endif()
-if(BROTLI_FOUND)
- set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
- set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY})
+ mark_as_advanced(BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY)
endif()
-
-mark_as_advanced(BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY)
# - `CARES_FOUND`: System has c-ares.
# - `CARES_INCLUDE_DIRS`: The c-ares include directories.
# - `CARES_LIBRARIES`: The c-ares library names.
+# - `CARES_LIBRARY_DIRS`: The c-ares library directories.
+# - `CARES_CFLAGS`: Required compiler flags.
# - `CARES_VERSION`: Version of c-ares.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED CARES_INCLUDE_DIR AND
+ NOT DEFINED CARES_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_CARES "libcares")
+ pkg_check_modules(CARES "libcares")
endif()
-find_path(CARES_INCLUDE_DIR NAMES "ares.h"
- HINTS
- ${PC_CARES_INCLUDEDIR}
- ${PC_CARES_INCLUDE_DIRS}
-)
+if(CARES_FOUND)
+ string(REPLACE ";" " " CARES_CFLAGS "${CARES_CFLAGS}")
+ message(STATUS "Found Cares (via pkg-config): ${CARES_INCLUDE_DIRS} (found version \"${CARES_VERSION}\")")
+else()
+ find_path(CARES_INCLUDE_DIR NAMES "ares.h")
+ find_library(CARES_LIBRARY NAMES ${CARES_NAMES} "cares")
-find_library(CARES_LIBRARY NAMES ${CARES_NAMES} "cares"
- HINTS
- ${PC_CARES_LIBDIR}
- ${PC_CARES_LIBRARY_DIRS}
-)
+ unset(CARES_VERSION CACHE)
+ if(CARES_INCLUDE_DIR AND EXISTS "${CARES_INCLUDE_DIR}/ares_version.h")
+ set(_version_regex1 "#[\t ]*define[\t ]+ARES_VERSION_MAJOR[\t ]+([0-9]+).*")
+ set(_version_regex2 "#[\t ]*define[\t ]+ARES_VERSION_MINOR[\t ]+([0-9]+).*")
+ set(_version_regex3 "#[\t ]*define[\t ]+ARES_VERSION_PATCH[\t ]+([0-9]+).*")
+ file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str1 REGEX "${_version_regex1}")
+ file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str2 REGEX "${_version_regex2}")
+ file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str3 REGEX "${_version_regex3}")
+ string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
+ string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
+ string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}")
+ set(CARES_VERSION "${_version_str1}.${_version_str2}.${_version_str3}")
+ unset(_version_regex1)
+ unset(_version_regex2)
+ unset(_version_regex3)
+ unset(_version_str1)
+ unset(_version_str2)
+ unset(_version_str3)
+ endif()
-if(PC_CARES_VERSION)
- set(CARES_VERSION ${PC_CARES_VERSION})
-elseif(CARES_INCLUDE_DIR AND EXISTS "${CARES_INCLUDE_DIR}/ares_version.h")
- set(_version_regex1 "#[\t ]*define[\t ]+ARES_VERSION_MAJOR[\t ]+([0-9]+).*")
- set(_version_regex2 "#[\t ]*define[\t ]+ARES_VERSION_MINOR[\t ]+([0-9]+).*")
- set(_version_regex3 "#[\t ]*define[\t ]+ARES_VERSION_PATCH[\t ]+([0-9]+).*")
- file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str1 REGEX "${_version_regex1}")
- file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str2 REGEX "${_version_regex2}")
- file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str3 REGEX "${_version_regex3}")
- string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
- string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
- string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}")
- set(CARES_VERSION "${_version_str1}.${_version_str2}.${_version_str3}")
- unset(_version_regex1)
- unset(_version_regex2)
- unset(_version_regex3)
- unset(_version_str1)
- unset(_version_str2)
- unset(_version_str3)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Cares
+ REQUIRED_VARS
+ CARES_INCLUDE_DIR
+ CARES_LIBRARY
+ VERSION_VAR
+ CARES_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Cares
- REQUIRED_VARS
- CARES_INCLUDE_DIR
- CARES_LIBRARY
- VERSION_VAR
- CARES_VERSION
-)
+ if(CARES_FOUND)
+ set(CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR})
+ set(CARES_LIBRARIES ${CARES_LIBRARY})
+ endif()
-if(CARES_FOUND)
- set(CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR})
- set(CARES_LIBRARIES ${CARES_LIBRARY})
+ mark_as_advanced(CARES_INCLUDE_DIR CARES_LIBRARY)
endif()
-
-mark_as_advanced(CARES_INCLUDE_DIR CARES_LIBRARY)
# - `LIBPSL_FOUND`: System has libpsl.
# - `LIBPSL_INCLUDE_DIRS`: The libpsl include directories.
# - `LIBPSL_LIBRARIES`: The libpsl library names.
+# - `LIBPSL_LIBRARY_DIRS`: The libpsl library directories.
+# - `LIBPSL_CFLAGS`: Required compiler flags.
# - `LIBPSL_VERSION`: Version of libpsl.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED LIBPSL_INCLUDE_DIR AND
+ NOT DEFINED LIBPSL_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_LIBPSL "libpsl")
+ pkg_check_modules(LIBPSL "libpsl")
endif()
-find_path(LIBPSL_INCLUDE_DIR NAMES "libpsl.h"
- HINTS
- ${PC_LIBPSL_INCLUDEDIR}
- ${PC_LIBPSL_INCLUDE_DIRS}
-)
+if(LIBPSL_FOUND)
+ string(REPLACE ";" " " LIBPSL_CFLAGS "${LIBPSL_CFLAGS}")
+ message(STATUS "Found Libpsl (via pkg-config): ${LIBPSL_INCLUDE_DIRS} (found version \"${LIBPSL_VERSION}\")")
+else()
+ find_path(LIBPSL_INCLUDE_DIR NAMES "libpsl.h")
+ find_library(LIBPSL_LIBRARY NAMES "psl" "libpsl")
-find_library(LIBPSL_LIBRARY NAMES "psl" "libpsl"
- HINTS
- ${PC_LIBPSL_LIBDIR}
- ${PC_LIBPSL_LIBRARY_DIRS}
-)
+ unset(LIBPSL_VERSION CACHE)
+ if(LIBPSL_INCLUDE_DIR AND EXISTS "${LIBPSL_INCLUDE_DIR}/libpsl.h")
+ set(_version_regex "#[\t ]*define[\t ]+PSL_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(LIBPSL_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
+ endif()
-if(PC_LIBPSL_VERSION)
- set(LIBPSL_VERSION ${PC_LIBPSL_VERSION})
-elseif(LIBPSL_INCLUDE_DIR AND EXISTS "${LIBPSL_INCLUDE_DIR}/libpsl.h")
- set(_version_regex "#[\t ]*define[\t ]+PSL_VERSION[\t ]+\"([^\"]*)\"")
- file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" _version_str REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
- set(LIBPSL_VERSION "${_version_str}")
- unset(_version_regex)
- unset(_version_str)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Libpsl
+ REQUIRED_VARS
+ LIBPSL_INCLUDE_DIR
+ LIBPSL_LIBRARY
+ VERSION_VAR
+ LIBPSL_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Libpsl
- REQUIRED_VARS
- LIBPSL_INCLUDE_DIR
- LIBPSL_LIBRARY
- VERSION_VAR
- LIBPSL_VERSION
-)
+ if(LIBPSL_FOUND)
+ set(LIBPSL_INCLUDE_DIRS ${LIBPSL_INCLUDE_DIR})
+ set(LIBPSL_LIBRARIES ${LIBPSL_LIBRARY})
+ endif()
-if(LIBPSL_FOUND)
- set(LIBPSL_INCLUDE_DIRS ${LIBPSL_INCLUDE_DIR})
- set(LIBPSL_LIBRARIES ${LIBPSL_LIBRARY})
+ mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
endif()
-
-mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
# - `LIBSSH2_FOUND`: System has libssh2.
# - `LIBSSH2_INCLUDE_DIRS`: The libssh2 include directories.
# - `LIBSSH2_LIBRARIES`: The libssh2 library names.
+# - `LIBSSH2_LIBRARY_DIRS`: The libssh2 library directories.
+# - `LIBSSH2_CFLAGS`: Required compiler flags.
# - `LIBSSH2_VERSION`: Version of libssh2.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED LIBSSH2_INCLUDE_DIR AND
+ NOT DEFINED LIBSSH2_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_LIBSSH2 "libssh2")
+ pkg_check_modules(LIBSSH2 "libssh2")
endif()
-find_path(LIBSSH2_INCLUDE_DIR NAMES "libssh2.h"
- HINTS
- ${PC_LIBSSH2_INCLUDEDIR}
- ${PC_LIBSSH2_INCLUDE_DIRS}
-)
+if(LIBSSH2_FOUND AND LIBSSH2_INCLUDE_DIRS)
+ string(REPLACE ";" " " LIBSSH2_CFLAGS "${LIBSSH2_CFLAGS}")
+ message(STATUS "Found Libssh2 (via pkg-config): ${LIBSSH2_INCLUDE_DIRS} (found version \"${LIBSSH2_VERSION}\")")
+else()
+ find_path(LIBSSH2_INCLUDE_DIR NAMES "libssh2.h")
+ find_library(LIBSSH2_LIBRARY NAMES "ssh2" "libssh2")
-find_library(LIBSSH2_LIBRARY NAMES "ssh2" "libssh2"
- HINTS
- ${PC_LIBSSH2_LIBDIR}
- ${PC_LIBSSH2_LIBRARY_DIRS}
-)
+ unset(LIBSSH2_VERSION CACHE)
+ if(LIBSSH2_INCLUDE_DIR AND EXISTS "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
+ set(_version_regex "#[\t ]*define[\t ]+LIBSSH2_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(LIBSSH2_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
+ endif()
-if(PC_LIBSSH2_VERSION)
- set(LIBSSH2_VERSION ${PC_LIBSSH2_VERSION})
-elseif(LIBSSH2_INCLUDE_DIR AND EXISTS "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
- set(_version_regex "#[\t ]*define[\t ]+LIBSSH2_VERSION[\t ]+\"([^\"]*)\"")
- file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _version_str REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
- set(LIBSSH2_VERSION "${_version_str}")
- unset(_version_regex)
- unset(_version_str)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Libssh2
+ REQUIRED_VARS
+ LIBSSH2_INCLUDE_DIR
+ LIBSSH2_LIBRARY
+ VERSION_VAR
+ LIBSSH2_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Libssh2
- REQUIRED_VARS
- LIBSSH2_INCLUDE_DIR
- LIBSSH2_LIBRARY
- VERSION_VAR
- LIBSSH2_VERSION
-)
+ if(LIBSSH2_FOUND)
+ set(LIBSSH2_INCLUDE_DIRS ${LIBSSH2_INCLUDE_DIR})
+ set(LIBSSH2_LIBRARIES ${LIBSSH2_LIBRARY})
+ endif()
-if(LIBSSH2_FOUND)
- set(LIBSSH2_INCLUDE_DIRS ${LIBSSH2_INCLUDE_DIR})
- set(LIBSSH2_LIBRARIES ${LIBSSH2_LIBRARY})
+ mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY)
endif()
-
-mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY)
# - `NGHTTP2_FOUND`: System has nghttp2.
# - `NGHTTP2_INCLUDE_DIRS`: The nghttp2 include directories.
# - `NGHTTP2_LIBRARIES`: The nghttp2 library names.
+# - `NGHTTP2_LIBRARY_DIRS`: The nghttp2 library directories.
+# - `NGHTTP2_CFLAGS`: Required compiler flags.
# - `NGHTTP2_VERSION`: Version of nghttp2.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED NGHTTP2_INCLUDE_DIR AND
+ NOT DEFINED NGHTTP2_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_NGHTTP2 "libnghttp2")
+ pkg_check_modules(NGHTTP2 "libnghttp2")
endif()
-find_path(NGHTTP2_INCLUDE_DIR NAMES "nghttp2/nghttp2.h"
- HINTS
- ${PC_NGHTTP2_INCLUDEDIR}
- ${PC_NGHTTP2_INCLUDE_DIRS}
-)
+if(NGHTTP2_FOUND)
+ string(REPLACE ";" " " NGHTTP2_CFLAGS "${NGHTTP2_CFLAGS}")
+ message(STATUS "Found NGHTTP2 (via pkg-config): ${NGHTTP2_INCLUDE_DIRS} (found version \"${NGHTTP2_VERSION}\")")
+else()
+ find_path(NGHTTP2_INCLUDE_DIR NAMES "nghttp2/nghttp2.h")
+ find_library(NGHTTP2_LIBRARY NAMES "nghttp2" "nghttp2_static")
-find_library(NGHTTP2_LIBRARY NAMES "nghttp2" "nghttp2_static"
- HINTS
- ${PC_NGHTTP2_LIBDIR}
- ${PC_NGHTTP2_LIBRARY_DIRS}
-)
+ unset(NGHTTP2_VERSION CACHE)
+ if(NGHTTP2_INCLUDE_DIR AND EXISTS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h")
+ set(_version_regex "#[\t ]*define[\t ]+NGHTTP2_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(NGHTTP2_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
+ endif()
-if(PC_NGHTTP2_VERSION)
- set(NGHTTP2_VERSION ${PC_NGHTTP2_VERSION})
-elseif(NGHTTP2_INCLUDE_DIR AND EXISTS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h")
- set(_version_regex "#[\t ]*define[\t ]+NGHTTP2_VERSION[\t ]+\"([^\"]*)\"")
- file(STRINGS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h" _version_str REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
- set(NGHTTP2_VERSION "${_version_str}")
- unset(_version_regex)
- unset(_version_str)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(NGHTTP2
+ REQUIRED_VARS
+ NGHTTP2_INCLUDE_DIR
+ NGHTTP2_LIBRARY
+ VERSION_VAR
+ NGHTTP2_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(NGHTTP2
- REQUIRED_VARS
- NGHTTP2_INCLUDE_DIR
- NGHTTP2_LIBRARY
- VERSION_VAR
- NGHTTP2_VERSION
-)
+ if(NGHTTP2_FOUND)
+ set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
+ set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
+ endif()
-if(NGHTTP2_FOUND)
- set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
- set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
+ mark_as_advanced(NGHTTP2_INCLUDE_DIR NGHTTP2_LIBRARY)
endif()
-
-mark_as_advanced(NGHTTP2_INCLUDE_DIR NGHTTP2_LIBRARY)
# - `NGHTTP3_FOUND`: System has nghttp3.
# - `NGHTTP3_INCLUDE_DIRS`: The nghttp3 include directories.
# - `NGHTTP3_LIBRARIES`: The nghttp3 library names.
+# - `NGHTTP3_LIBRARY_DIRS`: The nghttp3 library directories.
+# - `NGHTTP3_CFLAGS`: Required compiler flags.
# - `NGHTTP3_VERSION`: Version of nghttp3.
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED NGHTTP3_INCLUDE_DIR AND
+ NOT DEFINED NGHTTP3_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_NGHTTP3 "libnghttp3")
+ pkg_check_modules(NGHTTP3 "libnghttp3")
endif()
-find_path(NGHTTP3_INCLUDE_DIR NAMES "nghttp3/nghttp3.h"
- HINTS
- ${PC_NGHTTP3_INCLUDEDIR}
- ${PC_NGHTTP3_INCLUDE_DIRS}
-)
+if(NGHTTP3_FOUND)
+ string(REPLACE ";" " " NGHTTP3_CFLAGS "${NGHTTP3_CFLAGS}")
+ message(STATUS "Found NGHTTP3 (via pkg-config): ${NGHTTP3_INCLUDE_DIRS} (found version \"${NGHTTP3_VERSION}\")")
+else()
+ find_path(NGHTTP3_INCLUDE_DIR NAMES "nghttp3/nghttp3.h")
+ find_library(NGHTTP3_LIBRARY NAMES "nghttp3")
-find_library(NGHTTP3_LIBRARY NAMES "nghttp3"
- HINTS
- ${PC_NGHTTP3_LIBDIR}
- ${PC_NGHTTP3_LIBRARY_DIRS}
-)
+ unset(NGHTTP3_VERSION CACHE)
+ if(NGHTTP3_INCLUDE_DIR AND EXISTS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h")
+ set(_version_regex "#[\t ]*define[\t ]+NGHTTP3_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(NGHTTP3_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
+ endif()
-if(PC_NGHTTP3_VERSION)
- set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION})
-elseif(NGHTTP3_INCLUDE_DIR AND EXISTS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h")
- set(_version_regex "#[\t ]*define[\t ]+NGHTTP3_VERSION[\t ]+\"([^\"]*)\"")
- file(STRINGS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h" _version_str REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
- set(NGHTTP3_VERSION "${_version_str}")
- unset(_version_regex)
- unset(_version_str)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(NGHTTP3
+ REQUIRED_VARS
+ NGHTTP3_INCLUDE_DIR
+ NGHTTP3_LIBRARY
+ VERSION_VAR
+ NGHTTP3_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(NGHTTP3
- REQUIRED_VARS
- NGHTTP3_INCLUDE_DIR
- NGHTTP3_LIBRARY
- VERSION_VAR
- NGHTTP3_VERSION
-)
+ if(NGHTTP3_FOUND)
+ set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR})
+ set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY})
+ endif()
-if(NGHTTP3_FOUND)
- set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR})
- set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY})
+ mark_as_advanced(NGHTTP3_INCLUDE_DIR NGHTTP3_LIBRARY)
endif()
-
-mark_as_advanced(NGHTTP3_INCLUDE_DIR NGHTTP3_LIBRARY)
# - `NGTCP2_FOUND`: System has ngtcp2.
# - `NGTCP2_INCLUDE_DIRS`: The ngtcp2 include directories.
# - `NGTCP2_LIBRARIES`: The ngtcp2 library names.
+# - `NGTCP2_LIBRARY_DIRS`: The ngtcp2 library directories.
+# - `NGTCP2_CFLAGS`: Required compiler flags.
# - `NGTCP2_VERSION`: Version of ngtcp2.
-if(CURL_USE_PKGCONFIG)
- find_package(PkgConfig QUIET)
- pkg_check_modules(PC_NGTCP2 "libngtcp2")
-endif()
-
-find_path(NGTCP2_INCLUDE_DIR NAMES "ngtcp2/ngtcp2.h"
- HINTS
- ${PC_NGTCP2_INCLUDEDIR}
- ${PC_NGTCP2_INCLUDE_DIRS}
-)
-
-find_library(NGTCP2_LIBRARY NAMES "ngtcp2"
- HINTS
- ${PC_NGTCP2_LIBDIR}
- ${PC_NGTCP2_LIBRARY_DIRS}
-)
-
-if(PC_NGTCP2_VERSION)
- set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
-elseif(NGTCP2_INCLUDE_DIR AND EXISTS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h")
- set(_version_regex "#[\t ]*define[\t ]+NGTCP2_VERSION[\t ]+\"([^\"]*)\"")
- file(STRINGS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h" _version_str REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
- set(NGTCP2_VERSION "${_version_str}")
- unset(_version_regex)
- unset(_version_str)
-endif()
-
if(NGTCP2_FIND_COMPONENTS)
set(_ngtcp2_crypto_backend "")
foreach(_component IN LISTS NGTCP2_FIND_COMPONENTS)
endforeach()
if(_ngtcp2_crypto_backend)
- string(TOLOWER "ngtcp2_crypto_${_ngtcp2_crypto_backend}" _crypto_library)
+ string(TOLOWER "ngtcp2_crypto_${_ngtcp2_crypto_backend}" _crypto_library_lower)
+ string(TOUPPER "ngtcp2_crypto_${_ngtcp2_crypto_backend}" _crypto_library_upper)
+ endif()
+endif()
- if(CURL_USE_PKGCONFIG)
- pkg_check_modules(PC_${_crypto_library} "lib${_crypto_library}")
- endif()
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED NGTCP2_INCLUDE_DIR AND
+ NOT DEFINED NGTCP2_LIBRARY)
+ find_package(PkgConfig QUIET)
+ pkg_check_modules(NGTCP2 "libngtcp2")
+ if(_ngtcp2_crypto_backend)
+ pkg_check_modules("${_crypto_library_upper}" "lib${_crypto_library_lower}")
+ else()
+ set("${_crypto_library_upper}_FOUND" TRUE)
+ endif()
+endif()
+
+if(NGTCP2_FOUND AND "${${_crypto_library_upper}_FOUND}")
+ list(APPEND NGTCP2_LIBRARIES "${${_crypto_library_upper}_LIBRARIES}")
+ list(REMOVE_DUPLICATES NGTCP2_LIBRARIES)
+ string(REPLACE ";" " " NGTCP2_CFLAGS "${NGTCP2_CFLAGS}")
+ message(STATUS "Found NGTCP2 (via pkg-config): ${NGTCP2_INCLUDE_DIRS} (found version \"${NGTCP2_VERSION}\")")
+else()
+ find_path(NGTCP2_INCLUDE_DIR NAMES "ngtcp2/ngtcp2.h")
+ find_library(NGTCP2_LIBRARY NAMES "ngtcp2")
+
+ unset(NGTCP2_VERSION CACHE)
+ if(NGTCP2_INCLUDE_DIR AND EXISTS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h")
+ set(_version_regex "#[\t ]*define[\t ]+NGTCP2_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(NGTCP2_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
+ endif()
+ if(_ngtcp2_crypto_backend)
get_filename_component(_ngtcp2_library_dir "${NGTCP2_LIBRARY}" DIRECTORY)
- find_library(${_crypto_library}_LIBRARY NAMES ${_crypto_library}
- HINTS
- ${_ngtcp2_library_dir}
- ${PC_${_crypto_library}_LIBDIR}
- ${PC_${_crypto_library}_LIBRARY_DIRS}
- )
+ find_library(${_crypto_library_upper}_LIBRARY NAMES ${_crypto_library_lower} HINTS ${_ngtcp2_library_dir})
- if(${_crypto_library}_LIBRARY)
+ if(${_crypto_library_upper}_LIBRARY)
set(NGTCP2_${_ngtcp2_crypto_backend}_FOUND TRUE)
- set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY})
+ set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library_upper}_LIBRARY})
endif()
endif()
-endif()
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(NGTCP2
- REQUIRED_VARS
- NGTCP2_INCLUDE_DIR
- NGTCP2_LIBRARY
- VERSION_VAR
- NGTCP2_VERSION
- HANDLE_COMPONENTS
-)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(NGTCP2
+ REQUIRED_VARS
+ NGTCP2_INCLUDE_DIR
+ NGTCP2_LIBRARY
+ VERSION_VAR
+ NGTCP2_VERSION
+ HANDLE_COMPONENTS
+ )
-if(NGTCP2_FOUND)
- set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
- set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
-endif()
+ if(NGTCP2_FOUND)
+ set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
+ set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
+ endif()
-mark_as_advanced(NGTCP2_INCLUDE_DIR NGTCP2_LIBRARY NGTCP2_CRYPTO_LIBRARY)
+ mark_as_advanced(NGTCP2_INCLUDE_DIR NGTCP2_LIBRARY NGTCP2_CRYPTO_LIBRARY)
+endif()
# - `ZSTD_FOUND`: System has zstd.
# - `ZSTD_INCLUDE_DIRS`: The zstd include directories.
# - `ZSTD_LIBRARIES`: The zstd library names.
+# - `ZSTD_LIBRARY_DIRS`: The zstd library directories.
+# - `ZSTD_CFLAGS`: Required compiler flags.
# - `ZSTD_VERSION`: Version of zstd.
if(DEFINED Zstd_INCLUDE_DIR AND NOT DEFINED ZSTD_INCLUDE_DIR)
set(ZSTD_LIBRARY "${Zstd_LIBRARY}")
endif()
-if(CURL_USE_PKGCONFIG)
+if(CURL_USE_PKGCONFIG AND
+ NOT DEFINED ZSTD_INCLUDE_DIR AND
+ NOT DEFINED ZSTD_LIBRARY)
find_package(PkgConfig QUIET)
- pkg_check_modules(PC_ZSTD "libzstd")
+ pkg_check_modules(ZSTD "libzstd")
endif()
-find_path(ZSTD_INCLUDE_DIR NAMES "zstd.h"
- HINTS
- ${PC_ZSTD_INCLUDEDIR}
- ${PC_ZSTD_INCLUDE_DIRS}
-)
+if(ZSTD_FOUND)
+ string(REPLACE ";" " " ZSTD_CFLAGS "${ZSTD_CFLAGS}")
+ message(STATUS "Found Zstd (via pkg-config): ${ZSTD_INCLUDE_DIRS} (found version \"${ZSTD_VERSION}\")")
+else()
+ find_path(ZSTD_INCLUDE_DIR NAMES "zstd.h")
+ find_library(ZSTD_LIBRARY NAMES "zstd")
-find_library(ZSTD_LIBRARY NAMES "zstd"
- HINTS
- ${PC_ZSTD_LIBDIR}
- ${PC_ZSTD_LIBRARY_DIRS}
-)
+ unset(ZSTD_VERSION CACHE)
+ if(ZSTD_INCLUDE_DIR AND EXISTS "${ZSTD_INCLUDE_DIR}/zstd.h")
+ set(_version_regex1 "#[\t ]*define[ \t]+ZSTD_VERSION_MAJOR[ \t]+([0-9]+).*")
+ set(_version_regex2 "#[\t ]*define[ \t]+ZSTD_VERSION_MINOR[ \t]+([0-9]+).*")
+ set(_version_regex3 "#[\t ]*define[ \t]+ZSTD_VERSION_RELEASE[ \t]+([0-9]+).*")
+ file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str1 REGEX "${_version_regex1}")
+ file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str2 REGEX "${_version_regex2}")
+ file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str3 REGEX "${_version_regex3}")
+ string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
+ string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
+ string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}")
+ set(ZSTD_VERSION "${_version_str1}.${_version_str2}.${_version_str3}")
+ unset(_version_regex1)
+ unset(_version_regex2)
+ unset(_version_regex3)
+ unset(_version_str1)
+ unset(_version_str2)
+ unset(_version_str3)
+ endif()
-if(PC_ZSTD_VERSION)
- set(ZSTD_VERSION ${PC_ZSTD_VERSION})
-elseif(ZSTD_INCLUDE_DIR AND EXISTS "${ZSTD_INCLUDE_DIR}/zstd.h")
- set(_version_regex1 "#[\t ]*define[ \t]+ZSTD_VERSION_MAJOR[ \t]+([0-9]+).*")
- set(_version_regex2 "#[\t ]*define[ \t]+ZSTD_VERSION_MINOR[ \t]+([0-9]+).*")
- set(_version_regex3 "#[\t ]*define[ \t]+ZSTD_VERSION_RELEASE[ \t]+([0-9]+).*")
- file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str1 REGEX "${_version_regex1}")
- file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str2 REGEX "${_version_regex2}")
- file(STRINGS "${ZSTD_INCLUDE_DIR}/zstd.h" _version_str3 REGEX "${_version_regex3}")
- string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
- string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
- string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}")
- set(ZSTD_VERSION "${_version_str1}.${_version_str2}.${_version_str3}")
- unset(_version_regex1)
- unset(_version_regex2)
- unset(_version_regex3)
- unset(_version_str1)
- unset(_version_str2)
- unset(_version_str3)
-endif()
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Zstd
+ REQUIRED_VARS
+ ZSTD_INCLUDE_DIR
+ ZSTD_LIBRARY
+ VERSION_VAR
+ ZSTD_VERSION
+ )
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Zstd
- REQUIRED_VARS
- ZSTD_INCLUDE_DIR
- ZSTD_LIBRARY
- VERSION_VAR
- ZSTD_VERSION
-)
+ if(ZSTD_FOUND)
+ set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
+ set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
+ endif()
-if(ZSTD_FOUND)
- set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
- set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
+ mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
endif()
-
-mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
set(USE_ARES 1)
find_package(Cares REQUIRED)
list(APPEND CURL_LIBS ${CARES_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${CARES_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libcares")
+ link_directories(${CARES_LIBRARY_DIRS})
+ if(CARES_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CARES_CFLAGS}")
+ endif()
add_definitions("-DCARES_NO_DEPRECATED") # Ignore c-ares deprecation warnings
endif()
if(BROTLI_FOUND)
set(HAVE_BROTLI ON)
list(APPEND CURL_LIBS ${BROTLI_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${BROTLI_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libbrotlidec")
include_directories(SYSTEM ${BROTLI_INCLUDE_DIRS})
+ link_directories(${BROTLI_LIBRARY_DIRS})
+ if(BROTLI_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BROTLI_CFLAGS}")
+ endif()
endif()
endif()
if(ZSTD_FOUND AND NOT ZSTD_VERSION VERSION_LESS 1.0.0)
set(HAVE_ZSTD ON)
list(APPEND CURL_LIBS ${ZSTD_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${ZSTD_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libzstd")
include_directories(SYSTEM ${ZSTD_INCLUDE_DIRS})
+ link_directories(${ZSTD_LIBRARY_DIRS})
+ if(ZSTD_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ZSTD_CFLAGS}")
+ endif()
else()
message(WARNING "zstd v1.0.0 or newer is required, disabling zstd support.")
endif()
if(USE_NGHTTP2)
find_package(NGHTTP2)
if(NGHTTP2_FOUND)
- include_directories(SYSTEM ${NGHTTP2_INCLUDE_DIRS})
list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${NGHTTP2_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libnghttp2")
+ include_directories(SYSTEM ${NGHTTP2_INCLUDE_DIRS})
+ link_directories(${NGHTTP2_LIBRARY_DIRS})
+ if(NGHTTP2_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NGHTTP2_CFLAGS}")
+ endif()
else()
set(USE_NGHTTP2 OFF)
endif()
else()
message(FATAL_ERROR "ngtcp2 requires OpenSSL, wolfSSL or GnuTLS")
endif()
- include_directories(SYSTEM ${NGTCP2_INCLUDE_DIRS})
list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${NGTCP2_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libngtcp2")
+ message(STATUS ">${NGTCP2_INCLUDE_DIRS}<")
+ include_directories(SYSTEM ${NGTCP2_INCLUDE_DIRS})
+ link_directories(${NGTCP2_LIBRARY_DIRS})
+ if(NGTCP2_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NGTCP2_CFLAGS}")
+ endif()
find_package(NGHTTP3 REQUIRED)
set(USE_NGHTTP3 ON)
- include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS})
list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${NGHTTP3_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libnghttp3")
+ include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS})
+ link_directories(${NGHTTP3_LIBRARY_DIRS})
+ if(NGHTTP3_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NGHTTP3_CFLAGS}")
+ endif()
endif()
option(USE_QUICHE "Use quiche library for HTTP/3 support" OFF)
if(CURL_USE_LIBPSL)
find_package(Libpsl REQUIRED)
list(APPEND CURL_LIBS ${LIBPSL_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${LIBPSL_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libpsl")
include_directories(SYSTEM ${LIBPSL_INCLUDE_DIRS})
+ link_directories(${LIBPSL_LIBRARY_DIRS})
+ if(LIBPSL_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBPSL_CFLAGS}")
+ endif()
set(USE_LIBPSL ON)
endif()
find_package(Libssh2)
if(LIBSSH2_FOUND)
list(APPEND CURL_LIBS ${LIBSSH2_LIBRARIES})
+ list(APPEND CURL_LIBDIRS ${LIBSSH2_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libssh2")
include_directories(SYSTEM ${LIBSSH2_INCLUDE_DIRS})
+ link_directories(${LIBSSH2_LIBRARY_DIRS})
+ if(LIBSSH2_CFLAGS)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBSSH2_CFLAGS}")
+ endif()
set(USE_LIBSSH2 ON)
endif()
endif()