mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-05-28 20:13:22 +00:00
gcc15 AVR compilation fixes (#25238)
This commit is contained in:
parent
81355045cc
commit
a4ef1ae736
1
Makefile
1
Makefile
@ -59,6 +59,7 @@ ifeq ($(ROOT_DIR),)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
include paths.mk
|
include paths.mk
|
||||||
|
include $(BUILDDEFS_PATH)/support.mk
|
||||||
|
|
||||||
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
|
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
|
||||||
ERROR_FILE := $(BUILD_DIR)/error_occurred
|
ERROR_FILE := $(BUILD_DIR)/error_occurred
|
||||||
|
@ -11,6 +11,7 @@ endif
|
|||||||
.DEFAULT_GOAL := all
|
.DEFAULT_GOAL := all
|
||||||
|
|
||||||
include paths.mk
|
include paths.mk
|
||||||
|
include $(BUILDDEFS_PATH)/support.mk
|
||||||
include $(BUILDDEFS_PATH)/message.mk
|
include $(BUILDDEFS_PATH)/message.mk
|
||||||
|
|
||||||
# Helper to add defines with a 'QMK_' prefix
|
# Helper to add defines with a 'QMK_' prefix
|
||||||
|
@ -7,6 +7,7 @@ endif
|
|||||||
OPT = g
|
OPT = g
|
||||||
|
|
||||||
include paths.mk
|
include paths.mk
|
||||||
|
include $(BUILDDEFS_PATH)/support.mk
|
||||||
include $(BUILDDEFS_PATH)/message.mk
|
include $(BUILDDEFS_PATH)/message.mk
|
||||||
|
|
||||||
TARGET=test/$(TEST_OUTPUT)
|
TARGET=test/$(TEST_OUTPUT)
|
||||||
|
11
builddefs/support.mk
Normal file
11
builddefs/support.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Helper to determine if a compiler option is supported
|
||||||
|
# Args:
|
||||||
|
# $(1) = option to test, if successful will be output
|
||||||
|
# $(2) = option to use if $(1) is not supported
|
||||||
|
# $(3) = additional arguments to pass to the compiler during the test, but aren't contained in the output
|
||||||
|
cc-option = $(shell \
|
||||||
|
if { echo 'int main(){return 0;}' | $(CC) $(1) $(3) -o /dev/null -x c /dev/null >/dev/null 2>&1; }; \
|
||||||
|
then echo "$(1)"; else echo "$(2)"; fi)
|
||||||
|
|
||||||
|
# Helper to pass comma character to make functions (use with `$(,)` to pass in `$(call ...)` arguments)
|
||||||
|
, := ,
|
@ -12,9 +12,10 @@ HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature
|
|||||||
EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT)
|
EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT)
|
||||||
BIN =
|
BIN =
|
||||||
|
|
||||||
ifeq ("$(shell echo "int main(){}" | $(CC) --param=min-pagesize=0 -x c - -o /dev/null 2>&1)", "")
|
COMPILEFLAGS += $(call cc-option,--param=min-pagesize=0)
|
||||||
COMPILEFLAGS += --param=min-pagesize=0
|
|
||||||
endif
|
# Fix ICE's: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116389
|
||||||
|
COMPILEFLAGS += $(call cc-option,-mlra)
|
||||||
|
|
||||||
COMPILEFLAGS += -funsigned-char
|
COMPILEFLAGS += -funsigned-char
|
||||||
COMPILEFLAGS += -funsigned-bitfields
|
COMPILEFLAGS += -funsigned-bitfields
|
||||||
@ -25,10 +26,12 @@ COMPILEFLAGS += -fshort-enums
|
|||||||
COMPILEFLAGS += -mcall-prologues
|
COMPILEFLAGS += -mcall-prologues
|
||||||
COMPILEFLAGS += -fno-builtin-printf
|
COMPILEFLAGS += -fno-builtin-printf
|
||||||
|
|
||||||
# Linker relaxation is only possible if
|
# On older compilers, linker relaxation is only possible if link time optimizations are not enabled.
|
||||||
# link time optimizations are not enabled.
|
|
||||||
ifeq ($(strip $(LTO_ENABLE)), no)
|
ifeq ($(strip $(LTO_ENABLE)), no)
|
||||||
COMPILEFLAGS += -mrelax
|
COMPILEFLAGS += -mrelax
|
||||||
|
else
|
||||||
|
# Newer compilers may support both, so quickly check before adding `-mrelax`.
|
||||||
|
COMPILEFLAGS += $(call cc-option,-mrelax,,-flto=auto)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ASFLAGS += $(AVR_ASFLAGS)
|
ASFLAGS += $(AVR_ASFLAGS)
|
||||||
|
Loading…
Reference in New Issue
Block a user