@@ -55,26 +55,26 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
5555 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3" )
5656 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3" )
5757elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
58- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g" )
59- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -g" )
58+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
59+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -gline-tables-only" )
60+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -gline-tables-only" )
61+ elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
62+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g1" )
63+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -g1" )
64+ endif ()
6065elseif (CMAKE_BUILD_TYPE STREQUAL "Debug" )
61- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g" )
62- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g" )
66+ # Use DWARF 4 for broad GDB compatibility and -g2 (the default for -g) for
67+ # full variable/type info without macro tables (-g3), keeping binary size in check.
68+ # Suppress -gpubnames to avoid the huge .debug_gnu_pub{names,types} sections
69+ # that inflate the binary and slow down GDB loading.
70+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g2 -gdwarf-4 -gno-pubnames" )
71+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g2 -gdwarf-4 -gno-pubnames" )
6372endif ()
6473
65- # Reduce debug info size and speed up links in Debug/RelWithDebInfo
74+ # Reduce debug info size and speed up links by using split DWARF or similar features when available.
6675set (PIPE ON )
6776option (DUETSCREEN_SPLIT_DWARF "Split DWARF debug info for faster links" OFF )
68- if (CMAKE_BUILD_TYPE MATCHES "^Debug$|^RelWithDebInfo$" )
69- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
70- # Keep only line tables for fast stepping and use split DWARF if enabled
71- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gline-tables-only" )
72- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gline-tables-only" )
73- elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
74- # Minimal debug info level that still allows backtraces
75- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g1" )
76- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1" )
77- endif ()
77+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
7878 if (DUETSCREEN_SPLIT_DWARF AND CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU" )
7979 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gsplit-dwarf" )
8080 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gsplit-dwarf" )
0 commit comments