diff --git a/CMake/FindGSS.cmake b/CMake/FindGSS.cmake index 07e4fd0444..83a9fc2d6f 100644 --- a/CMake/FindGSS.cmake +++ b/CMake/FindGSS.cmake @@ -53,7 +53,7 @@ set(_gss_root_hints # Try to find library using system pkg-config if user did not specify root dir if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}") - if(NOT MSVC OR VCPKG_TOOLCHAIN) + if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(_GSS ${_mit_modname} ${_heimdal_modname}) list(APPEND _gss_root_hints "${_GSS_PREFIX}") diff --git a/CMake/FindMSH3.cmake b/CMake/FindMSH3.cmake index 59e8c31dbb..56dc2a39ef 100644 --- a/CMake/FindMSH3.cmake +++ b/CMake/FindMSH3.cmake @@ -29,7 +29,7 @@ # MSH3_INCLUDE_DIRS The msh3 include directories # MSH3_LIBRARIES The libraries needed to use msh3 -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_MSH3 "libmsh3") endif() diff --git a/CMake/FindNGHTTP2.cmake b/CMake/FindNGHTTP2.cmake index deb81bdadb..c60cda7598 100644 --- a/CMake/FindNGHTTP2.cmake +++ b/CMake/FindNGHTTP2.cmake @@ -30,7 +30,7 @@ # NGHTTP2_LIBRARIES The libraries needed to use nghttp2 # NGHTTP2_VERSION Version of nghttp2 -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_NGHTTP2 "libnghttp2") endif() diff --git a/CMake/FindNGHTTP3.cmake b/CMake/FindNGHTTP3.cmake index cf210e1795..ee1708e0c7 100644 --- a/CMake/FindNGHTTP3.cmake +++ b/CMake/FindNGHTTP3.cmake @@ -30,7 +30,7 @@ # NGHTTP3_LIBRARIES The libraries needed to use nghttp3 # NGHTTP3_VERSION Version of nghttp3 -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_NGHTTP3 "libnghttp3") endif() diff --git a/CMake/FindNGTCP2.cmake b/CMake/FindNGTCP2.cmake index 3ebf3b91b4..228713d578 100644 --- a/CMake/FindNGTCP2.cmake +++ b/CMake/FindNGTCP2.cmake @@ -38,7 +38,7 @@ # NGTCP2_LIBRARIES The libraries needed to use ngtcp2 # NGTCP2_VERSION Version of ngtcp2 -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_NGTCP2 "libngtcp2") endif() @@ -72,7 +72,7 @@ if(NGTCP2_FIND_COMPONENTS) if(NGTCP2_CRYPTO_BACKEND) string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library) - if(NOT MSVC OR VCPKG_TOOLCHAIN) + if(CURL_USE_PKGCONFIG) pkg_search_module(PC_${_crypto_library} "lib${_crypto_library}") endif() find_library(${_crypto_library}_LIBRARY diff --git a/CMake/FindNettle.cmake b/CMake/FindNettle.cmake index 02ae13f331..a61c61d9df 100644 --- a/CMake/FindNettle.cmake +++ b/CMake/FindNettle.cmake @@ -30,7 +30,7 @@ # NETTLE_LIBRARIES The nettle library names # NETTLE_VERSION Version of nettle -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(NETTLE "nettle") endif() diff --git a/CMake/FindQUICHE.cmake b/CMake/FindQUICHE.cmake index bcd54e942d..e7ebb2b992 100644 --- a/CMake/FindQUICHE.cmake +++ b/CMake/FindQUICHE.cmake @@ -29,7 +29,7 @@ # QUICHE_INCLUDE_DIRS The quiche include directories # QUICHE_LIBRARIES The libraries needed to use quiche -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_QUICHE "quiche") endif() diff --git a/CMake/FindWolfSSL.cmake b/CMake/FindWolfSSL.cmake index 1e9437ffba..0c9d9de4f2 100644 --- a/CMake/FindWolfSSL.cmake +++ b/CMake/FindWolfSSL.cmake @@ -30,7 +30,7 @@ # WolfSSL_LIBRARIES The wolfssl library names # WolfSSL_VERSION Version of wolfssl -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_WOLFSSL QUIET "wolfssl") endif() diff --git a/CMake/FindZstd.cmake b/CMake/FindZstd.cmake index 6574d0896c..1d5c271c8a 100644 --- a/CMake/FindZstd.cmake +++ b/CMake/FindZstd.cmake @@ -30,7 +30,7 @@ # Zstd_LIBRARIES The libraries needed to use zstd # Zstd_VERSION Version of zstd -if(NOT MSVC OR VCPKG_TOOLCHAIN) +if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(PC_Zstd "libzstd") endif() diff --git a/CMake/curl-config.cmake.in b/CMake/curl-config.cmake.in index 2ce8625ef9..5be5d7103a 100644 --- a/CMake/curl-config.cmake.in +++ b/CMake/curl-config.cmake.in @@ -23,6 +23,14 @@ ########################################################################### @PACKAGE_INIT@ +if(NOT DEFINED CURL_USE_PKGCONFIG) + if(NOT MSVC OR VCPKG_TOOLCHAIN) + set(CURL_USE_PKGCONFIG ON) + else() + set(CURL_USE_PKGCONFIG OFF) + endif() +endif() + include(CMakeFindDependencyMacro) if(@USE_OPENSSL@) find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@) diff --git a/CMakeLists.txt b/CMakeLists.txt index bccd01e9fe..973c78f24b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -201,6 +201,14 @@ else() set(LIB_SELECTED ${LIB_STATIC}) endif() +# Override to force-disable or force-enable the use of pkg-config. +if(NOT MSVC OR VCPKG_TOOLCHAIN) + set(_curl_use_pkgconfig_default ON) +else() + set(_curl_use_pkgconfig_default OFF) +endif() +option(CURL_USE_PKGCONFIG "use pkg-config to detect dependencies" ${_curl_use_pkgconfig_default}) + # Initialize CURL_LIBS set(CURL_LIBS "") set(LIBCURL_PC_REQUIRES_PRIVATE "") @@ -959,7 +967,7 @@ if(USE_LIBIDN2) check_include_file_concat("idn2.h" HAVE_IDN2_H) endif() if(NOT HAVE_LIBIDN2 OR NOT HAVE_IDN2_H) - if(NOT MSVC OR VCPKG_TOOLCHAIN) + if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(LIBIDN2 "libidn2") endif() @@ -1038,7 +1046,7 @@ if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH) find_package(libssh CONFIG QUIET) if(libssh_FOUND) message(STATUS "Found libssh ${libssh_VERSION}") - elseif(NOT MSVC OR VCPKG_TOOLCHAIN) + elseif(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_search_module(LIBSSH "libssh") if(LIBSSH_FOUND) @@ -1058,7 +1066,7 @@ endif() option(CURL_USE_GSASL "Use GSASL implementation" OFF) mark_as_advanced(CURL_USE_GSASL) if(CURL_USE_GSASL) - if(NOT MSVC OR VCPKG_TOOLCHAIN) + if(CURL_USE_PKGCONFIG) find_package(PkgConfig REQUIRED) pkg_search_module(GSASL REQUIRED "libgsasl") else() @@ -1139,7 +1147,7 @@ if(CURL_USE_LIBUV) if(NOT ENABLE_DEBUG) message(FATAL_ERROR "Using libuv without debug support enabled is useless") endif() - if(NOT MSVC OR VCPKG_TOOLCHAIN) + if(CURL_USE_PKGCONFIG) find_package(PkgConfig QUIET) pkg_check_modules(LIBUV "libuv") endif()