diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -23,18 +23,39 @@ # We redefine here the flags to suite our needs, by overriding the built-in # RelWithDebInfo configuration (release with debug info). -# RelWithDebInfo CFLAGS are set to -g -O2 -set(RELWITHDEBINFO_G_C_FLAG "-g") -set(RELWITHDEBINFO_O_C_FLAG "-O2") +# CFLAGS are set to -g -O2 for all the configurations +set(DEFAULT_G_C_FLAG "-g") +set(DEFAULT_O_C_FLAG "-O2") # RelWithDebInfo CXXFLAGS flags are set to -g -O2 set(RELWITHDEBINFO_G_CXX_FLAG "-g") set(RELWITHDEBINFO_O_CXX_FLAG "-O2") -set(CMAKE_C_FLAGS_RELWITHDEBINFO - "${RELWITHDEBINFO_G_C_FLAG} ${RELWITHDEBINFO_O_C_FLAG}") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "${DEFAULT_G_C_FLAG} ${DEFAULT_O_C_FLAG}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${RELWITHDEBINFO_G_CXX_FLAG} ${RELWITHDEBINFO_O_CXX_FLAG}") +# Overrides the flags for the Debug cbuild type +include(CheckCXXCompilerFlag) + +# Prefer -g3, defaults to -g if unavailable +set(DEBUG_G_CXX_FLAG "-g3") +CHECK_CXX_COMPILER_FLAG(${DEBUG_G_CXX_FLAG} FLAG_IS_SUPPORTED) +if(NOT FLAG_IS_SUPPORTED) + set(DEBUG_G_CXX_FLAG "-g") +endif() + +# Prefer -Og, defaults to -O0 if unavailable +set(DEBUG_O_CXX_FLAG "-Og") +CHECK_CXX_COMPILER_FLAG(${DEBUG_O_CXX_FLAG} FLAG_IS_SUPPORTED) +if(NOT FLAG_IS_SUPPORTED) + set(DEBUG_O_CXX_FLAG "-O0") +endif() + +set(CMAKE_C_FLAGS_DEBUG "${DEFAULT_G_C_FLAG} ${DEFAULT_O_C_FLAG}") +set(CMAKE_CXX_FLAGS_DEBUG "${DEBUG_G_CXX_FLAG} ${DEBUG_O_CXX_FLAG}") +# Define the debugging symbols DEBUG and DEBUG_LOCKORDER +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DDEBUG_LOCKORDER") + # Ensure that WINDRES_PREPROC is enabled when using windres. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") list(APPEND CMAKE_RC_FLAGS "-DWINDRES_PREPROC")