From 9866e2e16e73296df2a08fb2293a46e13123b477 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Mon, 27 May 2024 14:33:54 +0200 Subject: [PATCH] cmake: allow `ENABLE_CURLDEBUG=OFF` with `ENABLE_DEBUG=ON` Before this patch, `ENABLE_CURLDEBUG` (memory tracking) was unconditionally enabled when `ENABLE_DEBUGBUILD` was set. This made testing some build configurations complicated. To fix it, this patch makes `ENABLE_CURLDEBUG` to receive the value of `ENABLE_DEBUG` by default, while allowing free override by the user. This allows to use the config: `ENABLE_DEBUGBUILD=ON ENABLE_CURLDEBUG=OFF` to enable debug features, without also enabling memory tracking. This is important because some other build methods allow to set one of these features but not the other. This patch allows to test any combination with CMake. This makes it unnecessary to use the workaround of passing `-DDEBUGBUILD` via `CMAKE_C_FLAGS`. Which has the disadvantage that our CMake logic cannot easily detect it, e.g. for disabling symbol hiding on Windows for `ENABLE_DEBUG`/`DEBUGBUILD` builds. Cherry-picked from #13718 Closes #13792 --- CMakeLists.txt | 7 +++---- appveyor.sh | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1e2a0b1ec..4a1e2ef7ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,14 +113,13 @@ cmake_dependent_option(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DN ON "NOT ENABLE_ARES" OFF) -option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF) -option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF) - include(PickyWarnings) +option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF) +option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" ${ENABLE_DEBUG}) + if(ENABLE_DEBUG) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS DEBUGBUILD) - set(ENABLE_CURLDEBUG ON) endif() if(ENABLE_CURLDEBUG) diff --git a/appveyor.sh b/appveyor.sh index bab572aa7c..cb96e58745 100644 --- a/appveyor.sh +++ b/appveyor.sh @@ -43,7 +43,7 @@ if [ "${BUILD_SYSTEM}" = 'CMake' ]; then [ "${PRJ_CFG}" = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=' [[ "${PRJ_GEN}" = *'Visual Studio'* ]] && options+=' -DCMAKE_VS_GLOBALS=TrackFileAccess=false' if [ "${PRJ_GEN}" = 'Visual Studio 9 2008' ]; then - [ "${DEBUG}" = 'ON' ] && [ "${SHARED}" = 'ON' ] && SKIP_RUN='Crash on startup in -DDEBUGBUILD shared builds' + [ "${DEBUG}" = 'ON' ] && [ "${SHARED}" = 'ON' ] && SKIP_RUN='Crash on startup in ENABLE_DEBUG=ON shared builds' # Fails to run without this due to missing MSVCR90.dll / MSVCR90D.dll options+=' -DCURL_STATIC_CRT=ON' fi