From 351f67a227b4b1c76eafe4d407ce337b5140afeb Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 27 Jul 2025 13:02:02 +1000 Subject: [PATCH] CMake: Use -g1 for Release builds --- CMakeLists.txt | 8 ++------ CMakeModules/DuckStationUtils.cmake | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 36be564f7..46e28215c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,12 +65,8 @@ if(MSVC) set(CMAKE_EXE_LINKER_FLAGS_DEVEL "${CMAKE_EXE_LINKER_FLAGS_DEVEL} /OPT:REF /OPT:ICF") else() # Force debug symbols for Linux builds. - if (NOT CMAKE_C_FLAGS_RELEASE MATCHES "\\s*-g\\s*") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -g") - endif() - if (NOT CMAKE_CXX_FLAGS_RELEASE MATCHES "\\s*-g\\s*") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g") - endif() + add_debug_symbol_flag(CMAKE_C_FLAGS_RELEASE) + add_debug_symbol_flag(CMAKE_CXX_FLAGS_RELEASE) endif() # Warning disables. diff --git a/CMakeModules/DuckStationUtils.cmake b/CMakeModules/DuckStationUtils.cmake index d83992b28..565b710bf 100644 --- a/CMakeModules/DuckStationUtils.cmake +++ b/CMakeModules/DuckStationUtils.cmake @@ -262,6 +262,15 @@ function(install_imported_dep_library name) install(FILES "${LOCATION}" RENAME "${SONAME}" DESTINATION "${CMAKE_INSTALL_LIBDIR}") endfunction() +function(add_debug_symbol_flag var) + # CMake's regex engine is missing so many features... + set(value "${${var}}") + if (NOT " ${value} " MATCHES " -g[1-3]? ") + message(STATUS "Adding -g1 to ${var}.") + set(${var} "${value} -g1" PARENT_SCOPE) + endif() +endfunction() + function(check_cpp20_feature MACRO MINIMUM_VALUE) set(CACHE_VAR "CHECK_CPP20_FEATURE_${MACRO}") if(NOT DEFINED ${CACHE_VAR})