aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-22 11:50:24 -0500
committerChristopher Peplin <chris.peplin@rhubarbtech.com>2014-01-28 09:43:33 -0500
commit067afbb8e4f6800909c01bf5f75fd90929c6c313 (patch)
tree19c76058cc80510f1c30bff5ebcc95a25b2f7507
parentac0b7d46c32eb03801e97c1c7e4d586fe93b3bfa (diff)
Override complete compiler tool paths for chipKIT.
Previously we were setting the AVR tools path to the PIC32 tools path because it made grabbing the compiling tools easier. Consequently, it made finding the avrdude path much harder, especially since the avrdude files are in different locations in the Linux distributions of MPIDE and Arduino. Instead, we set the AVR tools path to the *correct* path (where *AVR* dude lives), and totally override the CC, CXX, etc. paths to point to their PIC32 equivalents.
-rw-r--r--Arduino.mk26
-rw-r--r--chipKIT.mk27
2 files changed, 31 insertions, 22 deletions
diff --git a/Arduino.mk b/Arduino.mk
index df5ec03..c684d2f 100644
--- a/Arduino.mk
+++ b/Arduino.mk
@@ -354,7 +354,8 @@ endif
ifndef AVR_TOOLS_DIR
- BUNDLED_AVR_TOOLS_DIR := $(call dir_if_exists,$(ARDUINO_DIR)/hardware/tools/avr)
+ BUNDLED_AVR_TOOLS_DIR ?= $(call dir_if_exists,$(ARDUINO_DIR)/hardware/tools/avr)
+
ifdef BUNDLED_AVR_TOOLS_DIR
AVR_TOOLS_DIR = $(BUNDLED_AVR_TOOLS_DIR)
$(call show_config_variable,AVR_TOOLS_DIR,[BUNDLED],(in Arduino distribution))
@@ -708,15 +709,20 @@ TARGET_EEP = $(OBJDIR)/$(TARGET).eep
TARGETS = $(OBJDIR)/$(TARGET).*
CORE_LIB = $(OBJDIR)/libcore.a
-# Names of executables
-CC = $(AVR_TOOLS_PATH)/$(CC_NAME)
-CXX = $(AVR_TOOLS_PATH)/$(CXX_NAME)
-AS = $(AVR_TOOLS_PATH)/$(AS_NAME)
-OBJCOPY = $(AVR_TOOLS_PATH)/$(OBJCOPY_NAME)
-OBJDUMP = $(AVR_TOOLS_PATH)/$(OBJDUMP_NAME)
-AR = $(AVR_TOOLS_PATH)/$(AR_NAME)
-SIZE = $(AVR_TOOLS_PATH)/$(SIZE_NAME)
-NM = $(AVR_TOOLS_PATH)/$(NM_NAME)
+# Names of executables - chipKIT needs to override all to set paths to PIC32
+# tools, and we can't use "?=" assignment because these are already implicitly
+# defined by Make (e.g. $(CC) == cc).
+ifndef OVERRIDE_EXECUTABLES
+ CC = $(AVR_TOOLS_PATH)/$(CC_NAME)
+ CXX = $(AVR_TOOLS_PATH)/$(CXX_NAME)
+ AS = $(AVR_TOOLS_PATH)/$(AS_NAME)
+ OBJCOPY = $(AVR_TOOLS_PATH)/$(OBJCOPY_NAME)
+ OBJDUMP = $(AVR_TOOLS_PATH)/$(OBJDUMP_NAME)
+ AR = $(AVR_TOOLS_PATH)/$(AR_NAME)
+ SIZE = $(AVR_TOOLS_PATH)/$(SIZE_NAME)
+ NM = $(AVR_TOOLS_PATH)/$(NM_NAME)
+endif
+
REMOVE = rm -rf
MV = mv -f
CAT = cat
diff --git a/chipKIT.mk b/chipKIT.mk
index f3ac4cb..1adfda2 100644
--- a/chipKIT.mk
+++ b/chipKIT.mk
@@ -57,21 +57,13 @@ ifndef MPIDE_PREFERENCES_PATH
endif
endif
-
-AVR_TOOLS_DIR = $(ARDUINO_DIR)/hardware/pic32/compiler/pic32-tools
-
-# The same as in Arduino, the Linux distribution contains avrdude and
-# avrdude.conf in a different location.
ifeq ($(CURRENT_OS),LINUX)
- AVRDUDE_DIR = $(ARDUINO_DIR)/hardware/tools
- AVRDUDE = $(AVRDUDE_DIR)/avrdude
- AVRDUDE_CONF = $(AVRDUDE_DIR)/avrdude.conf
-else
- AVRDUDE_DIR = $(ARDUINO_DIR)/hardware/tools/avr
- AVRDUDE = $(AVRDUDE_DIR)/bin/avrdude
- AVRDUDE_CONF = $(AVRDUDE_DIR)/etc/avrdude.conf
+ BUNDLED_AVR_TOOLS_DIR = $(call dir_if_exists,$(MPIDE_DIR)/hardware/tools)
endif
+PIC32_TOOLS_DIR = $(ARDUINO_DIR)/hardware/pic32/compiler/pic32-tools
+PIC32_TOOLS_PATH = $(PIC32_TOOLS_DIR)/bin
+
ALTERNATE_CORE = pic32
ALTERNATE_CORE_PATH = $(MPIDE_DIR)/hardware/pic32
ARDUINO_CORE_PATH = $(ALTERNATE_CORE_PATH)/cores/$(ALTERNATE_CORE)
@@ -88,6 +80,17 @@ AR_NAME = pic32-ar
OBJDUMP_NAME = pic32-objdump
OBJCOPY_NAME = pic32-objcopy
SIZE_NAME = pic32-size
+NM_NAME = pic32-nm
+
+OVERRIDE_EXECUTABLES = 1
+CC = $(PIC32_TOOLS_PATH)/$(CC_NAME)
+CXX = $(PIC32_TOOLS_PATH)/$(CXX_NAME)
+AS = $(PIC32_TOOLS_PATH)/$(AS_NAME)
+OBJCOPY = $(PIC32_TOOLS_PATH)/$(OBJCOPY_NAME)
+OBJDUMP = $(PIC32_TOOLS_PATH)/$(OBJDUMP_NAME)
+AR = $(PIC32_TOOLS_PATH)/$(AR_NAME)
+SIZE = $(PIC32_TOOLS_PATH)/$(SIZE_NAME)
+NM = $(PIC32_TOOLS_PATH)/$(NM_NAME)
LDSCRIPT = $(call PARSE_BOARD,$(BOARD_TAG),ldscript)
LDSCRIPT_FILE = $(ARDUINO_CORE_PATH)/$(LDSCRIPT)