Skip to content

Commit e445400

Browse files
committed
Added the TOOL_PREFIX variable for setting up the executable tools.
Currently three different tool chains seem to be used: * avr-* * pic32-* * arm-none-eabi-* These all get set up independently. This patch centralizes the definitions of the executable tools and does it generically, by means of the newly introduced TOOL_PREFIX variable. Setting up a tool chain is now simply a matter of defining the TOOL_PREFIX variable. For the currently supported tool chains it gets set to avr, pic32 or arm-none-eabi. Arbitrary tool chains can now easily be set up, by the TOOL_PREFIX variable. Although the use of the OVERRIDE_EXECUTABLES variable is now almost not justifiable, it was left as-is, in order to assure backwards compatibility.
1 parent 2442daf commit e445400

File tree

7 files changed

+139
-274
lines changed

7 files changed

+139
-274
lines changed

Arduino.mk

Lines changed: 83 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -388,28 +388,80 @@ endif
388388
########################################################################
389389
# Arduino and system paths
390390

391+
ifndef TOOL_PREFIX
392+
TOOL_PREFIX = avr
393+
endif
394+
391395
ifndef CC_NAME
392-
CC_NAME = avr-gcc
396+
CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gcc)
397+
ifndef CC_NAME
398+
CC_NAME := $(TOOL_PREFIX)-gcc
399+
else
400+
$(call show_config_variable,CC_NAME,[COMPUTED])
401+
endif
393402
endif
394403

395404
ifndef CXX_NAME
396-
CXX_NAME = avr-g++
405+
CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.g++)
406+
ifndef CXX_NAME
407+
CXX_NAME := $(TOOL_PREFIX)-g++
408+
else
409+
$(call show_config_variable,CXX_NAME,[COMPUTED])
410+
endif
411+
endif
412+
413+
ifndef AS_NAME
414+
AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.as)
415+
ifndef AS_NAME
416+
AS_NAME := $(TOOL_PREFIX)-as
417+
else
418+
$(call show_config_variable,AS_NAME,[COMPUTED])
419+
endif
397420
endif
398421

399422
ifndef OBJCOPY_NAME
400-
OBJCOPY_NAME = avr-objcopy
423+
OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objcopy)
424+
ifndef OBJCOPY_NAME
425+
OBJCOPY_NAME := $(TOOL_PREFIX)-objcopy
426+
else
427+
$(call show_config_variable,OBJCOPY_NAME,[COMPUTED])
428+
endif
401429
endif
402430

403431
ifndef OBJDUMP_NAME
404-
OBJDUMP_NAME = avr-objdump
432+
OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objdump)
433+
ifndef OBJDUMP_NAME
434+
OBJDUMP_NAME := $(TOOL_PREFIX)-objdump
435+
else
436+
$(call show_config_variable,OBJDUMP_NAME,[COMPUTED])
437+
endif
438+
endif
439+
440+
ifndef AR_NAME
441+
AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.ar)
442+
ifndef AR_NAME
443+
AR_NAME := $(TOOL_PREFIX)-ar
444+
else
445+
$(call show_config_variable,AR_NAME,[COMPUTED])
446+
endif
405447
endif
406448

407449
ifndef SIZE_NAME
408-
SIZE_NAME = avr-size
450+
SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.size)
451+
ifndef SIZE_NAME
452+
SIZE_NAME := $(TOOL_PREFIX)-size
453+
else
454+
$(call show_config_variable,SIZE_NAME,[COMPUTED])
455+
endif
409456
endif
410457

411458
ifndef NM_NAME
412-
NM_NAME = avr-nm
459+
NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.nm)
460+
ifndef NM_NAME
461+
NM_NAME := $(TOOL_PREFIX)-nm
462+
else
463+
$(call show_config_variable,NM_NAME,[COMPUTED])
464+
endif
413465
endif
414466

415467
ifndef AVR_TOOLS_DIR
@@ -457,8 +509,8 @@ ifndef AVR_TOOLS_DIR
457509
AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR)
458510
$(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
459511
else
460-
# One last attempt using avr-gcc in case using arm
461-
SYSTEMPATH_AVR_TOOLS_DIR := $(call dir_if_exists,$(abspath $(dir $(shell which $(avr-gcc)))/..))
512+
# One last attempt using $(TOOL_PREFIX)-gcc in case using arm
513+
SYSTEMPATH_AVR_TOOLS_DIR := $(call dir_if_exists,$(abspath $(dir $(shell which $($(TOOL_PREFIX)-gcc)))/..))
462514
ifdef SYSTEMPATH_AVR_TOOLS_DIR
463515
AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR)
464516
$(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
@@ -483,8 +535,8 @@ else
483535

484536
endif #ndef AVR_TOOLS_DIR
485537

486-
ifndef AVR_TOOLS_PATH
487-
AVR_TOOLS_PATH = $(AVR_TOOLS_DIR)/bin
538+
ifndef TOOLS_PATH
539+
TOOLS_PATH = $(AVR_TOOLS_DIR)/bin
488540
endif
489541

490542
ifndef ARDUINO_LIB_PATH
@@ -821,7 +873,7 @@ endif
821873
ifeq ($(strip $(NO_CORE)),)
822874
ifdef ARDUINO_CORE_PATH
823875
CORE_C_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.c)
824-
CORE_C_SRCS += $(wildcard $(ARDUINO_CORE_PATH)/avr-libc/*.c)
876+
CORE_C_SRCS += $(wildcard $(ARDUINO_CORE_PATH)/$(TOOL_PREFIX)-libc/*.c)
825877
CORE_CPP_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.cpp)
826878
CORE_AS_SRCS = $(wildcard $(ARDUINO_CORE_PATH)/*.S)
827879

@@ -931,18 +983,22 @@ TARGET_EEP = $(OBJDIR)/$(TARGET).eep
931983
TARGET_BIN = $(OBJDIR)/$(TARGET).bin
932984
CORE_LIB = $(OBJDIR)/libcore.a
933985

934-
# Names of executables - chipKIT needs to override all to set paths to PIC32
935-
# tools, and we can't use "?=" assignment because these are already implicitly
986+
# Names of executables
987+
# In the rare case of wanting to override a path and/or excecutable
988+
# name, the OVERRIDE_EXECUTABLES variable must be defned and _all_
989+
# the excecutables (CC, CXX, AS, OBJCOPY, OBJDUMP AR, SIZE and NM)
990+
# _must_ be defined in the calling makefile.
991+
# We can't use "?=" assignment because these are already implicitly
936992
# defined by Make (e.g. $(CC) == cc).
937993
ifndef OVERRIDE_EXECUTABLES
938-
CC = $(AVR_TOOLS_PATH)/$(CC_NAME)
939-
CXX = $(AVR_TOOLS_PATH)/$(CXX_NAME)
940-
AS = $(AVR_TOOLS_PATH)/$(AS_NAME)
941-
OBJCOPY = $(AVR_TOOLS_PATH)/$(OBJCOPY_NAME)
942-
OBJDUMP = $(AVR_TOOLS_PATH)/$(OBJDUMP_NAME)
943-
AR = $(AVR_TOOLS_PATH)/$(AR_NAME)
944-
SIZE = $(AVR_TOOLS_PATH)/$(SIZE_NAME)
945-
NM = $(AVR_TOOLS_PATH)/$(NM_NAME)
994+
CC = $(TOOLS_PATH)/$(CC_NAME)
995+
CXX = $(TOOLS_PATH)/$(CXX_NAME)
996+
AS = $(TOOLS_PATH)/$(AS_NAME)
997+
OBJCOPY = $(TOOLS_PATH)/$(OBJCOPY_NAME)
998+
OBJDUMP = $(TOOLS_PATH)/$(OBJDUMP_NAME)
999+
AR = $(TOOLS_PATH)/$(AR_NAME)
1000+
SIZE = $(TOOLS_PATH)/$(SIZE_NAME)
1001+
NM = $(TOOLS_PATH)/$(NM_NAME)
9461002
endif
9471003

9481004
REMOVE = rm -rf
@@ -1078,15 +1134,15 @@ ifneq ($(CATERINA),)
10781134
CPPFLAGS += -DUSB_VID=$(USB_VID) -DUSB_PID=$(USB_PID)
10791135
endif
10801136

1081-
# avr-gcc version that we can do maths on
1137+
# $(TOOL_PREFIX)-gcc version that we can do maths on
10821138
CC_VERNUM = $(shell $(CC) -dumpversion | sed 's/\.//g')
10831139

10841140
# moved from above so we can find version-dependant ar
1085-
ifndef AR_NAME
1141+
ifeq ($(TOOL_PREFIX), avr)
10861142
ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
1087-
AR_NAME = avr-gcc-ar
1143+
AR_NAME := $(TOOL_PREFIX)-gcc-ar
10881144
else
1089-
AR_NAME = avr-ar
1145+
AR_NAME := $(TOOL_PREFIX)-ar
10901146
endif
10911147
endif
10921148

@@ -1404,7 +1460,7 @@ CTAGS_CMD = $(CTAGS_EXEC) $(CTAGS_OPTS) -auf
14041460

14051461
# If avrdude is installed separately, it can find its own config file
14061462
ifndef AVRDUDE
1407-
AVRDUDE = $(AVR_TOOLS_PATH)/avrdude
1463+
AVRDUDE = $(TOOLS_PATH)/avrdude
14081464
endif
14091465

14101466
# Default avrdude options
@@ -1747,7 +1803,7 @@ help:
17471803
make debug_init - start openocd gdb server\n\
17481804
make debug - connect to gdb target and begin debugging\n\
17491805
make size - show the size of the compiled output (relative to\n\
1750-
resources, if you have a patched avr-size).\n\
1806+
resources, if you have a patched $(TOOL_PREFIX)-size).\n\
17511807
make verify_size - verify that the size of the final file is less than\n\
17521808
the capacity of the micro controller.\n\
17531809
make symbol_sizes - generate a .sym file containing symbols and their\n\

HISTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ I tried to give credit whenever possible. If I have missed anyone, kindly add it
2323
- New: Support Arduino ARM SAMD devices (Zero, M0 Pro, Feather M0). (https://github.com/tuna-f1sh)
2424
- New: Support Arduino ARM SAM devices (Due). (https://github.com/tuna-f1sh)
2525
- New: Moved the PARSE_BOARD macro to Common.mk and use only this to parse the boards.txt file. (https://github.com/wingunder)
26+
- New: Added the TOOL_PREFIX variable for setting up the executable tools centrally and generically. (https://github.com/wingunder)
2627

2728
### 1.6.0 (2017-07-11)
2829
- Fix: Allowed for SparkFun's weird usb pid/vid submenu shenanigans (issue #499). (https://github.com/sej7278)

OpenCM.mk

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -69,77 +69,7 @@ endif
6969
########################################################################
7070
# command names
7171

72-
ifndef CC_NAME
73-
CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gcc)
74-
ifndef CC_NAME
75-
CC_NAME := arm-none-eabi-gcc
76-
else
77-
$(call show_config_variable,CC_NAME,[COMPUTED])
78-
endif
79-
endif
80-
81-
ifndef CXX_NAME
82-
CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.g++)
83-
ifndef CXX_NAME
84-
CXX_NAME := arm-none-eabi-g++
85-
else
86-
$(call show_config_variable,CXX_NAME,[COMPUTED])
87-
endif
88-
endif
89-
90-
ifndef AS_NAME
91-
AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.as)
92-
ifndef AS_NAME
93-
AS_NAME := arm-none-eabi-as
94-
else
95-
$(call show_config_variable,AS_NAME,[COMPUTED])
96-
endif
97-
endif
98-
99-
ifndef OBJDUMP_NAME
100-
OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objdump)
101-
ifndef OBJDUMP_NAME
102-
OBJDUMP_NAME := arm-none-eabi-objdump
103-
else
104-
$(call show_config_variable,OBJDUMP_NAME,[COMPUTED])
105-
endif
106-
endif
107-
108-
ifndef AR_NAME
109-
AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.ar)
110-
ifndef AR_NAME
111-
AR_NAME := arm-none-eabi-ar
112-
else
113-
$(call show_config_variable,AR_NAME,[COMPUTED])
114-
endif
115-
endif
116-
117-
ifndef SIZE_NAME
118-
SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.size)
119-
ifndef SIZE_NAME
120-
SIZE_NAME := arm-none-eabi-size
121-
else
122-
$(call show_config_variable,SIZE_NAME,[COMPUTED])
123-
endif
124-
endif
125-
126-
ifndef NM_NAME
127-
NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.nm)
128-
ifndef NM_NAME
129-
NM_NAME := arm-none-eabi-nm
130-
else
131-
$(call show_config_variable,NM_NAME,[COMPUTED])
132-
endif
133-
endif
134-
135-
ifndef OBJCOPY_NAME
136-
OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objcopy)
137-
ifndef OBJCOPY_NAME
138-
OBJCOPY_NAME := arm-none-eabi-objcopy
139-
else
140-
$(call show_config_variable,OBJCOPY_NAME,[COMPUTED])
141-
endif
142-
endif
72+
TOOL_PREFIX = arm-none-eabi
14373

14474
# processor stuff
14575
ifndef MCU

Sam.mk

Lines changed: 5 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ endif
167167

168168
# Use arm-toolchain from Arduino install if exists and user has not defined global version
169169
ifndef ARM_TOOLS_DIR
170-
ARM_TOOLS_DIR = $(call dir_if_exists,$(wildcard $(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/arm-none-eabi-gcc/*))
170+
ARM_TOOLS_DIR = $(call dir_if_exists,$(wildcard $(ARDUINO_PACKAGE_DIR)/$(ARDMK_VENDOR)/tools/$(TOOL_PREFIX)-gcc/*))
171171
$(call show_config_variable,ARM_TOOLS_DIR,[COMPUTED],(from ARDUINO_PACKAGE_DIR))
172172
else
173173
$(call show_config_variable,ARM_TOOLS_DIR,[USER])
@@ -182,82 +182,12 @@ endif
182182
########################################################################
183183
# command names
184184

185-
ifndef CC_NAME
186-
CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gcc)
187-
ifndef CC_NAME
188-
CC_NAME := arm-none-eabi-gcc
189-
else
190-
$(call show_config_variable,CC_NAME,[COMPUTED])
191-
endif
192-
endif
193-
194-
ifndef CXX_NAME
195-
CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.g\+\+)
196-
ifndef CXX_NAME
197-
CXX_NAME := arm-none-eabi-g++
198-
else
199-
$(call show_config_variable,CXX_NAME,[COMPUTED])
200-
endif
201-
endif
202-
203-
ifndef AS_NAME
204-
AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.as)
205-
ifndef AS_NAME
206-
AS_NAME := arm-none-eabi-gcc-as
207-
else
208-
$(call show_config_variable,AS_NAME,[COMPUTED])
209-
endif
210-
endif
211-
212-
ifndef OBJCOPY_NAME
213-
OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objcopy)
214-
ifndef OBJCOPY_NAME
215-
OBJCOPY_NAME := arm-none-eabi-objcopy
216-
else
217-
$(call show_config_variable,OBJCOPY_NAME,[COMPUTED])
218-
endif
219-
endif
220-
221-
ifndef OBJDUMP_NAME
222-
OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.objdump)
223-
ifndef OBJDUMP_NAME
224-
OBJDUMP_NAME := arm-none-eabi-objdump
225-
else
226-
$(call show_config_variable,OBJDUMP_NAME,[COMPUTED])
227-
endif
228-
endif
229-
230-
ifndef AR_NAME
231-
AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.ar)
232-
ifndef AR_NAME
233-
AR_NAME := arm-none-eabi-ar
234-
else
235-
$(call show_config_variable,AR_NAME,[COMPUTED])
236-
endif
237-
endif
238-
239-
ifndef SIZE_NAME
240-
SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.size)
241-
ifndef SIZE_NAME
242-
SIZE_NAME := arm-none-eabi-size
243-
else
244-
$(call show_config_variable,SIZE_NAME,[COMPUTED])
245-
endif
246-
endif
247-
248-
ifndef NM_NAME
249-
NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.nm)
250-
ifndef NM_NAME
251-
NM_NAME := arm-none-eabi-gcc-nm
252-
else
253-
$(call show_config_variable,NM_NAME,[COMPUTED])
254-
endif
255-
endif
185+
TOOL_PREFIX = arm-none-eabi
256186

257187
ifndef GDB_NAME
258188
GDB_NAME := $(call PARSE_BOARD,$(BOARD_TAG),build.command.gdb)
259189
ifndef GDB_NAME
260-
GDB_NAME := arm-none-eabi-gdb
190+
GDB_NAME := $(TOOL_PREFIX)-gdb
261191
else
262192
$(call show_config_variable,GDB_NAME,[COMPUTED])
263193
endif
@@ -385,17 +315,8 @@ endif
385315
########################################################################
386316
# EXECUTABLES
387317
# Define them here to use ARM_TOOLS_PATH and allow auto finding of AVR_TOOLS_PATH
388-
OVERRIDE_EXECUTABLES = 1
389-
390-
ARM_TOOLS_PATH := $(ARM_TOOLS_DIR)/bin
391-
CC = $(ARM_TOOLS_PATH)/$(CC_NAME)
392-
CXX = $(ARM_TOOLS_PATH)/$(CXX_NAME)
393-
AS = $(ARM_TOOLS_PATH)/$(AS_NAME)
394-
OBJCOPY = $(ARM_TOOLS_PATH)/$(OBJCOPY_NAME)
395-
OBJDUMP = $(ARM_TOOLS_PATH)/$(OBJDUMP_NAME)
396-
AR = $(ARM_TOOLS_PATH)/$(AR_NAME)
397-
SIZE = $(ARM_TOOLS_PATH)/$(SIZE_NAME)
398-
NM = $(ARM_TOOLS_PATH)/$(NM_NAME)
318+
319+
AVR_TOOLS_DIR := $(ARM_TOOLS_DIR)
399320
#GDB = $(ARM_TOOLS_PATH)/$(GDB_NAME)
400321
# Use system gdb for now as Arduino supplied has lib error?
401322
GDB = $(GDB_NAME)

0 commit comments

Comments
 (0)