Parcourir la source

Merge pull request #339 from KevinOConnor/CompilerFlags

Add additional optimization flags to Makefile
daid il y a 12 ans
Parent
révision
96e9db8919
1 fichiers modifiés avec 27 ajouts et 17 suppressions
  1. 27
    17
      Marlin/Makefile

+ 27
- 17
Marlin/Makefile Voir le fichier

227
 
227
 
228
 DEFINES ?=
228
 DEFINES ?=
229
 
229
 
230
+# Program settings
231
+CC = $(AVR_TOOLS_PATH)avr-gcc
232
+CXX = $(AVR_TOOLS_PATH)avr-g++
233
+OBJCOPY = $(AVR_TOOLS_PATH)avr-objcopy
234
+OBJDUMP = $(AVR_TOOLS_PATH)avr-objdump
235
+AR  = $(AVR_TOOLS_PATH)avr-ar
236
+SIZE = $(AVR_TOOLS_PATH)avr-size
237
+NM = $(AVR_TOOLS_PATH)avr-nm
238
+AVRDUDE = avrdude
239
+REMOVE = rm -f
240
+MV = mv -f
241
+
242
+# Tool for testing compiler flags
243
+cc-option=$(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`" \
244
+    ; then echo "$(2)"; else echo "$(3)"; fi ;)
245
+
230
 # Place -D or -U options here
246
 # Place -D or -U options here
231
 CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)}
247
 CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)}
232
 CXXDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)}
248
 CXXDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)}
251
 endif
267
 endif
252
 #CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
268
 #CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
253
 
269
 
254
-CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CEXTRA) $(CTUNING)
255
-CXXFLAGS =         $(CDEFS) $(CINCS) -O$(OPT) -Wall    $(CEXTRA) $(CTUNING)
270
+CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CEXTRA) $(CTUNING) \
271
+    $(call cc-option,$(CC),-flto -fwhole-program,)
272
+CXXFLAGS :=         $(CDEFS) $(CINCS) -O$(OPT) -Wall    $(CEXTRA) $(CTUNING) \
273
+    $(call cc-option,$(CC),-flto -fwhole-program,)
256
 #ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs 
274
 #ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs 
257
-LDFLAGS = -lm
275
+LDFLAGS = -lm -Wl,--relax
258
 
276
 
259
 
277
 
260
 # Programming support using avrdude. Settings and variables.
278
 # Programming support using avrdude. Settings and variables.
264
 	-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
282
 	-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
265
 	-b $(UPLOAD_RATE)
283
 	-b $(UPLOAD_RATE)
266
 
284
 
267
-# Program settings
268
-CC = $(AVR_TOOLS_PATH)avr-gcc
269
-CXX = $(AVR_TOOLS_PATH)avr-g++
270
-OBJCOPY = $(AVR_TOOLS_PATH)avr-objcopy
271
-OBJDUMP = $(AVR_TOOLS_PATH)avr-objdump
272
-AR  = $(AVR_TOOLS_PATH)avr-ar
273
-SIZE = $(AVR_TOOLS_PATH)avr-size
274
-NM = $(AVR_TOOLS_PATH)avr-nm
275
-AVRDUDE = avrdude
276
-REMOVE = rm -f
277
-MV = mv -f
278
-
279
 # Define all object files.
285
 # Define all object files.
280
 OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}
286
 OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}
281
 OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}}
287
 OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}}
372
 	$(NM) -n $< > $@
378
 	$(NM) -n $< > $@
373
 
379
 
374
 	# Link: create ELF output file from library.
380
 	# Link: create ELF output file from library.
375
-$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h
381
+$(BUILD_DIR)/$(TARGET).elf: $(BUILD_DIR)/$(TARGET).o
382
+	$(Pecho) "  CXX   $@"
383
+	$P $(CC) $(ALL_CXXFLAGS) -Wl,--gc-sections -o $@ -L. $^ $(LDFLAGS)
384
+
385
+$(BUILD_DIR)/$(TARGET).o: $(OBJ) Configuration.h
376
 	$(Pecho) "  CXX   $@"
386
 	$(Pecho) "  CXX   $@"
377
-	$P $(CC) $(ALL_CXXFLAGS) -Wl,--gc-sections -o $@ -L. $(OBJ) $(LDFLAGS)
387
+	$P $(CC) $(ALL_CXXFLAGS) -nostdlib -Wl,-r -o $@ $(OBJ)
378
 
388
 
379
 $(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
389
 $(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE)
380
 	$(Pecho) "  CC    $<"
390
 	$(Pecho) "  CC    $<"

Chargement…
Annuler
Enregistrer