summaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2021-11-12 07:31:40 +0000
committerGitHub <noreply@github.com>2021-11-12 18:31:40 +1100
commitf3fa56c32a240012c7b8c13be10d0b787d849ff3 (patch)
tree0845171555b0acaae5298c54c3f0dfd3c287768e /tmk_core
parent479950ca3fa484fd14f200306679674f64af824a (diff)
gcc10 LTO - Only specify adhlns assembler options at link time (#15115)
* gcc10 LTO - Only specify adhlns assembler options at link time * Default adhlns off?
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/rules.mk50
1 files changed, 26 insertions, 24 deletions
diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk
index 70ab0eb166..e657af3f43 100644
--- a/tmk_core/rules.mk
+++ b/tmk_core/rules.mk
@@ -81,7 +81,6 @@ endif
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns...: create assembler listing
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),CHIBIOS)
$(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.)
@@ -117,10 +116,6 @@ endif
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
-GCC_VERSION := $(shell gcc --version 2>/dev/null)
-ifeq ($(findstring clang, ${GCC_VERSION}),)
-CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
-endif
CFLAGS += $(CSTANDARD)
# This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION
@@ -133,7 +128,6 @@ CFLAGS += -fcommon
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns...: create assembler listing
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CXXFLAGS += -g$(DEBUG)
endif
@@ -152,28 +146,10 @@ endif
#CXXFLAGS += -Wstrict-prototypes
#CXXFLAGS += -Wunreachable-code
#CXXFLAGS += -Wsign-compare
-ifeq ($(findstring clang, ${GCC_VERSION}),)
-CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
-endif
#CXXFLAGS += $(CSTANDARD)
#---------------- Assembler Options ----------------
-# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns: create listing
-# -gstabs: have the assembler create line number information; note that
-# for use in COFF files, additional information about filenames
-# and function names needs to be present in the assembler source
-# files -- see avr-libc docs [FIXME: not yet described there]
-# -listing-cont-lines: Sets the maximum number of continuation lines of hex
-# dump that will be displayed for a given single line of source input.
ASFLAGS += $(ADEFS)
-ifeq ($(findstring clang, ${GCC_VERSION}),)
-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
-endif
ifeq ($(VERBOSE_AS_CMD),yes)
ASFLAGS += -v
endif
@@ -230,6 +206,32 @@ LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
# You can give EXTRALDFLAGS at 'make' command line.
LDFLAGS += $(EXTRALDFLAGS)
+#---------------- Assembler Listings ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex
+# dump that will be displayed for a given single line of source input.
+
+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
+ else
+ 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
+ endif
+endif
+
# Define programs and commands.
SHELL = sh
REMOVE = rm -f