@@ -392,10 +392,6 @@ ifndef OBJDUMP_NAME
392
392
OBJDUMP_NAME = avr-objdump
393
393
endif
394
394
395
- ifndef AR_NAME
396
- AR_NAME = avr-ar
397
- endif
398
-
399
395
ifndef SIZE_NAME
400
396
SIZE_NAME = avr-size
401
397
endif
@@ -1031,16 +1027,32 @@ ifneq ($(CATERINA),)
1031
1027
CPPFLAGS += -DUSB_VID=$(USB_VID ) -DUSB_PID=$(USB_PID )
1032
1028
endif
1033
1029
1030
+ # avr-gcc version that we can do maths on
1031
+ CC_VERNUM = $(shell $(CC ) -dumpversion | sed 's/\.//g')
1032
+
1033
+ # moved from above so we can find version-dependant ar
1034
+ ifndef AR_NAME
1035
+ ifeq ($(shell expr $(CC_VERNUM) '>' 480), 1)
1036
+ AR_NAME = avr-gcc-ar
1037
+ else
1038
+ AR_NAME = avr-ar
1039
+ endif
1040
+ endif
1041
+
1034
1042
ifndef CFLAGS_STD
1035
- CFLAGS_STD =
1043
+ ifeq ($(shell expr $(CC_VERNUM) '>' 480), 1)
1044
+ CFLAGS_STD = -std=gnu11 -flto -fno-fat-lto-objects
1045
+ else
1046
+ CFLAGS_STD =
1047
+ endif
1036
1048
$(call show_config_variable,CFLAGS_STD,[DEFAULT])
1037
1049
else
1038
1050
$(call show_config_variable,CFLAGS_STD,[USER])
1039
1051
endif
1040
1052
1041
1053
ifndef CXXFLAGS_STD
1042
- ifeq ($(shell expr $(ARDUINO_VERSION ) '>' 150 ), 1)
1043
- CXXFLAGS_STD = -std=gnu++11 -fno-threadsafe-statics
1054
+ ifeq ($(shell expr $(CC_VERNUM ) '>' 480 ), 1)
1055
+ CXXFLAGS_STD = -std=gnu++11 -fno-threadsafe-statics -flto
1044
1056
else
1045
1057
CXXFLAGS_STD =
1046
1058
endif
@@ -1050,9 +1062,15 @@ else
1050
1062
endif
1051
1063
1052
1064
CFLAGS += $(CFLAGS_STD )
1053
- CXXFLAGS += -fno-exceptions $(CXXFLAGS_STD )
1065
+ CXXFLAGS += -fpermissive - fno-exceptions $(CXXFLAGS_STD )
1054
1066
ASFLAGS += -x assembler-with-cpp
1067
+ ifeq ($(shell expr $(CC_VERNUM ) '>' 480) , 1)
1068
+ ASFLAGS += -flto
1069
+ endif
1055
1070
LDFLAGS += -$(MCU_FLAG_NAME ) =$(MCU ) -Wl,--gc-sections -O$(OPTIMIZATION_LEVEL )
1071
+ ifeq ($(shell expr $(CC_VERNUM ) '>' 480) , 1)
1072
+ LDFLAGS += -flto -fuse-linker-plugin
1073
+ endif
1056
1074
SIZEFLAGS ?= --mcu=$(MCU ) -C
1057
1075
1058
1076
# for backwards compatibility, grab ARDUINO_PORT if the user has it set
0 commit comments