-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmake: ENABLE_DEBUG=ON
to always set -DDEBUGBUILD
#13592
Conversation
MSVC build with |
aedce29
to
a192f59
Compare
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
|
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
016ffb9
to
2db63ea
Compare
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
7395696
to
7241404
Compare
Seen when setting `-DDEBUGBUILD` for mingw-w64 CMake unity builds in 'Release' configurations. ``` curl/lib/curl_gethostname.c:71:5: error: 'strncpy' specified bound 1025 equals destination size [-Werror=stringop-truncation] 71 | strncpy(name, force_hostname, namelen); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:175: In function 'hostcache_timestamp_remove', inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:265:19, inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:247:1, inlined from 'hostcache_prune' at curl/lib/hostip.c:228:3, inlined from 'Curl_hostcache_prune' at curl/lib/hostip.c:256:21: curl/lib/hostip.c:205:12: error: 'now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ^~~ curl/lib/hostip.c: In function 'Curl_hostcache_prune': curl/lib/hostip.c:241:10: note: 'now' was declared here 241 | time_t now; | ^~~ In function 'hostcache_timestamp_remove', inlined from 'fetch_addr' at curl/lib/hostip.c:310:8: curl/lib/hostip.c:205:23: error: 'user.now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ~~~~~^~~~~ curl/lib/hostip.c: In function 'fetch_addr': curl/lib/hostip.c:304:33: note: 'user' declared here 304 | struct hostcache_prune_data user; | ^~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:40: curl/lib/cf-socket.c: In function 'cf_socket_send': curl/lib/cf-socket.c:1294:10: error: 'c' may be used uninitialized [-Werror=maybe-uninitialized] 1294 | if(c >= ((100-ctx->wblock_percent)*256/100)) { | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ curl/lib/cf-socket.c:1292:19: note: 'c' was declared here 1292 | unsigned char c; | ^ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:364: In function 'tftp_state_timeout', inlined from 'tftp_multi_statemach' at curl/lib/tftp.c:1230:27: curl/lib/tftp.c:1208:5: error: 'current' may be used uninitialized [-Werror=maybe-uninitialized] 1208 | if(current > state->rx_time + state->retry_time) { | ^ curl/lib/tftp.c: In function 'tftp_multi_statemach': curl/lib/tftp.c:1192:10: note: 'current' was declared here 1192 | time_t current; | ^~~~~~~ ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49792835/job/91c8dj5qb36spfe0#L112 Ref: curl#13592 Closes #xxxxx
e81b1cc
to
bef6979
Compare
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
Seen when setting `-DDEBUGBUILD` for mingw-w64 gcc 13.2.0 CMake unity builds in 'Release' configurations. ``` curl/lib/curl_gethostname.c:71:5: error: 'strncpy' specified bound 1025 equals destination size [-Werror=stringop-truncation] 71 | strncpy(name, force_hostname, namelen); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:175: In function 'hostcache_timestamp_remove', inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:265:19, inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:247:1, inlined from 'hostcache_prune' at curl/lib/hostip.c:228:3, inlined from 'Curl_hostcache_prune' at curl/lib/hostip.c:256:21: curl/lib/hostip.c:205:12: error: 'now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ^~~ curl/lib/hostip.c: In function 'Curl_hostcache_prune': curl/lib/hostip.c:241:10: note: 'now' was declared here 241 | time_t now; | ^~~ In function 'hostcache_timestamp_remove', inlined from 'fetch_addr' at curl/lib/hostip.c:310:8: curl/lib/hostip.c:205:23: error: 'user.now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ~~~~~^~~~~ curl/lib/hostip.c: In function 'fetch_addr': curl/lib/hostip.c:304:33: note: 'user' declared here 304 | struct hostcache_prune_data user; | ^~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:40: curl/lib/cf-socket.c: In function 'cf_socket_send': curl/lib/cf-socket.c:1294:10: error: 'c' may be used uninitialized [-Werror=maybe-uninitialized] 1294 | if(c >= ((100-ctx->wblock_percent)*256/100)) { | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ curl/lib/cf-socket.c:1292:19: note: 'c' was declared here 1292 | unsigned char c; | ^ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:364: In function 'tftp_state_timeout', inlined from 'tftp_multi_statemach' at curl/lib/tftp.c:1230:27: curl/lib/tftp.c:1208:5: error: 'current' may be used uninitialized [-Werror=maybe-uninitialized] 1208 | if(current > state->rx_time + state->retry_time) { | ^ curl/lib/tftp.c: In function 'tftp_multi_statemach': curl/lib/tftp.c:1192:10: note: 'current' was declared here 1192 | time_t current; | ^~~~~~~ ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49792835/job/91c8dj5qb36spfe0#L112 Ref: https://github.com/curl/curl/actions/runs/9082968838/job/24960616145#step:12:62 Ref: curl#13592 Closes curl#13643
The combination of `-DDEBUGBUILD`, a shared `curl.exe`, and the VS2008 compiler creates a `curl.exe` segfaulting on startup: ``` + _bld/src/curl.exe --version ./appveyor.sh: line 122: 793 Segmentation fault "${curl}" --version Command exited with code 139 ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49817266/job/651iy6qn1e238pqj#L191 Add job that triggers the issue and add the necessary logic to skip running the affected `curl.exe`. Ref: #13592 Closes #13654
bef6979
to
88f8b48
Compare
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
88f8b48
to
e595bdb
Compare
Seen when setting `ENABLE_DEBUG=ON` and `-DDEBUGBUILD` for mingw-w64 gcc 13.2.0 CMake unity builds in 'Release' configurations. ``` curl/lib/curl_gethostname.c:71:5: error: 'strncpy' specified bound 1025 equals destination size [-Werror=stringop-truncation] 71 | strncpy(name, force_hostname, namelen); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:175: In function 'hostcache_timestamp_remove', inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:265:19, inlined from 'Curl_hash_clean_with_criterium' at curl/lib/hash.c:247:1, inlined from 'hostcache_prune' at curl/lib/hostip.c:228:3, inlined from 'Curl_hostcache_prune' at curl/lib/hostip.c:256:21: curl/lib/hostip.c:205:12: error: 'now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ^~~ curl/lib/hostip.c: In function 'Curl_hostcache_prune': curl/lib/hostip.c:241:10: note: 'now' was declared here 241 | time_t now; | ^~~ In function 'hostcache_timestamp_remove', inlined from 'fetch_addr' at curl/lib/hostip.c:310:8: curl/lib/hostip.c:205:23: error: 'user.now' may be used uninitialized [-Werror=maybe-uninitialized] 205 | time_t age = prune->now - c->timestamp; | ~~~~~^~~~~ curl/lib/hostip.c: In function 'fetch_addr': curl/lib/hostip.c:304:33: note: 'user' declared here 304 | struct hostcache_prune_data user; | ^~~~ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:40: curl/lib/cf-socket.c: In function 'cf_socket_send': curl/lib/cf-socket.c:1294:10: error: 'c' may be used uninitialized [-Werror=maybe-uninitialized] 1294 | if(c >= ((100-ctx->wblock_percent)*256/100)) { | ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ curl/lib/cf-socket.c:1292:19: note: 'c' was declared here 1292 | unsigned char c; | ^ In file included from curl/_bld/lib/CMakeFiles/libcurl_object.dir/Unity/unity_0_c.c:364: In function 'tftp_state_timeout', inlined from 'tftp_multi_statemach' at curl/lib/tftp.c:1230:27: curl/lib/tftp.c:1208:5: error: 'current' may be used uninitialized [-Werror=maybe-uninitialized] 1208 | if(current > state->rx_time + state->retry_time) { | ^ curl/lib/tftp.c: In function 'tftp_multi_statemach': curl/lib/tftp.c:1192:10: note: 'current' was declared here 1192 | time_t current; | ^~~~~~~ ``` Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49792835/job/91c8dj5qb36spfe0#L112 Ref: https://github.com/curl/curl/actions/runs/9082968838/job/24960616145#step:12:62 Ref: #13592 Closes #13643
4432b04
to
8323f8b
Compare
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
ENABLE_DEBUG=ON
builds in default/Release
configsENABLE_DEBUG=ON
to always set -DDEBUGBUILD
Settled with the original concept to always enable |
ENABLE_DEBUG=ON
to always set -DDEBUGBUILD
ENABLE_DEBUG=ON
to always set -DDEBUGBUILD
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
dba2b9f
to
85432e5
Compare
@jay: This patch now makes
I chased that down, which became a tree of fixes, with its main portion in #13694. (There is no new option to enable |
Seems right to me since it's documented as enabling curl debug features. It's confusing that --enable-debug and ENABLE_DEBUG are not exactly the same since ENABLE_DEBUG does not actually enable compiler debugging. But then again that's not the way cmake works. I'm not sure what we can or should do about that. |
Thanks!
Agreed. What we could do, is setting |
When `CMAKE_BUILD_TYPE` is set to `Debug`, enable curl debug features by default. We do this to more closely match how autotools builds work, where `--enable-debug` enables both compiler debug feature and curl ones. You can override this by explicitly setting `ENABLE_DEBUG=OFF` and disable curl debug feature while leaving compiler debug enabled. Ref: curl#13592 (comment) Closes #xxxxx
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
85432e5
to
3512410
Compare
cmake is just different from autotools and the user expectations are different. For example a user may specify a debug configuration because they want compiler debug settings but not curl's DEBUGBUILD. I think it is better to leave it as a separate option, even if that's not what autotools is doing, and not enable it by default for debug configurations. |
`ENABLE_DEBUG=ON` enables curl-level debug features. Building and running the curl test suite requires setting this option. Before this patch, while building the `testdeps` target with debug features on with the default ('Release') CMake config, the build stopped with this linker error: ``` ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test': unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify' A failure has been detected in another branch of the parallel make ``` Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483 It happened because `dedotdotify` compiled as a static function into `libcurlu` due to the undefined `DEBUGBUILD` macro. Then `unit1395` failed to link it. Even though the build requires the `DEBUGBUILD` macro, our CMake logic defined it when building with CMake's 'Debug' configuration only. That configuration is not required to build or run the test suite, nor to use curl-level debug features. This patch fixes this by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`. Decoupling this custom option from the selected CMake Release/Debug configuration. This change may also allow dropping Debug mode in AppVeyor CMake builds, possibly making them build faster and run smoother. Ref: curl#13583 Closes curl#13592
3512410
to
7d25adc
Compare
- fix `DEBUGBUILD` guards that should be `UNITTESTS`, in libcurl code used by unit tests. - fix guards for libcurl functions used in unit tests only. - sync `UNITTEST` attribute between declarations and definitions. - drop `DEBUGBUILD` guard from test `unit2600`. - fix guards for libcurl HSTS code used by both a unit test (`unit1660`) and `test0446`. - update an existing AppVeyor CI job to test the issues fixed. This fixes building tests with `CURLDEBUG` enabled but `DEBUGBUILD` disabled. This can happen when building tests with CMake with `ENABLE_DEBUG=ON` in Release config, or with `ENABLE_CURLDEBUG=ON` and _without_ `ENABLE_DEBUG=ON`. Possibly also with autotools when using `--enable-curldebug` without `--enable-debug`. Test results: - before: https://ci.appveyor.com/project/curlorg/curl/builds/49835609 https://ci.appveyor.com/project/curlorg/curl/builds/49898529/job/k8qpbs8idby70smw https://github.com/curl/curl/actions/runs/9259078835/job/25470318167?pr=13798#step:13:821 - after: https://ci.appveyor.com/project/curlorg/curl/builds/49839255 (the two failures are unrelated, subject to PR #13705) Ref: #13592 (issue discovery) Ref: #13689 (CI testing this PR with `DEBUGBUILD`/`CURLDEBUG` combinations) Closes #13694
Before this patch
ENABLE_DEBUG=ON
always enabled the TrackMemory(aka
ENABLE_CURLDEBUG=ON
) feature, but required theDebug
CMakeconfigration to actually enable curl debug features
(aka
-DDEBUGBUILD
).Curl debug features do not require compiling with C debug options. This
also made enabling debug features unintuitive and complicated to use.
Due to other issues (subject to PR #13694) it also caused an error in
default (and
Release
/MinSizeRel
/RelWithDebInfo
) configs, whenbuilding the
testdeps
target:Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483
Fix it by always defining
DEBUGBUILD
when settingENABLE_DEBUG=ON
.Decoupling this option from the selected CMake configuration.
Note that after this patch
ENABLE_DEBUG=ON
unconditionally enablescurl debug features. These features are insecure and unsuited for
production. Make sure to omit this option when building for production
in default,
Release
(and other not-Debug
) modes.Also delete a workaround no longer necessary in GHA CI jobs.
Ref: 1a62b6e (2015-03-03)
Ref: #13583
Closes #13592
BUILD_TESTING
before first use #13668.ENABLE_DEBUG
to always setDEBUGBUILD
DEBUGBUILD
/CURLDEBUG
/UNITTESTS
guards. AFAIU the first two should work independently of each other, whether we are building/running tests or not, whether we are building with debug info or not. → in separate PR.