From: Viktor Szakats Date: Fri, 25 Oct 2024 00:26:33 +0000 (+0200) Subject: cmake: add native `pkg-config` detection for remaining Find modules X-Git-Tag: curl-8_12_0~330 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39c741b7b008b5959980b29ac721357ff75de3f5;p=thirdparty%2Fcurl.git cmake: add native `pkg-config` detection for remaining Find modules brotli, c-ares, libpsl, libssh2, nghttp2, nghttp3, ntgcp2, zstd. Also: Add workaround for CMake reporting successful libssh2 detection, but leaving the header directory empty, and causing `libssh2.h` not found while compiling. It happens when `pkgconf` is not detecting libssh2 dependency libcrypto in Homebrew after `brew unlink openssl` (as in GHA/macos). The workaround is to require a non-empty header directory to consider the detection successful. This workaround may need to be tweaked and/or applied to other Find modules. Follow-up to 7bab201abe3915a0167c002f9308950cb8a06e4b #15193 Closes #15408 --- diff --git a/CMake/FindBrotli.cmake b/CMake/FindBrotli.cmake index 767abf074f..7e7a6e7322 100644 --- a/CMake/FindBrotli.cmake +++ b/CMake/FindBrotli.cmake @@ -34,47 +34,44 @@ # - `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) diff --git a/CMake/FindCares.cmake b/CMake/FindCares.cmake index ac55be16dd..28faab7129 100644 --- a/CMake/FindCares.cmake +++ b/CMake/FindCares.cmake @@ -33,58 +33,57 @@ # - `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) diff --git a/CMake/FindLibpsl.cmake b/CMake/FindLibpsl.cmake index bb323f4b8c..2097d09d50 100644 --- a/CMake/FindLibpsl.cmake +++ b/CMake/FindLibpsl.cmake @@ -33,48 +33,47 @@ # - `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) diff --git a/CMake/FindLibssh2.cmake b/CMake/FindLibssh2.cmake index 0785214ad9..74480efec4 100644 --- a/CMake/FindLibssh2.cmake +++ b/CMake/FindLibssh2.cmake @@ -33,48 +33,47 @@ # - `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) diff --git a/CMake/FindNGHTTP2.cmake b/CMake/FindNGHTTP2.cmake index a0aacbf27b..d9f5c0dd63 100644 --- a/CMake/FindNGHTTP2.cmake +++ b/CMake/FindNGHTTP2.cmake @@ -33,48 +33,47 @@ # - `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) diff --git a/CMake/FindNGHTTP3.cmake b/CMake/FindNGHTTP3.cmake index 1adbd6047b..6002c16771 100644 --- a/CMake/FindNGHTTP3.cmake +++ b/CMake/FindNGHTTP3.cmake @@ -33,48 +33,47 @@ # - `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) diff --git a/CMake/FindNGTCP2.cmake b/CMake/FindNGTCP2.cmake index 99b022dc41..332e266a3b 100644 --- a/CMake/FindNGTCP2.cmake +++ b/CMake/FindNGTCP2.cmake @@ -41,36 +41,10 @@ # - `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) @@ -83,40 +57,66 @@ if(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() diff --git a/CMake/FindZstd.cmake b/CMake/FindZstd.cmake index 7b0f5575ff..a99f25aa03 100644 --- a/CMake/FindZstd.cmake +++ b/CMake/FindZstd.cmake @@ -33,6 +33,8 @@ # - `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) @@ -44,56 +46,53 @@ if(DEFINED Zstd_LIBRARY AND NOT DEFINED ZSTD_LIBRARY) 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) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c97885d86..af21d81848 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -295,7 +295,12 @@ if(ENABLE_ARES) 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() @@ -837,8 +842,13 @@ if(CURL_BROTLI) 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() @@ -849,8 +859,13 @@ if(CURL_ZSTD) 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() @@ -946,9 +961,14 @@ option(USE_NGHTTP2 "Use nghttp2 library" ON) 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() @@ -977,15 +997,26 @@ if(USE_NGTCP2) 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) @@ -1176,8 +1207,13 @@ set(USE_LIBPSL 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() @@ -1190,8 +1226,13 @@ if(CURL_USE_LIBSSH2) 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()