mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
d511ec8b0a
The idea of linking dependencies found to `libcurl.pc` turns out not to work in practice in some cases. Specifically: gss, ldap, mbedtls, libmsh3, rustls A `.pc` may not work or be missing for a couple of reasons: - not all build methods generate it: mbedTLS, Rustls - generated file is broken: msh3 Ref: https://github.com/nibanks/msh3/pull/225 - installed package flavour isn't shipping with one: FreeBSD GSS, OmniOS LDAP, macOS LDAP The effect of such issues shall be subtle in theory, because `libcurl.pc` normally lists these dependencies in the `Requires.private` section meant for static linking. But, e.g. `pkg-config --exists` requires these to be present, and builds sometimes use this check regardless of build type. This bug is not present in `pkgconf`; it only checks for them when `--static` is also passed. Fix these by adding affected `.pc` references to `libcurl.pc` only when we detected the dependency via `pkg-config`. There are a few side-effects of this solution: - references are never added for dependencies where curl doesn't implement `pkg-config` detection. These are: - autotools: ldap, mbedtls, msh3 - cmake: ldap (pending #15273) - generated `libcurl.pc` depends on the build-time environment. - generated `libcurl.pc` depends on curl build tool (cmake, autotools). - generated `libcurl.pc` depends on curl build implementation details. Make an exception for GNU GSS, where I blindly guess that `gss.pc` is always available, as no issues were reported. Other, not mentioned, dependencies continue to be added regardless of the detection method. Reported-by: Harmen Stoppels, Thomas, Daniel Engberg, Andy Fiddaman Fixes #15469 Fixes #15507 Fixes #15535 Fixes https://github.com/curl/curl/pull/15163#issuecomment-2473358444 Closes #15573 |
||
---|---|---|
.. | ||
Platforms | ||
cmake_uninstall.cmake.in | ||
CMakeConfigurableFile.in | ||
curl-config.cmake.in | ||
CurlSymbolHiding.cmake | ||
CurlTests.c | ||
FindBearSSL.cmake | ||
FindBrotli.cmake | ||
FindCares.cmake | ||
FindGSS.cmake | ||
FindLibgsasl.cmake | ||
FindLibidn2.cmake | ||
FindLibpsl.cmake | ||
FindLibssh2.cmake | ||
FindLibssh.cmake | ||
FindLibuv.cmake | ||
FindMbedTLS.cmake | ||
FindMSH3.cmake | ||
FindNettle.cmake | ||
FindNGHTTP2.cmake | ||
FindNGHTTP3.cmake | ||
FindNGTCP2.cmake | ||
FindQuiche.cmake | ||
FindRustls.cmake | ||
FindWolfSSH.cmake | ||
FindWolfSSL.cmake | ||
FindZstd.cmake | ||
Macros.cmake | ||
OtherTests.cmake | ||
PickyWarnings.cmake | ||
Utilities.cmake |