cmake: add CURL_USE_PKGCONFIG option
Add option to control whether to use `pkg-config` to detect
dependencies. Curl's CMake uses `pkg-config` by default for all targets
except for MSVC without vcpkg.
With the CMake option `-DCURL_USE_PKGCONFIG=ON` you can override it to
use `pkg-config` always.
If `pkg-config` is causing issues, e.g. in cross-builds or other cases,
`-DCURL_USE_PKGCONFIG=OFF` disables all use of `pkg-config`.
Also add it to `curl-config.cmake`. Not yet used, but will be once curl
starts referencing any curl-specific `Find*` module from this public
script.
Follow-up to 9dfdc6ff42 #14483
Closes #14504
This commit is contained in:
parent
fdc3e88bf0
commit
b910122fe3
@ -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}")
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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@)
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user