aboutsummaryrefslogtreecommitdiff
path: root/builddefs/common_rules.mk
diff options
context:
space:
mode:
authorStefan Kerkmann <[email protected]>2024-09-01 19:54:53 +0200
committerGitHub <[email protected]>2024-09-01 19:54:53 +0200
commitd210590d4d8d859d1cd0960c0573391a9bf5d9a5 (patch)
tree1d83b79f397d44bb79a4bd2a27184e6c1f57ec46 /builddefs/common_rules.mk
parent07535aa2c0272072334a082e0e1bc5d911ec6b85 (diff)
downloadqmk_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.mk39
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