curl/docs
Viktor Szakats 04d90b5deb
configure: add option to trace pkg-config detection details
To aid debugging cases when dependency detection acts unexpectedly.
Sprung from spending days trying to figure out behavior of ngtcp2 crypto
modules and their dependencies.

You can enable by setting env `CURL_TRACE_PKG_CONFIG` to a non-empty
value. When enabled, details are logged for both successful and
unsuccessful detections. Logging of unsuccessful ones is automatically
enabled when `CURL_CI` env is set, which is the case for all CI jobs.

It works by asking for `--debug` output and grepping for lines that seem
useful for this purpose. Output is different for classic pkg-config and
pkgconf, and may depending on tool version. Also append `--print-errors`
output if any.

Examples (with pkgconf):

Fail, before:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... no
configure: error: --with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.
```

Fail, after:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... no
configure: pkg-config --exists libngtcp2_crypto_boringssl trace:
---- begin
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp3/build/lib/pkgconfig for openssl
trying path: /home/runner/ngtcp2-boringssl/build/lib/pkgconfig for openssl
trying path: /home/runner/nghttp2/build/lib/pkgconfig for openssl
==== error:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
Package 'openssl', required by 'libngtcp2_crypto_boringssl', not found
---- end
configure: error: --with-ngtcp2 was specified but could not find ngtcp2_crypto_boringssl pkg-config file.
```

Success, after:
```
checking for libngtcp2_crypto_boringssl options with pkg-config... found
configure: pkg-config --exists libngtcp2_crypto_boringssl trace:
---- begin
trying path: /home/runner/awslc/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/nghttp2/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/ngtcp2/build/lib/pkgconfig for libngtcp2_crypto_boringssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp3/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/nghttp2/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/ngtcp2/build/lib/pkgconfig for libngtcp2
trying path: /home/runner/awslc/build/lib/pkgconfig for openssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libssl
trying path: /home/runner/awslc/build/lib/pkgconfig for libcrypto
---- end
```

More examples:
https://github.com/curl/curl/pull/20926#issuecomment-4064259935

If there is an externally enablable, built-in feature like this in
classic pkg-config or pkgconf, I could not find it.

Also:
- GHA/http3-linux: set `CURL_TRACE_PKG_CONFIG` to log detection details.
  H3 builds are prone to hard-to-debug dependency issues.

Ref: #20920
Follow-up to 3c64ffaff4 #18415 #18188
Follow-up to 99500660af #18028 #18022

Cherry-picked from #20926

Closes #20931
2026-03-16 11:31:01 +01:00
..
cmdline-opts docs: minor wording tweaks 2026-03-11 08:46:01 +01:00
examples examples: drop warning silencers no longer hit 2026-03-12 01:01:16 +01:00
internals badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
libcurl badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
tests docs: minor wording tweaks 2026-03-11 08:46:01 +01:00
.gitignore docs: add RELEASE-TOOLS.md.dist to .gitignore 2024-07-01 22:49:55 +02:00
ALTSVC.md docs: fold long lines 2025-12-11 11:42:28 +01:00
BINDINGS.md docs: some nitpicks 2026-02-27 23:05:37 +01:00
BUG-BOUNTY.md BUG-BOUNTY.md: minor rephrase to say there is no bug bounty 2026-03-10 17:34:08 +01:00
BUGS.md docs: avoid using the word 'magic' 2026-03-03 15:32:13 +01:00
CIPHERS-TLS12.md docs: update CIPHERS.md 2024-08-12 23:35:56 +02:00
CIPHERS.md docs: avoid starting sentences with However, 2026-03-07 23:49:11 +01:00
CMakeLists.txt tests: move test docs into /docs 2025-05-28 15:00:03 +02:00
CODE_OF_CONDUCT.md tidy-up: Markdown, clang-format nits 2026-01-22 23:44:47 +01:00
CODE_REVIEW.md docs: fix broken link in CODE_REVIEW.md 2025-06-21 10:32:06 +02:00
CONTRIBUTE.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
curl-config.md docs: minor edits to please the new spellchecker regime 2025-02-27 13:15:21 +01:00
CURL-DISABLE.md build: add build-level CURL_DISABLE_TYPECHECK options 2025-11-21 13:48:35 +01:00
CURLDOWN.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
DEPRECATE.md DEPRECATE.md: SMB and NTLM become build-time opt-in 2026-03-07 14:56:08 +01:00
DISTROS.md docs: add LibreELEC to DISTROS.md 2026-01-26 12:12:05 -08:00
EARLY-RELEASE.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
ECH.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
EXPERIMENTAL.md docs/EXPERIMENTAL.md: add a mention of HTTPSRR as experimental 2025-01-16 19:41:42 +01:00
FAQ.md docs/lib: fix typos 2026-03-16 10:43:24 +01:00
FEATURES.md tidy-up: miscellaneous 2026-01-20 12:37:56 +01:00
GOVERNANCE.md docs: avoid starting sentences with However, 2026-03-07 23:49:11 +01:00
HELP-US.md tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
HISTORY.md docs: replace instances of the vague qualifier 'quite' 2026-03-07 23:52:50 +01:00
HSTS.md tidy-up: miscellaneous 2026-01-20 12:37:56 +01:00
HTTP-COOKIES.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
HTTP3.md HTTP3.md: drop outdated mentions of OpenSSL-QUIC 2026-03-12 23:20:47 +01:00
HTTPSRR.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
INFRASTRUCTURE.md BUG-BOUNTY.md: we stop the bug-bounty end of Jan 2026 2026-01-26 08:26:28 +01:00
INSTALL INSTALL: converted to markdown => INSTALL.md 2016-10-21 15:57:29 +02:00
INSTALL-CMAKE.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
INSTALL.md configure: add option to trace pkg-config detection details 2026-03-16 11:31:01 +01:00
INTERNALS.md clang-tidy: replace comma-separated string with list in config 2026-02-19 16:27:08 +01:00
IPFS.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
KNOWN_BUGS.md docs: avoid starting sentences with However, 2026-03-07 23:49:11 +01:00
KNOWN_RISKS.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
MAIL-ETIQUETTE.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
Makefile.am tidy-up: miscellaneous 2026-01-15 13:06:13 +01:00
MANUAL.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
mk-ca-bundle.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
options-in-versions tool_getparam: add --knownhosts 2025-10-06 13:41:22 +02:00
README.md reuse: add copyright + license info to individual docs/*.md files 2024-03-31 12:01:18 +02:00
RELEASE-PROCEDURE.md RELEASE-PROCEDURE.md: update future release dates 2026-01-26 12:28:25 +01:00
ROADMAP.md CI: add whitespace checker 2024-06-27 13:33:30 +02:00
runtests.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
RUSTLS.md tidy-up: URLs 2025-09-23 00:34:46 +02:00
SECURITY-ADVISORY.md stop using the word 'just' 2026-03-03 15:30:22 +01:00
SPONSORS.md BUG-BOUNTY.md: we stop the bug-bounty end of Jan 2026 2026-01-26 08:26:28 +01:00
SSL-PROBLEMS.md tidy-up: Markdown, clang-format nits 2026-01-22 23:44:47 +01:00
SSLCERTS.md tidy-up: miscellaneous 2025-12-12 04:18:48 +01:00
testcurl.md tidy-up: Markdown, clang-format nits 2026-01-22 23:44:47 +01:00
THANKS THANKS: add contributors from 8.19.0 release 2026-03-11 07:46:12 +01:00
THANKS-filter THANKS-filter: update with a new entry 2026-03-09 11:35:19 +01:00
TheArtOfHttpScripting.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00
TODO.md docs: avoid starting sentences with However, 2026-03-07 23:49:11 +01:00
URL-SYNTAX.md docs: avoid starting sentences with However, 2026-03-07 23:49:11 +01:00
VERSIONS.md VERSIONS: add 8.19.0 2026-03-11 07:46:12 +01:00
VULN-DISCLOSURE-POLICY.md BUG-BOUNTY.md: minor rephrase to say there is no bug bounty 2026-03-10 17:34:08 +01:00
wcurl.md badwords: avoid 'simply' 2026-03-10 19:34:06 +01:00

curl logo

Documentation

You find a mix of various documentation in this directory and subdirectories, using several different formats. Some of them are not ideal for reading directly in your browser.

If you would rather see the rendered version of the documentation, check out the curl website's documentation section for general curl stuff or the libcurl section for libcurl related documentation.