aboutsummaryrefslogtreecommitdiff
path: root/arduino-mk/Arduino.mk
diff options
context:
space:
mode:
authormahoy <mahoy.git@gmail.com>2013-12-20 01:11:13 +0100
committermahoy <mahoy.git@gmail.com>2013-12-20 17:25:18 +0100
commitd3e7eedd5f0dcef8033e410a904f3e260dbd700b (patch)
tree13ea1a69b410534ece1a7cc2e9977113dc970e32 /arduino-mk/Arduino.mk
parente721a249cde075223ad31ece5c876574062ba7cd (diff)
Allow target specific optimization levels/debug flags
Changing the optimization level from -Os to something else breaks the SoftwareSerial library. This patch allow optimization flags to be set on a per target basis.
Diffstat (limited to 'arduino-mk/Arduino.mk')
-rw-r--r--arduino-mk/Arduino.mk13
1 files changed, 11 insertions, 2 deletions
diff --git a/arduino-mk/Arduino.mk b/arduino-mk/Arduino.mk
index 256e4bf..5ee2fdb 100644
--- a/arduino-mk/Arduino.mk
+++ b/arduino-mk/Arduino.mk
@@ -780,6 +780,13 @@ else
$(call show_config_variable,OPTIMIZATION_LEVEL,[USER])
endif
+ifndef DEBUG_FLAGS
+ DEBUG_FLAGS = -O0 -g
+endif
+
+# SoftwareSerial requires -Os (some delays are tuned for this optimization level)
+%SoftwareSerial.o : OPTIMIZATION_FLAGS = -Os
+
ifndef MCU_FLAG_NAME
MCU_FLAG_NAME = mmcu
$(call show_config_variable,MCU_FLAG_NAME,[DEFAULT])
@@ -794,11 +801,13 @@ CPPFLAGS += -$(MCU_FLAG_NAME)=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_V
-fdata-sections
ifdef DEBUG
-CPPFLAGS += -O0 -g
+OPTIMIZATION_FLAGS= $(DEBUG_FLAGS)
else
-CPPFLAGS += -O$(OPTIMIZATION_LEVEL)
+OPTIMIZATION_FLAGS = -O$(OPTIMIZATION_LEVEL)
endif
+CPPFLAGS += $(OPTIMIZATION_FLAGS)
+
# USB IDs for the Caterina devices like leonardo or micro
ifneq ($(CATERINA),)
CPPFLAGS += -DUSB_VID=$(USB_VID) -DUSB_PID=$(USB_PID)