]> git.ipfire.org Git - thirdparty/curl.git/commit
build: merge TrackMemory (`CURLDEBUG`) into debug-enabled option
authorViktor Szakats <commit@vsz.me>
Thu, 15 Jan 2026 13:04:05 +0000 (14:04 +0100)
committerViktor Szakats <commit@vsz.me>
Mon, 19 Jan 2026 17:43:17 +0000 (18:43 +0100)
commit2d5a063121202acaa23bb77975b2739bec4551ce
treebc2452a51e8d3519167202a04124742b63ff0340
parent0002184015c559d7dacb6cbbcd08a0b0b34eb985
build: merge TrackMemory (`CURLDEBUG`) into debug-enabled option

Drop separate `TrackMemory` (aka `CURLDEBUG`) debug feature.

After recent changes (thread-safety,
193cb00ce9b47e75d42157c650cc3de3fd96d35d, and updates leading up to
it), `TrackMemory` is unlikely to cause build or runtime issues.

To simplify builds and debug options, enable `TrackMemory`
unconditionally for debug-enabled (aka `DEBUGBUILD`) builds. Before
this patch, this was already the default, with an option to disable
it, or enable it in non-debug-enabled builds.

Note, in practice these two debug options already went hand in hand. It
was not possible to toggle them separately for a long time due to bugs,
before 59dc9f7e69c399102e9ebe3670360ef52706ff23 (2024-05-28) fixed it.

This patch also removes/deprecates separate knobs and feature flags for
`TrackMemory`:
- autotools: `--enable-curldebug`/`--disable-curldebug`
- cmake: `-DENABLE_CURLDEBUG=ON`/`OFF`
- C macro: `CURLDEBUG`
- libcurl: `CURL_VERSION_CURLDEBUG` symbol deprecated in favor
  of `CURL_VERSION_DEBUG`. They always return the same value after this
  patch.

Also:
- drop `TrackMemory` from `curl -V` output.
- rename internal `CURLDEBUG` macro to `CURL_MEMDEBUG` internally.
  To avoid confusion with `DEBUGBUILD`, but to keep guarding
  `TrackMemory`-related internals for readability.
- runtests: bind `TrackMemory` to debug feature. Keep it a separate
  test feature requirement, for clarity.
- CI: drop test builds for combinations of the two options.
- GHA/linux: no longer disable TrackMemory in the TSAN job.

Ref: https://github.com/curl/curl/pull/20328#issuecomment-3754528407

Closes #20331
35 files changed:
.github/workflows/linux.yml
.github/workflows/windows.yml
CMake/CurlSymbolHiding.cmake
CMakeLists.txt
appveyor.sh
appveyor.yml
configure.ac
docs/INSTALL-CMAKE.md
docs/cmdline-opts/version.md
docs/libcurl/curl_version_info.md
docs/libcurl/symbols-in-versions
docs/tests/TEST-SUITE.md
include/curl/curl.h
lib/Makefile.am
lib/curl_addrinfo.c
lib/curl_addrinfo.h
lib/curl_setup.h
lib/curlx/fopen.c
lib/curlx/fopen.h
lib/fake_addrinfo.h
lib/libcurl.rc
lib/memdebug.c
lib/version.c
m4/curl-confopts.m4
projects/OS400/curl.inc.in
src/Makefile.am
src/curl.rc
src/curlinfo.c
src/tool_libinfo.c
src/tool_main.c
tests/libtest/Makefile.am
tests/libtest/first.c
tests/runtests.pl
tests/tunit/Makefile.am
tests/unit/Makefile.am