diff options
author | Stefan Kerkmann <[email protected]> | 2024-09-01 19:54:53 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-09-01 19:54:53 +0200 |
commit | d210590d4d8d859d1cd0960c0573391a9bf5d9a5 (patch) | |
tree | 1d83b79f397d44bb79a4bd2a27184e6c1f57ec46 /builddefs/common_rules.mk | |
parent | 07535aa2c0272072334a082e0e1bc5d911ec6b85 (diff) | |
download | qmk_firmware-d210590d4d8d859d1cd0960c0573391a9bf5d9a5.tar.gz qmk_firmware-d210590d4d8d859d1cd0960c0573391a9bf5d9a5.zip |
[Maintenance] builddefs: common_rules: overhaul debug information generation (#24352)
builddefs: common_rules: overhaul debug information generation
Debug information is always generated while compiling a binary, but
debugging is not the main use-case for the majority of users. Thus the
new default is to explicitly require them with `DEBUG_ENABLE=yes`. The
same is true for linker map files which are gated by the same flag.
As we target the gcc compiler and debug with the gdb debugger we can
specify the ggdb3 flag in the most verbose to get macro expansion.
Signed-off-by: Stefan Kerkmann <[email protected]>
Diffstat (limited to 'builddefs/common_rules.mk')
-rw-r--r-- | builddefs/common_rules.mk | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk index cfd261737c..cc7d5a76d3 100644 --- a/builddefs/common_rules.mk +++ b/builddefs/common_rules.mk @@ -43,6 +43,18 @@ ifneq ($(USE_CCACHE),no) CC_PREFIX ?= ccache endif +#---------------- Debug Options ---------------- + +DEBUG_ENABLE ?= no +ifeq ($(strip $(DEBUG_ENABLE)),yes) + CFLAGS += -ggdb3 + CXXFLAGS += -ggdb3 + ASFLAGS += -ggdb3 +# Create a map file when debugging + LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref +endif + + #---------------- C Compiler Options ---------------- ifeq ($(strip $(LTO_ENABLE)), yes) @@ -54,14 +66,6 @@ ifeq ($(strip $(LTO_ENABLE)), yes) CDEFS += -DLTO_ENABLE endif -DEBUG_ENABLE ?= yes -ifeq ($(strip $(SKIP_DEBUG_INFO)),yes) - DEBUG_ENABLE=no -endif - -ifeq ($(strip $(DEBUG_ENABLE)),yes) - CFLAGS += -g$(DEBUG) -endif CFLAGS += $(CDEFS) CFLAGS += -O$(OPT) # add color @@ -83,9 +87,6 @@ CFLAGS += -fcommon #---------------- C++ Compiler Options ---------------- -ifeq ($(strip $(DEBUG_ENABLE)),yes) - CXXFLAGS += -g$(DEBUG) -endif CXXFLAGS += $(CXXDEFS) CXXFLAGS += -O$(OPT) # to suppress "warning: only initialized variables can be placed into program memory area" @@ -106,14 +107,10 @@ endif #---------------- Linker Options ---------------- -CREATE_MAP ?= yes -ifeq ($(CREATE_MAP),yes) - LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -endif ifeq ($(VERBOSE_LD_CMD),yes) LDFLAGS += -v endif -#LDFLAGS += -Wl,--relax + LDFLAGS += $(EXTMEMOPTS) LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) LDFLAGS += -lm @@ -126,15 +123,11 @@ ADHLNS_ENABLE ?= no ifeq ($(ADHLNS_ENABLE),yes) # Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time ifeq ($(strip $(LTO_ENABLE)), yes) - LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst + LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst else - CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) + CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) - ifeq ($(strip $(DEBUG_ENABLE)),yes) - ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 - else - ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 - endif + ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 endif endif |