gcc15 AVR compilation fixes (#25238)
This commit is contained in:
		
							parent
							
								
									81355045cc
								
							
						
					
					
						commit
						a4ef1ae736
					
				
					 5 changed files with 22 additions and 5 deletions
				
			
		
							
								
								
									
										1
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -59,6 +59,7 @@ ifeq ($(ROOT_DIR),)
 | 
			
		|||
endif
 | 
			
		||||
 | 
			
		||||
include paths.mk
 | 
			
		||||
include $(BUILDDEFS_PATH)/support.mk
 | 
			
		||||
 | 
			
		||||
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
 | 
			
		||||
ERROR_FILE := $(BUILD_DIR)/error_occurred
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ endif
 | 
			
		|||
.DEFAULT_GOAL := all
 | 
			
		||||
 | 
			
		||||
include paths.mk
 | 
			
		||||
include $(BUILDDEFS_PATH)/support.mk
 | 
			
		||||
include $(BUILDDEFS_PATH)/message.mk
 | 
			
		||||
 | 
			
		||||
# Helper to add defines with a 'QMK_' prefix
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ endif
 | 
			
		|||
OPT = g
 | 
			
		||||
 | 
			
		||||
include paths.mk
 | 
			
		||||
include $(BUILDDEFS_PATH)/support.mk
 | 
			
		||||
include $(BUILDDEFS_PATH)/message.mk
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
BIN =
 | 
			
		||||
 | 
			
		||||
ifeq ("$(shell echo "int main(){}" | $(CC) --param=min-pagesize=0 -x c - -o /dev/null 2>&1)", "")
 | 
			
		||||
COMPILEFLAGS += --param=min-pagesize=0
 | 
			
		||||
endif
 | 
			
		||||
COMPILEFLAGS += $(call cc-option,--param=min-pagesize=0)
 | 
			
		||||
 | 
			
		||||
# Fix ICE's: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116389
 | 
			
		||||
COMPILEFLAGS += $(call cc-option,-mlra)
 | 
			
		||||
 | 
			
		||||
COMPILEFLAGS += -funsigned-char
 | 
			
		||||
COMPILEFLAGS += -funsigned-bitfields
 | 
			
		||||
| 
						 | 
				
			
			@ -25,10 +26,12 @@ COMPILEFLAGS += -fshort-enums
 | 
			
		|||
COMPILEFLAGS += -mcall-prologues
 | 
			
		||||
COMPILEFLAGS += -fno-builtin-printf
 | 
			
		||||
 | 
			
		||||
# Linker relaxation is only possible if
 | 
			
		||||
# link time optimizations are not enabled.
 | 
			
		||||
# On older compilers, linker relaxation is only possible if link time optimizations are not enabled.
 | 
			
		||||
ifeq ($(strip $(LTO_ENABLE)), no)
 | 
			
		||||
	COMPILEFLAGS += -mrelax
 | 
			
		||||
else
 | 
			
		||||
	# Newer compilers may support both, so quickly check before adding `-mrelax`.
 | 
			
		||||
	COMPILEFLAGS += $(call cc-option,-mrelax,,-flto=auto)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ASFLAGS += $(AVR_ASFLAGS)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue