build: merge TrackMemory (CURLDEBUG) into debug-enabled option

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

After recent changes (thread-safety,
193cb00ce9, 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 59dc9f7e69 (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
This commit is contained in:
Viktor Szakats 2026-01-15 14:04:05 +01:00
parent 0002184015
commit 2d5a063121
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
35 changed files with 58 additions and 146 deletions

View file

@ -57,9 +57,6 @@ endif
if DEBUGBUILD
AM_CPPFLAGS += -DDEBUGBUILD
endif
if CURLDEBUG
AM_CPPFLAGS += -DCURLDEBUG
endif
if USE_CPPFLAG_CURL_STATICLIB
curlx_c_lib =

View file

@ -122,7 +122,7 @@ int cgetopt(int argc, const char * const argv[], const char *optstring)
}
}
#ifdef CURLDEBUG
#ifdef CURL_MEMDEBUG
static void memory_tracking_init(void)
{
const char *env;

View file

@ -656,8 +656,8 @@ sub checksystemfeatures {
elsif($_ =~ /^Features: (.*)/i) {
$feat = $1;
# built with memory tracking support (--enable-curldebug); may be disabled later
$feature{"TrackMemory"} = $feat =~ /TrackMemory/i;
# built with memory tracking support (--enable-debug); may be disabled later
$feature{"TrackMemory"} = $feat =~ /Debug/i;
# curl was built with --enable-debug
$feature{"Debug"} = $feat =~ /Debug/i;
# ssl enabled
@ -846,7 +846,7 @@ sub checksystemfeatures {
if($torture && !$feature{"TrackMemory"}) {
die "cannot run torture tests since curl was built without ".
"TrackMemory feature (--enable-curldebug)";
"TrackMemory feature (--enable-debug)";
}
my $hostname=join(' ', runclientoutput("hostname"));

View file

@ -54,9 +54,6 @@ AM_CPPFLAGS += -DCURL_STATICLIB -DUNITTESTS
if DEBUGBUILD
AM_CPPFLAGS += -DDEBUGBUILD
endif
if CURLDEBUG
AM_CPPFLAGS += -DCURLDEBUG
endif
if BUILD_UNITTESTS
$(BUNDLE).c: $(top_srcdir)/scripts/mk-unity.pl Makefile.inc $(FIRST_C) $(TESTS_C)

View file

@ -53,9 +53,6 @@ AM_CPPFLAGS += -DCURL_STATICLIB -DUNITTESTS
if DEBUGBUILD
AM_CPPFLAGS += -DDEBUGBUILD
endif
if CURLDEBUG
AM_CPPFLAGS += -DCURLDEBUG
endif
# unit tests are small pretend-libcurl-programs, pass BUILDING_LIBCURL to reflect that
AM_CPPFLAGS += -DBUILDING_LIBCURL