aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Arduino.mk101
-rw-r--r--README.md5
-rw-r--r--arduino-mk-vars.md58
3 files changed, 150 insertions, 14 deletions
diff --git a/Arduino.mk b/Arduino.mk
index 91a637d..14543f5 100644
--- a/Arduino.mk
+++ b/Arduino.mk
@@ -312,6 +312,30 @@ else
endif
########################################################################
+# 1.5.x architecture - avr or sam for arduino vendor
+ifndef ARCHITECTURE
+ ifeq ($(shell expr $(ARDUINO_VERSION) '>' 150), 1)
+ # default to avr for 1.5
+ ARCHITECTURE = avr
+ else
+ # unset for 1.0
+ ARCHITECTURE =
+ endif
+ $(call show_config_variable,ARCHITECTURE,[DEFAULT])
+else
+ $(call show_config_variable,ARCHITECTURE,[USER])
+endif
+
+########################################################################
+# 1.5.x vendor - defaults to arduino
+ifndef VENDOR
+ VENDOR = arduino
+ $(call show_config_variable,VENDOR,[DEFAULT])
+else
+ $(call show_config_variable,VENDOR,[USER])
+endif
+
+########################################################################
# Arduino Sketchbook folder
ifndef ARDUINO_SKETCHBOOK
@@ -437,7 +461,7 @@ endif
ARDUINO_LIB_PATH = $(ARDUINO_DIR)/libraries
$(call show_config_variable,ARDUINO_LIB_PATH,[COMPUTED],(from ARDUINO_DIR))
ifndef ARDUINO_CORE_PATH
- ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/arduino/cores/arduino
+ ARDUINO_CORE_PATH = $(ARDUINO_DIR)/hardware/$(VENDOR)/$(ARCHITECTURE)/cores/arduino
$(call show_config_variable,ARDUINO_CORE_PATH,[DEFAULT])
else
$(call show_config_variable,ARDUINO_CORE_PATH,[USER])
@@ -473,14 +497,14 @@ ifdef ALTERNATE_CORE_PATH
else
ifndef ARDUINO_VAR_PATH
- ARDUINO_VAR_PATH = $(ARDUINO_DIR)/hardware/arduino/variants
+ ARDUINO_VAR_PATH = $(ARDUINO_DIR)/hardware/$(VENDOR)/$(ARCHITECTURE)/variants
$(call show_config_variable,ARDUINO_VAR_PATH,[COMPUTED],(from ARDUINO_DIR))
else
$(call show_config_variable,ARDUINO_VAR_PATH,[USER])
endif
ifndef BOARDS_TXT
- BOARDS_TXT = $(ARDUINO_DIR)/hardware/arduino/boards.txt
+ BOARDS_TXT = $(ARDUINO_DIR)/hardware/$(VENDOR)/$(ARCHITECTURE)/boards.txt
$(call show_config_variable,BOARDS_TXT,[COMPUTED],(from ARDUINO_DIR))
else
$(call show_config_variable,BOARDS_TXT,[USER])
@@ -508,6 +532,11 @@ endif
########################################################################
# boards.txt parsing
+ifdef BOARD_SUB
+ BOARD_SUB := $(strip $(BOARD_SUB))
+ $(call show_config_variable,BOARD_SUB,[USER])
+endif
+
ifndef BOARD_TAG
BOARD_TAG = uno
$(call show_config_variable,BOARD_TAG,[DEFAULT])
@@ -533,15 +562,31 @@ ifeq ($(strip $(NO_CORE)),)
endif
# see if we are a caterina device like leonardo or micro
- CATERINA = $(findstring caterina,$(call PARSE_BOARD,$(BOARD_TAG),bootloader.path))
+ CATERINA := $(findstring caterina,$(call PARSE_BOARD,$(BOARD_TAG),bootloader.path))
+ ifndef CATERINA
+ # bootloader.path is deprecated in 1.5, its now part of bootloader.file
+ CATERINA := $(findstring caterina,$(call PARSE_BOARD,$(BOARD_TAG),bootloader.file))
+ endif
+ ifndef CATERINA
+ # might be a submenu
+ CATERINA := $(findstring caterina,$(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).bootloader.file))
+ endif
# processor stuff
ifndef MCU
- MCU = $(call PARSE_BOARD,$(BOARD_TAG),build.mcu)
+ MCU := $(call PARSE_BOARD,$(BOARD_TAG),build.mcu)
+ ifndef MCU
+ # might be a submenu
+ MCU := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).build.mcu)
+ endif
endif
ifndef F_CPU
- F_CPU = $(call PARSE_BOARD,$(BOARD_TAG),build.f_cpu)
+ F_CPU := $(call PARSE_BOARD,$(BOARD_TAG),build.f_cpu)
+ ifndef F_CPU
+ # might be a submenu
+ F_CPU := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).build.f_cpu)
+ endif
endif
ifneq ($(CATERINA),)
@@ -557,11 +602,19 @@ ifeq ($(strip $(NO_CORE)),)
# normal programming info
ifndef AVRDUDE_ARD_PROGRAMMER
- AVRDUDE_ARD_PROGRAMMER = $(call PARSE_BOARD,$(BOARD_TAG),upload.protocol)
+ AVRDUDE_ARD_PROGRAMMER := $(call PARSE_BOARD,$(BOARD_TAG),upload.protocol)
+ ifndef AVRDUDE_ARD_PROGRAMMER
+ # might be a submenu
+ AVRDUDE_ARD_PROGRAMMER := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).upload.protocol)
+ endif
endif
ifndef AVRDUDE_ARD_BAUDRATE
- AVRDUDE_ARD_BAUDRATE = $(call PARSE_BOARD,$(BOARD_TAG),upload.speed)
+ AVRDUDE_ARD_BAUDRATE := $(call PARSE_BOARD,$(BOARD_TAG),upload.speed)
+ ifndef AVRDUDE_ARD_BAUDRATE
+ # might be a submenu
+ AVRDUDE_ARD_BAUDRATE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).upload.speed)
+ endif
endif
# fuses if you're using e.g. ISP
@@ -570,15 +623,27 @@ ifeq ($(strip $(NO_CORE)),)
endif
ifndef ISP_HIGH_FUSE
- ISP_HIGH_FUSE = $(call PARSE_BOARD,$(BOARD_TAG),bootloader.high_fuses)
+ ISP_HIGH_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),bootloader.high_fuses)
+ ifndef ISP_HIGH_FUSE
+ # might be a submenu
+ ISP_HIGH_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).bootloader.high_fuses)
+ endif
endif
ifndef ISP_LOW_FUSE
- ISP_LOW_FUSE = $(call PARSE_BOARD,$(BOARD_TAG),bootloader.low_fuses)
+ ISP_LOW_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),bootloader.low_fuses)
+ ifndef ISP_LOW_FUSE
+ # might be a submenu
+ ISP_LOW_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).bootloader.low_fuses)
+ endif
endif
ifndef ISP_EXT_FUSE
- ISP_EXT_FUSE = $(call PARSE_BOARD,$(BOARD_TAG),bootloader.extended_fuses)
+ ISP_EXT_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),bootloader.extended_fuses)
+ ifndef ISP_EXT_FUSE
+ # might be a submenu
+ ISP_EXT_FUSE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).bootloader.extended_fuses)
+ endif
endif
ifndef BOOTLOADER_PATH
@@ -586,7 +651,11 @@ ifeq ($(strip $(NO_CORE)),)
endif
ifndef BOOTLOADER_FILE
- BOOTLOADER_FILE = $(call PARSE_BOARD,$(BOARD_TAG),bootloader.file)
+ BOOTLOADER_FILE := $(call PARSE_BOARD,$(BOARD_TAG),bootloader.file)
+ ifndef BOOTLOADER_FILE
+ # might be a submenu
+ BOOTLOADER_FILE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).bootloader.file)
+ endif
endif
ifndef ISP_LOCK_FUSE_POST
@@ -594,7 +663,11 @@ ifeq ($(strip $(NO_CORE)),)
endif
ifndef HEX_MAXIMUM_SIZE
- HEX_MAXIMUM_SIZE = $(call PARSE_BOARD,$(BOARD_TAG),upload.maximum_size)
+ HEX_MAXIMUM_SIZE := $(call PARSE_BOARD,$(BOARD_TAG),upload.maximum_size)
+ ifndef HEX_MAXIMUM_SIZE
+ # might be a submenu
+ HEX_MAXIMUM_SIZE := $(call PARSE_BOARD,$(BOARD_TAG),menu.cpu.$(BOARD_SUB).upload.maximum_size)
+ endif
endif
endif
@@ -924,7 +997,7 @@ endif
# either calculate parent dir from arduino dir, or user-defined path
ifndef BOOTLOADER_PARENT
- BOOTLOADER_PARENT = $(ARDUINO_DIR)/hardware/arduino/bootloaders
+ BOOTLOADER_PARENT = $(ARDUINO_DIR)/hardware/$(VENDOR)/$(ARCHITECTURE)/bootloaders
$(call show_config_variable,BOOTLOADER_PARENT,[COMPUTED],(from ARDUINO_DIR))
else
$(call show_config_variable,BOOTLOADER_PARENT,[USER])
diff --git a/README.md b/README.md
index 821db2e..cd0626f 100644
--- a/README.md
+++ b/README.md
@@ -95,6 +95,11 @@ On Windows (using cygwin), you might want to set:
MONITOR_PORT = com3
BOARD_TAG = mega2560
+On Arduino 1.5.x installs, you should set the architecture to either `avr` or `sam` and if using a submenu CPU, then also set that:
+
+ ARCHITECTURE = avr
+ BOARD_SUB = atmega168
+
It is recommended in Windows that you create a symbolic link to avoid problems with file naming conventions on Windows. For example, if your your Arduino directory is in:
c:\Program Files (x86)\Arduino
diff --git a/arduino-mk-vars.md b/arduino-mk-vars.md
index 57bf2c2..e62c9dd 100644
--- a/arduino-mk-vars.md
+++ b/arduino-mk-vars.md
@@ -129,6 +129,42 @@ ARDUINO_VERSION = 105
----
+### ARCHITECTURE
+
+**Description:**
+
+Architecture for Arduino 1.5
+
+Defaults to unset for 1.0 or `avr` for 1.5
+
+**Example:**
+
+```Makefile
+ARCHITECTURE = sam
+```
+
+**Requirement:** *Optional*
+
+----
+
+### VENDOR
+
+**Description:**
+
+Board vendor/maintainer.
+
+Defaults to `arduino`
+
+**Example:**
+
+```Makefile
+VENDOR = sparkfun
+```
+
+**Requirement:** *Optional*
+
+----
+
### ARDUINO_SKETCHBOOK
**Description:**
@@ -220,6 +256,26 @@ BOARD_TAG = uno or mega2560
----
+### BOARD_SUB
+
+**Description:**
+
+1.5 submenu as listed in `boards.txt`
+
+**Example:**
+
+```Makefile
+# diecimila.name=Arduino Duemilanove or Diecimila
+BOARD_TAG=diecimila
+
+# diecimila.menu.cpu.atmega168=ATmega168
+BOARD_SUB=atmega168
+```
+
+**Requirement:** *Mandatory for 1.5 if using a submenu CPU*
+
+----
+
### MONITOR_PORT
**Description:**
@@ -1030,6 +1086,8 @@ Relative path to bootloader directory.
Usually can be auto-detected as a relative `bootloader.path` from `boards.txt`
+Deprecated in 1.5, now part of bootloader.file
+
**Example:**
```Makefile