@@ -388,28 +388,129 @@ endif
388388# #######################################################################
389389# Arduino and system paths
390390
391+ # Third party hardware and core like ATtiny or ATmega 16
392+ ifdef ALTERNATE_CORE
393+ $(call show_config_variable,ALTERNATE_CORE,[USER])
394+
395+ ifndef ALTERNATE_CORE_PATH
396+ ALTERNATE_CORE_PATH = $(ARDUINO_SKETCHBOOK ) /hardware/$(ALTERNATE_CORE ) /$(ARCHITECTURE )
397+ endif
398+ endif
399+
400+ ifdef ALTERNATE_CORE_PATH
401+
402+ ifdef ALTERNATE_CORE
403+ $(call show_config_variable,ALTERNATE_CORE_PATH,[COMPUTED], (from ARDUINO_SKETCHBOOK and ALTERNATE_CORE))
404+ else
405+ $(call show_config_variable,ALTERNATE_CORE_PATH,[USER])
406+ endif
407+
408+ ifndef ARDUINO_VAR_PATH
409+ ARDUINO_VAR_PATH = $(ALTERNATE_CORE_PATH ) /variants
410+ $(call show_config_variable,ARDUINO_VAR_PATH,[COMPUTED],(from ALTERNATE_CORE_PATH))
411+ endif
412+
413+ ifndef BOARDS_TXT
414+ BOARDS_TXT = $(ALTERNATE_CORE_PATH ) /boards.txt
415+ $(call show_config_variable,BOARDS_TXT,[COMPUTED],(from ALTERNATE_CORE_PATH))
416+ endif
417+
418+ else
419+
420+ ifndef ARDUINO_VAR_PATH
421+ ARDUINO_VAR_PATH = $(ARDUINO_DIR ) /hardware/$(ARDMK_VENDOR ) /$(ARCHITECTURE ) /variants
422+ $(call show_config_variable,ARDUINO_VAR_PATH,[COMPUTED],(from ARDUINO_DIR))
423+ else
424+ $(call show_config_variable,ARDUINO_VAR_PATH,[USER])
425+ endif
426+
427+ ifndef BOARDS_TXT
428+ BOARDS_TXT = $(ARDUINO_DIR ) /hardware/$(ARDMK_VENDOR ) /$(ARCHITECTURE ) /boards.txt
429+ $(call show_config_variable,BOARDS_TXT,[COMPUTED],(from ARDUINO_DIR))
430+ else
431+ $(call show_config_variable,BOARDS_TXT,[USER])
432+ endif
433+
434+ endif
435+
436+ ifeq (,$(wildcard $(BOARDS_TXT ) ) )
437+ $(error Currently BOARDS_TXT='$(BOARDS_TXT)', which is not an existing file or an invalid filename.)
438+ endif
439+
440+ ifndef TOOL_PREFIX
441+ TOOL_PREFIX = avr
442+ endif
443+
391444ifndef CC_NAME
392- CC_NAME = avr-gcc
445+ CC_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.gcc)
446+ ifndef CC_NAME
447+ CC_NAME := $(TOOL_PREFIX ) -gcc
448+ else
449+ $(call show_config_variable,CC_NAME,[COMPUTED])
450+ endif
393451endif
394452
395453ifndef CXX_NAME
396- CXX_NAME = avr-g++
454+ CXX_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.g++)
455+ ifndef CXX_NAME
456+ CXX_NAME := $(TOOL_PREFIX ) -g++
457+ else
458+ $(call show_config_variable,CXX_NAME,[COMPUTED])
459+ endif
460+ endif
461+
462+ ifndef AS_NAME
463+ AS_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.as)
464+ ifndef AS_NAME
465+ AS_NAME := $(TOOL_PREFIX ) -as
466+ else
467+ $(call show_config_variable,AS_NAME,[COMPUTED])
468+ endif
397469endif
398470
399471ifndef OBJCOPY_NAME
400- OBJCOPY_NAME = avr-objcopy
472+ OBJCOPY_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.objcopy)
473+ ifndef OBJCOPY_NAME
474+ OBJCOPY_NAME := $(TOOL_PREFIX ) -objcopy
475+ else
476+ $(call show_config_variable,OBJCOPY_NAME,[COMPUTED])
477+ endif
401478endif
402479
403480ifndef OBJDUMP_NAME
404- OBJDUMP_NAME = avr-objdump
481+ OBJDUMP_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.objdump)
482+ ifndef OBJDUMP_NAME
483+ OBJDUMP_NAME := $(TOOL_PREFIX ) -objdump
484+ else
485+ $(call show_config_variable,OBJDUMP_NAME,[COMPUTED])
486+ endif
487+ endif
488+
489+ ifndef AR_NAME
490+ AR_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.ar)
491+ ifndef AR_NAME
492+ AR_NAME := $(TOOL_PREFIX ) -ar
493+ else
494+ $(call show_config_variable,AR_NAME,[COMPUTED])
495+ endif
405496endif
406497
407498ifndef SIZE_NAME
408- SIZE_NAME = avr-size
499+ SIZE_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.size)
500+ ifndef SIZE_NAME
501+ SIZE_NAME := $(TOOL_PREFIX ) -size
502+ else
503+ $(call show_config_variable,SIZE_NAME,[COMPUTED])
504+ endif
409505endif
410506
411507ifndef NM_NAME
412- NM_NAME = avr-nm
508+ NM_NAME := $(call PARSE_BOARD,$(BOARD_TAG ) ,build.command.nm)
509+ ifndef NM_NAME
510+ NM_NAME := $(TOOL_PREFIX ) -nm
511+ else
512+ $(call show_config_variable,NM_NAME,[COMPUTED])
513+ endif
413514endif
414515
415516ifndef AVR_TOOLS_DIR
@@ -457,8 +558,8 @@ ifndef AVR_TOOLS_DIR
457558 AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR )
458559 $(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
459560 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 ) ) ) /..) )
561+ # One last attempt using $(TOOL_PREFIX) -gcc in case using arm
562+ SYSTEMPATH_AVR_TOOLS_DIR := $(call dir_if_exists,$(abspath $(dir $(shell which $($( TOOL_PREFIX ) -gcc) ) ) /..) )
462563 ifdef SYSTEMPATH_AVR_TOOLS_DIR
463564 AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR )
464565 $(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
483584
484585endif # ndef AVR_TOOLS_DIR
485586
486- ifndef AVR_TOOLS_PATH
487- AVR_TOOLS_PATH = $(AVR_TOOLS_DIR ) /bin
587+ ifndef TOOLS_PATH
588+ TOOLS_PATH = $(AVR_TOOLS_DIR ) /bin
488589endif
489590
490591ifndef ARDUINO_LIB_PATH
@@ -505,51 +606,6 @@ else
505606 $(call show_config_variable,ARDUINO_PLATFORM_LIB_PATH,[USER])
506607endif
507608
508- # Third party hardware and core like ATtiny or ATmega 16
509- ifdef ALTERNATE_CORE
510- $(call show_config_variable,ALTERNATE_CORE,[USER])
511-
512- ifndef ALTERNATE_CORE_PATH
513- ALTERNATE_CORE_PATH = $(ARDUINO_SKETCHBOOK ) /hardware/$(ALTERNATE_CORE ) /$(ARCHITECTURE )
514- endif
515- endif
516-
517- ifdef ALTERNATE_CORE_PATH
518-
519- ifdef ALTERNATE_CORE
520- $(call show_config_variable,ALTERNATE_CORE_PATH,[COMPUTED], (from ARDUINO_SKETCHBOOK and ALTERNATE_CORE))
521- else
522- $(call show_config_variable,ALTERNATE_CORE_PATH,[USER])
523- endif
524-
525- ifndef ARDUINO_VAR_PATH
526- ARDUINO_VAR_PATH = $(ALTERNATE_CORE_PATH ) /variants
527- $(call show_config_variable,ARDUINO_VAR_PATH,[COMPUTED],(from ALTERNATE_CORE_PATH))
528- endif
529-
530- ifndef BOARDS_TXT
531- BOARDS_TXT = $(ALTERNATE_CORE_PATH ) /boards.txt
532- $(call show_config_variable,BOARDS_TXT,[COMPUTED],(from ALTERNATE_CORE_PATH))
533- endif
534-
535- else
536-
537- ifndef ARDUINO_VAR_PATH
538- ARDUINO_VAR_PATH = $(ARDUINO_DIR ) /hardware/$(ARDMK_VENDOR ) /$(ARCHITECTURE ) /variants
539- $(call show_config_variable,ARDUINO_VAR_PATH,[COMPUTED],(from ARDUINO_DIR))
540- else
541- $(call show_config_variable,ARDUINO_VAR_PATH,[USER])
542- endif
543-
544- ifndef BOARDS_TXT
545- BOARDS_TXT = $(ARDUINO_DIR ) /hardware/$(ARDMK_VENDOR ) /$(ARCHITECTURE ) /boards.txt
546- $(call show_config_variable,BOARDS_TXT,[COMPUTED],(from ARDUINO_DIR))
547- else
548- $(call show_config_variable,BOARDS_TXT,[USER])
549- endif
550-
551- endif
552-
553609# #######################################################################
554610# Miscellaneous
555611
@@ -585,11 +641,6 @@ else
585641 $(call show_config_variable,BOARD_TAG,[USER])
586642endif
587643
588- ifndef PARSE_BOARD
589- # result = $(call READ_BOARD_TXT, 'boardname', 'parameter')
590- PARSE_BOARD = $(shell grep -Ev '^\#' $(BOARDS_TXT ) | grep -E "^[ \t]* $(1 ) .$(2 ) =" | cut -d = -f 2 | cut -d : -f 2)
591- endif
592-
593644# If NO_CORE is set, then we don't have to parse boards.txt file
594645# But the user might have to define MCU, F_CPU etc
595646ifeq ($(strip $(NO_CORE ) ) ,)
@@ -826,7 +877,7 @@ endif
826877ifeq ($(strip $(NO_CORE ) ) ,)
827878 ifdef ARDUINO_CORE_PATH
828879 CORE_C_SRCS = $(wildcard $(ARDUINO_CORE_PATH ) /* .c)
829- CORE_C_SRCS += $(wildcard $(ARDUINO_CORE_PATH ) /avr -libc/* .c)
880+ CORE_C_SRCS += $(wildcard $(ARDUINO_CORE_PATH ) /$( TOOL_PREFIX ) -libc/* .c)
830881 CORE_CPP_SRCS = $(wildcard $(ARDUINO_CORE_PATH ) /* .cpp)
831882 CORE_AS_SRCS = $(wildcard $(ARDUINO_CORE_PATH ) /* .S)
832883
@@ -936,18 +987,22 @@ TARGET_EEP = $(OBJDIR)/$(TARGET).eep
936987TARGET_BIN = $(OBJDIR ) /$(TARGET ) .bin
937988CORE_LIB = $(OBJDIR ) /libcore.a
938989
939- # Names of executables - chipKIT needs to override all to set paths to PIC32
940- # tools, and we can't use "?=" assignment because these are already implicitly
990+ # Names of executables
991+ # In the rare case of wanting to override a path and/or excecutable
992+ # name, the OVERRIDE_EXECUTABLES variable must be defned and _all_
993+ # the excecutables (CC, CXX, AS, OBJCOPY, OBJDUMP AR, SIZE and NM)
994+ # _must_ be defined in the calling makefile.
995+ # We can't use "?=" assignment because these are already implicitly
941996# defined by Make (e.g. $(CC) == cc).
942997ifndef OVERRIDE_EXECUTABLES
943- CC = $(AVR_TOOLS_PATH ) /$(CC_NAME )
944- CXX = $(AVR_TOOLS_PATH ) /$(CXX_NAME )
945- AS = $(AVR_TOOLS_PATH ) /$(AS_NAME )
946- OBJCOPY = $(AVR_TOOLS_PATH ) /$(OBJCOPY_NAME )
947- OBJDUMP = $(AVR_TOOLS_PATH ) /$(OBJDUMP_NAME )
948- AR = $(AVR_TOOLS_PATH ) /$(AR_NAME )
949- SIZE = $(AVR_TOOLS_PATH ) /$(SIZE_NAME )
950- NM = $(AVR_TOOLS_PATH ) /$(NM_NAME )
998+ CC = $(TOOLS_PATH ) /$(CC_NAME )
999+ CXX = $(TOOLS_PATH ) /$(CXX_NAME )
1000+ AS = $(TOOLS_PATH ) /$(AS_NAME )
1001+ OBJCOPY = $(TOOLS_PATH ) /$(OBJCOPY_NAME )
1002+ OBJDUMP = $(TOOLS_PATH ) /$(OBJDUMP_NAME )
1003+ AR = $(TOOLS_PATH ) /$(AR_NAME )
1004+ SIZE = $(TOOLS_PATH ) /$(SIZE_NAME )
1005+ NM = $(TOOLS_PATH ) /$(NM_NAME )
9511006endif
9521007
9531008REMOVE = rm -rf
@@ -1083,15 +1138,15 @@ ifneq ($(CATERINA),)
10831138 CPPFLAGS += -DUSB_VID=$(USB_VID ) -DUSB_PID=$(USB_PID )
10841139endif
10851140
1086- # avr -gcc version that we can do maths on
1141+ # $(TOOL_PREFIX) -gcc version that we can do maths on
10871142CC_VERNUM = $(shell $(CC ) -dumpversion | sed 's/\.//g')
10881143
10891144# moved from above so we can find version-dependant ar
1090- ifndef AR_NAME
1145+ ifeq ( $( TOOL_PREFIX ) , avr)
10911146 ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
1092- AR_NAME = avr -gcc-ar
1147+ AR_NAME := $( TOOL_PREFIX ) -gcc-ar
10931148 else
1094- AR_NAME = avr -ar
1149+ AR_NAME := $( TOOL_PREFIX ) -ar
10951150 endif
10961151endif
10971152
@@ -1409,7 +1464,7 @@ CTAGS_CMD = $(CTAGS_EXEC) $(CTAGS_OPTS) -auf
14091464
14101465# If avrdude is installed separately, it can find its own config file
14111466ifndef AVRDUDE
1412- AVRDUDE = $(AVR_TOOLS_PATH ) /avrdude
1467+ AVRDUDE = $(TOOLS_PATH ) /avrdude
14131468endif
14141469
14151470# Default avrdude options
@@ -1752,7 +1807,7 @@ help:
17521807 make debug_init - start openocd gdb server\n\
17531808 make debug - connect to gdb target and begin debugging\n\
17541809 make size - show the size of the compiled output (relative to\n\
1755- resources, if you have a patched avr -size).\n\
1810+ resources, if you have a patched $(TOOL_PREFIX) -size).\n\
17561811 make verify_size - verify that the size of the final file is less than\n\
17571812 the capacity of the micro controller.\n\
17581813 make symbol_sizes - generate a .sym file containing symbols and their\n\
0 commit comments