@@ -388,28 +388,129 @@ endif
388
388
# #######################################################################
389
389
# Arduino and system paths
390
390
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
+
391
444
ifndef 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
393
451
endif
394
452
395
453
ifndef 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
397
469
endif
398
470
399
471
ifndef 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
401
478
endif
402
479
403
480
ifndef 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
405
496
endif
406
497
407
498
ifndef 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
409
505
endif
410
506
411
507
ifndef 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
413
514
endif
414
515
415
516
ifndef AVR_TOOLS_DIR
@@ -457,8 +558,8 @@ ifndef AVR_TOOLS_DIR
457
558
AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR )
458
559
$(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
459
560
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) ) ) /..) )
462
563
ifdef SYSTEMPATH_AVR_TOOLS_DIR
463
564
AVR_TOOLS_DIR = $(SYSTEMPATH_AVR_TOOLS_DIR )
464
565
$(call show_config_variable,AVR_TOOLS_DIR,[AUTODETECTED],(found in $$PATH))
483
584
484
585
endif # ndef AVR_TOOLS_DIR
485
586
486
- ifndef AVR_TOOLS_PATH
487
- AVR_TOOLS_PATH = $(AVR_TOOLS_DIR ) /bin
587
+ ifndef TOOLS_PATH
588
+ TOOLS_PATH = $(AVR_TOOLS_DIR ) /bin
488
589
endif
489
590
490
591
ifndef ARDUINO_LIB_PATH
@@ -505,51 +606,6 @@ else
505
606
$(call show_config_variable,ARDUINO_PLATFORM_LIB_PATH,[USER])
506
607
endif
507
608
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
-
553
609
# #######################################################################
554
610
# Miscellaneous
555
611
@@ -585,11 +641,6 @@ else
585
641
$(call show_config_variable,BOARD_TAG,[USER])
586
642
endif
587
643
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
-
593
644
# If NO_CORE is set, then we don't have to parse boards.txt file
594
645
# But the user might have to define MCU, F_CPU etc
595
646
ifeq ($(strip $(NO_CORE ) ) ,)
@@ -826,7 +877,7 @@ endif
826
877
ifeq ($(strip $(NO_CORE ) ) ,)
827
878
ifdef ARDUINO_CORE_PATH
828
879
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)
830
881
CORE_CPP_SRCS = $(wildcard $(ARDUINO_CORE_PATH ) /* .cpp)
831
882
CORE_AS_SRCS = $(wildcard $(ARDUINO_CORE_PATH ) /* .S)
832
883
@@ -936,18 +987,22 @@ TARGET_EEP = $(OBJDIR)/$(TARGET).eep
936
987
TARGET_BIN = $(OBJDIR ) /$(TARGET ) .bin
937
988
CORE_LIB = $(OBJDIR ) /libcore.a
938
989
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
941
996
# defined by Make (e.g. $(CC) == cc).
942
997
ifndef 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 )
951
1006
endif
952
1007
953
1008
REMOVE = rm -rf
@@ -1083,15 +1138,15 @@ ifneq ($(CATERINA),)
1083
1138
CPPFLAGS += -DUSB_VID=$(USB_VID ) -DUSB_PID=$(USB_PID )
1084
1139
endif
1085
1140
1086
- # avr -gcc version that we can do maths on
1141
+ # $(TOOL_PREFIX) -gcc version that we can do maths on
1087
1142
CC_VERNUM = $(shell $(CC ) -dumpversion | sed 's/\.//g')
1088
1143
1089
1144
# moved from above so we can find version-dependant ar
1090
- ifndef AR_NAME
1145
+ ifeq ( $( TOOL_PREFIX ) , avr)
1091
1146
ifeq ($(shell expr $(CC_VERNUM) '>' 490), 1)
1092
- AR_NAME = avr -gcc-ar
1147
+ AR_NAME := $( TOOL_PREFIX ) -gcc-ar
1093
1148
else
1094
- AR_NAME = avr -ar
1149
+ AR_NAME := $( TOOL_PREFIX ) -ar
1095
1150
endif
1096
1151
endif
1097
1152
@@ -1409,7 +1464,7 @@ CTAGS_CMD = $(CTAGS_EXEC) $(CTAGS_OPTS) -auf
1409
1464
1410
1465
# If avrdude is installed separately, it can find its own config file
1411
1466
ifndef AVRDUDE
1412
- AVRDUDE = $(AVR_TOOLS_PATH ) /avrdude
1467
+ AVRDUDE = $(TOOLS_PATH ) /avrdude
1413
1468
endif
1414
1469
1415
1470
# Default avrdude options
@@ -1752,7 +1807,7 @@ help:
1752
1807
make debug_init - start openocd gdb server\n\
1753
1808
make debug - connect to gdb target and begin debugging\n\
1754
1809
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\
1756
1811
make verify_size - verify that the size of the final file is less than\n\
1757
1812
the capacity of the micro controller.\n\
1758
1813
make symbol_sizes - generate a .sym file containing symbols and their\n\
0 commit comments