arduino-mk 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. data/README.md +60 -0
  2. data/lib/arduino-mk.rb +10 -0
  3. data/lib/arduino-mk/base.rb +61 -0
  4. data/lib/arduino-mk/error_improver.rb +42 -0
  5. data/lib/arduino-mk/makefile/runner.rb +23 -0
  6. data/lib/arduino-mk/makefile/template.rb +27 -0
  7. data/lib/arduino-mk/null_project.rb +5 -0
  8. data/lib/arduino-mk/null_project/null.c +1 -0
  9. data/lib/arduino-mk/option_parser.rb +35 -0
  10. data/lib/arduino-mk/project_copier.rb +9 -0
  11. data/vendor/Arduino-Makefile/Arduino.mk +1306 -0
  12. data/vendor/Arduino-Makefile/CONTRIBUTING.md +35 -0
  13. data/vendor/Arduino-Makefile/Common.mk +46 -0
  14. data/vendor/Arduino-Makefile/HISTORY.md +225 -0
  15. data/vendor/Arduino-Makefile/README.md +189 -0
  16. data/vendor/Arduino-Makefile/ard-reset-arduino.1 +48 -0
  17. data/vendor/Arduino-Makefile/arduino-mk-vars.md +1101 -0
  18. data/vendor/Arduino-Makefile/bin/ard-reset-arduino +38 -0
  19. data/vendor/Arduino-Makefile/chipKIT.mk +109 -0
  20. data/vendor/Arduino-Makefile/examples/ATtinyBlink/ATtinyBlink.ino +23 -0
  21. data/vendor/Arduino-Makefile/examples/ATtinyBlink/Makefile +13 -0
  22. data/vendor/Arduino-Makefile/examples/AnalogInOutSerial/AnalogInOutSerial.ino +53 -0
  23. data/vendor/Arduino-Makefile/examples/AnalogInOutSerial/Makefile +4 -0
  24. data/vendor/Arduino-Makefile/examples/Blink/Blink.ino +19 -0
  25. data/vendor/Arduino-Makefile/examples/Blink/Makefile +5 -0
  26. data/vendor/Arduino-Makefile/examples/BlinkChipKIT/BlinkChipKIT.pde +19 -0
  27. data/vendor/Arduino-Makefile/examples/BlinkChipKIT/Makefile +5 -0
  28. data/vendor/Arduino-Makefile/examples/BlinkInAVRC/Makefile +16 -0
  29. data/vendor/Arduino-Makefile/examples/BlinkInAVRC/blink.c +38 -0
  30. data/vendor/Arduino-Makefile/examples/BlinkWithoutDelay/BlinkWithoutDelay.ino +65 -0
  31. data/vendor/Arduino-Makefile/examples/BlinkWithoutDelay/Makefile +4 -0
  32. data/vendor/Arduino-Makefile/examples/Fade/Fade.ino +31 -0
  33. data/vendor/Arduino-Makefile/examples/Fade/Makefile +4 -0
  34. data/vendor/Arduino-Makefile/examples/HelloWorld/HelloWorld.ino +58 -0
  35. data/vendor/Arduino-Makefile/examples/HelloWorld/Makefile +4 -0
  36. data/vendor/Arduino-Makefile/examples/MakefileExample/Makefile-example.mk +55 -0
  37. data/vendor/Arduino-Makefile/examples/README.md +7 -0
  38. data/vendor/Arduino-Makefile/examples/TinySoftWareSerial/Makefile +14 -0
  39. data/vendor/Arduino-Makefile/examples/TinySoftWareSerial/TinySoftwareSerial.ino +12 -0
  40. data/vendor/Arduino-Makefile/examples/WebServer/Makefile +6 -0
  41. data/vendor/Arduino-Makefile/examples/WebServer/WebServer.ino +82 -0
  42. data/vendor/Arduino-Makefile/examples/master_reader/Makefile +6 -0
  43. data/vendor/Arduino-Makefile/examples/master_reader/master_reader.ino +32 -0
  44. data/vendor/Arduino-Makefile/examples/toneMelody/Makefile +4 -0
  45. data/vendor/Arduino-Makefile/examples/toneMelody/pitches.h +95 -0
  46. data/vendor/Arduino-Makefile/examples/toneMelody/toneMelody.ino +49 -0
  47. data/vendor/Arduino-Makefile/licence.txt +502 -0
  48. data/vendor/Arduino-Makefile/packaging/debian/README.md +23 -0
  49. data/vendor/Arduino-Makefile/packaging/fedora/README.md +39 -0
  50. data/vendor/Arduino-Makefile/packaging/fedora/arduino-mk.spec +70 -0
  51. metadata +110 -0
@@ -0,0 +1,48 @@
1
+ .TH ARD-RESET-ARDUINO "1" "April 2014" "ard-reset-arduino 1.3.3" "Arduino CLI Reset"
2
+
3
+ .SH NAME
4
+ ard-reset-arduino - Reset Arduino board
5
+
6
+ .SH SYNOPSIS
7
+ .B ard-reset-arduino
8
+ [OPTION]... [PORT]
9
+
10
+ .SH DESCRIPTION
11
+ To reset Arduinos, we either pulse the DTR line or open the USB port
12
+ at 1200 baud and close it again.
13
+
14
+ .SH OPTIONS
15
+ .B \-\-verbose
16
+ Watch what's going on on STDERR.
17
+
18
+ .B \-\-period
19
+ Specify the DTR pulse width in seconds.
20
+
21
+ .B \-\-caterina
22
+ Reset a Leonardo, Micro, Robot, LilyPadUSB or similar 32u4-based device.
23
+
24
+ .SH EXAMPLES
25
+ ard-reset-arduino /dev/ttyACM0
26
+ .PP
27
+ ard-reset-arduino \-\-verbose \-\-period=0.1 /dev/cu.usb*
28
+ .PP
29
+ ard-reset-arduino \-\-verbose \-\-caterina /dev/ttyUSB0
30
+
31
+ .SH BUGS
32
+ There are no known bugs in this application. Please report problems
33
+ to the author. Patches are welcome.
34
+
35
+ .SH AUTHOR
36
+ Simon John, git@the-jedi.co.uk
37
+
38
+ .SH LICENSE
39
+ Copyright (c) 2014, Simon John. All rights reserved.
40
+ .PP
41
+ This file is free software; you can redistribute it and/or modify it
42
+ under the terms of the GNU Lesser General Public License as published
43
+ by the Free Software Foundation; either version 2.1 of the License, or
44
+ (at your option) any later version.
45
+ .PP
46
+ This program is distributed in the hope that it will be useful, but
47
+ WITHOUT ANY WARRANTY; without even the implied warranty of
48
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -0,0 +1,1101 @@
1
+ # Documentation of variables
2
+
3
+ The following are the different variables that can be overwritten in the user makefiles.
4
+
5
+ * [Global variables](#global-variables)
6
+ * [Installation/Directory variables](#installationdirectory-variables)
7
+ * [Arduino IDE variables](#arduino-ide-variables)
8
+ * [Sketch related variables](#sketch-related-variables)
9
+ * [ISP programming variables](#isp-programming-variables)
10
+ * [Compiler/Executable variables](#compilerexecutable-variables)
11
+ * [Avrdude setting variables](#avrdude-setting-variables)
12
+ * [Bootloader variables](#bootloader-variables)
13
+ * [ChipKIT variables](#chipkit-variables)
14
+
15
+ ## Global variables
16
+
17
+ ### ARDUINO_QUIET
18
+
19
+ **Description:**
20
+
21
+ Suppress printing of Arduino-Makefile configuration.
22
+
23
+ Defaults to `0` (unset/disabled).
24
+
25
+ **Example:**
26
+
27
+ ```Makefile
28
+ ARDUINO_QUIET = 1
29
+ ```
30
+
31
+ **Requirement:** *Optional*
32
+
33
+ ----
34
+
35
+ ## Installation/Directory variables
36
+
37
+ ### ARDMK_DIR
38
+
39
+ **Description:**
40
+
41
+ Directory where the `*.mk` files are stored.
42
+
43
+ Usually can be auto-detected as `AUTO_ARDUINO_DIR` (parent of `Arduino.mk`).
44
+
45
+ **Example:**
46
+
47
+ ```Makefile
48
+ ARDMK_DIR = /usr/share/arduino
49
+ ```
50
+
51
+ **Requirement:** *Optional*
52
+
53
+ ----
54
+
55
+ ### AVR_TOOLS_DIR
56
+
57
+ **Description:**
58
+
59
+ Directory where tools such as `avrdude`, `avr-g++`, `avr-gcc`, etc. are stored in the `bin/` subdirectory.
60
+
61
+ Usually can be auto-detected from `$PATH` as `SYSTEMPATH_AVR_TOOLS_DIR` or as `BUNDLED_AVR_TOOLS_DIR` within the Arduino distribution.
62
+
63
+ **Example:**
64
+
65
+ ```Makefile
66
+ AVR_TOOLS_DIR = /usr
67
+ # or
68
+ AVR_TOOLS_DIR = /usr/share/arduino/hardware/tools/avr
69
+ ```
70
+
71
+ **Requirement:** *Optional*
72
+
73
+ ----
74
+
75
+ ### RESET_CMD
76
+
77
+ **Description:**
78
+
79
+ Command to reset the MCU.
80
+
81
+ Defaults to `ard-reset-arduino` with the extra `--caterina` flag for atmega32u4 boards.
82
+
83
+ **Example:**
84
+
85
+ ```Makefile
86
+ RESET_CMD = ~/gertduino/reset
87
+ ```
88
+
89
+ **Requirement:** *Optional*
90
+
91
+ ----
92
+
93
+ ## Arduino IDE variables
94
+
95
+ ### ARDUINO_DIR
96
+
97
+ **Description:**
98
+
99
+ Directory where the Arduino IDE and/or core files are stored.
100
+
101
+ **Example:**
102
+
103
+ ```Makefile
104
+ # Linux
105
+ ARDUINO_DIR = /usr/share/arduino
106
+ # Mac OS X
107
+ ARDUINO_DIR = /Applications/Arduino.app/Contents/Resources/Java
108
+ ```
109
+
110
+ **Requirement:** *Optional*
111
+
112
+ ----
113
+
114
+ ### ARDUINO_VERSION
115
+
116
+ **Description:**
117
+
118
+ Version string for Arduino IDE and/or core.
119
+
120
+ Usually can be auto-detected as `AUTO_ARDUINO_VERSION` from `/usr/share/arduino/lib/version.txt`
121
+
122
+ **Example:**
123
+
124
+ ```Makefile
125
+ ARDUINO_VERSION = 105
126
+ ```
127
+
128
+ **Requirement:** *Optional*
129
+
130
+ ----
131
+
132
+ ### ARDUINO_SKETCHBOOK
133
+
134
+ **Description:**
135
+
136
+ Path to `sketchbook` directory.
137
+
138
+ Usually can be auto-detected from the Arduino `preferences.txt` file or the default `~/sketchbook`
139
+
140
+ **Example:**
141
+
142
+ ```Makefile
143
+ ARDUINO_SKETCHBOOK = ~/sketches
144
+ ```
145
+
146
+ **Requirement:** *Optional*
147
+
148
+ ----
149
+
150
+ ### ARDUINO_PREFERENCES_PATH
151
+
152
+ **Description:**
153
+
154
+ Path to Arduino `preferences.txt` file.
155
+
156
+ Usually can be auto-detected as `AUTO_ARDUINO_PREFERENCES` from the defaults:
157
+
158
+ * on Linux : `~/.arduino/preferences.txt`
159
+ * on Mac OS X : `~/Library/Arduino/preferences.txt`
160
+
161
+ **Example:**
162
+
163
+ ```Makefile
164
+ ARDUINO_PREFERENCES_PATH = ~/sketches/preferences.txt
165
+ ```
166
+
167
+ **Requirement:** *Optional*
168
+
169
+ ----
170
+
171
+ ### ARDUINO_CORE_PATH
172
+
173
+ **Description:**
174
+
175
+ Path to standard Arduino core files.
176
+
177
+ **Example:**
178
+
179
+ ```Makefile
180
+ ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/arduino
181
+ ```
182
+
183
+ **Requirement:** *Optional*
184
+
185
+ ----
186
+
187
+ ## Sketch related variables
188
+
189
+ ### ARDUINO_LIBS
190
+
191
+ **Description:**
192
+
193
+ Any libraries you intend to include.
194
+
195
+ Usually can be auto-detected from the sketch. Separated by spaces. If the library has a `/utility` folder (like `SD` or `Wire` library), then the utility folder should also be specified.
196
+
197
+ **Example:**
198
+
199
+ ```Makefile
200
+ ARDUINO_LIBS = SD SD/utility Wire Wire/utility
201
+ ```
202
+
203
+ **Requirement:** *Optional*
204
+
205
+ ----
206
+
207
+ ### BOARD_TAG
208
+
209
+ **Description:**
210
+
211
+ Device type as listed in `boards.txt` or `make show_boards`.
212
+
213
+ **Example:**
214
+
215
+ ```Makefile
216
+ BOARD_TAG = uno or mega2560
217
+ ```
218
+
219
+ **Requirement:** *Mandatory*
220
+
221
+ ----
222
+
223
+ ### MONITOR_PORT
224
+
225
+ **Description:**
226
+
227
+ Path to serial (USB) device used for uploading/serial comms.
228
+
229
+ **Example:**
230
+
231
+ ```Makefile
232
+ # Linux
233
+ MONITOR_PORT = /dev/ttyUSB0
234
+ # or
235
+ MONITOR_PORT = /dev/ttyACM0
236
+ # Mac OS X
237
+ MONITOR_PORT = /dev/cu.usb*
238
+ # Windows
239
+ MONITOR_PORT = com3
240
+ ```
241
+
242
+ **Requirement:** *Mandatory*
243
+
244
+ ----
245
+
246
+ ### USER_LIB_PATH
247
+
248
+ **Description:**
249
+
250
+ Directory where additional libraries are stored.
251
+
252
+ Defaults to `libraries` directory within user's sketchbook.
253
+
254
+ **Example:**
255
+
256
+ ```Makefile
257
+ # Linux
258
+ USER_LIB_PATH = ~/sketchbook/libraries
259
+ # For a random project on *nix
260
+ USER_LIB_PATH = /path/to/my/project
261
+ ```
262
+
263
+ **Requirement:** *Optional*
264
+
265
+ ----
266
+
267
+ ### OBJDIR
268
+
269
+ **Description:**
270
+
271
+ Directory where binaries and compiled files are put.
272
+
273
+ Defaults to `build-$(BOARD_TAG)` in your `Makefile` directory.
274
+
275
+ **Example:**
276
+
277
+ ```Makefile
278
+ OBJDIR = /path/to/my/project-directory/bin
279
+ ```
280
+
281
+ **Requirement:** *Optional*
282
+
283
+ ----
284
+
285
+ ### ALTERNATE_CORE
286
+
287
+ **Description:**
288
+
289
+ Non-standard core for Arduino-unsupported chips like the ATtiny.
290
+
291
+ **Example:**
292
+
293
+ ```Makefile
294
+ # HLT core
295
+ ALTERNATE_CORE = attiny-master
296
+ # tiny core
297
+ ALTERNATE_CORE = arduino-tiny
298
+ # tiny core 2
299
+ ALTERNATE_CORE = tiny2
300
+ ```
301
+
302
+ **Requirement:** *Optional*
303
+
304
+ ----
305
+
306
+ ### ARDUINO_VAR_PATH
307
+
308
+ **Description:**
309
+
310
+ Path to non-standard core's variant files.
311
+
312
+ **Example:**
313
+
314
+ ```Makefile
315
+ ARDUINO_VAR_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
316
+ ```
317
+
318
+ **Requirement:** *Optional*
319
+
320
+ ----
321
+
322
+ ### VARIANT
323
+
324
+ **Description:**
325
+
326
+ Variant of a standard board design.
327
+
328
+ Usually can be auto-detected as `build.variant` from `boards.txt`.
329
+
330
+ **Example:**
331
+
332
+ ```Makefile
333
+ VARIANT = leonardo
334
+ ```
335
+
336
+ **Requirement:** *Optional*
337
+
338
+ ----
339
+
340
+ ### USB_VID
341
+
342
+ **Description:**
343
+
344
+ Override `USB VID` for atmega32u4 boards.
345
+
346
+ Usually can be auto-detected as `build.vid` from `boards.txt`
347
+
348
+ **Example:**
349
+
350
+ ```Makefile
351
+ USB_VID = 0x2341
352
+ ```
353
+
354
+ **Requirement:** *Optional*
355
+
356
+ ----
357
+
358
+ ### USB_PID
359
+
360
+ **Description:**
361
+
362
+ Override `USB PID` for atmega32u4 boards.
363
+
364
+ Usually can be auto-detected as `build.pid` from `boards.txt`
365
+
366
+ **Example:**
367
+
368
+ ```Makefile
369
+ USB_PID = 0x8039
370
+ ```
371
+
372
+ **Requirement:** *Optional*
373
+
374
+ ----
375
+
376
+ ### F_CPU
377
+
378
+ **Description:**
379
+
380
+ CPU speed in Hz
381
+
382
+ Usually can be auto-detected as `build.f_cpu` from `boards.txt`
383
+
384
+ **Example:**
385
+
386
+ ```Makefile
387
+ F_CPU = 8000000L
388
+ ```
389
+
390
+ **Requirement:** *Optional*
391
+
392
+ ----
393
+
394
+ ### HEX_MAXIMUM_SIZE
395
+
396
+ **Description:**
397
+
398
+ Maximum hex file size
399
+
400
+ Usually can be auto-detected as `upload.maximum_size` from `boards.txt`
401
+
402
+ **Example:**
403
+
404
+ ```Makefile
405
+ HEX_MAXIMUM_SIZE = 14336
406
+ ```
407
+
408
+ **Requirement:** *Optional*
409
+
410
+ ----
411
+
412
+ ### MCU
413
+
414
+ **Description:**
415
+
416
+ Microcontroller model.
417
+
418
+ Usually can be auto-detected as `build.mcu` from `boards.txt`
419
+
420
+ **Example:**
421
+
422
+ ```Makefile
423
+ MCU = atmega32u4
424
+ ```
425
+
426
+ **Requirement:** *Optional*
427
+
428
+ ----
429
+
430
+ ### MCU_FLAG_NAME
431
+
432
+ **Description:**
433
+
434
+ Override default MCU flags.
435
+
436
+ Defaults to `mmcu`
437
+
438
+ **Example:**
439
+
440
+ ```Makefile
441
+ MCU_FLAG_NAME = mprocessor
442
+ ```
443
+
444
+ **Requirement:** *Optional*
445
+
446
+ ----
447
+
448
+ ### MONITOR_BAUDRATE
449
+
450
+ **Description:**
451
+
452
+ Baudrate of the serial monitor.
453
+
454
+ Defaults to `9600` if it can't find it in the sketch `Serial.begin()`
455
+
456
+ **Example:**
457
+
458
+ ```Makefile
459
+ MONITOR_BAUDRATE = 57600
460
+ ```
461
+
462
+ **Requirement:** *Optional*
463
+
464
+ ----
465
+
466
+ ## ISP programming variables
467
+
468
+ ### ISP_PROG
469
+
470
+ **Description:**
471
+
472
+ Type of ISP. Either a USB device or ArduinoISP protocol.
473
+
474
+ **Example:**
475
+
476
+ ```Makefile
477
+ ISP_PROG = usbasp
478
+ # or
479
+ ISP_PROG = usbtiny
480
+ # or
481
+ ISP_PROG = stk500v2
482
+ # or
483
+ ISP_PROG = stk500v1
484
+ ```
485
+
486
+ **Requirement:** *Optional*
487
+
488
+ ----
489
+
490
+ ### ISP_PORT
491
+
492
+ **Description:**
493
+
494
+ Device path to ArduinoISP. Not needed for hardware ISP's.
495
+
496
+ **Example:**
497
+
498
+ ```Makefile
499
+ # Linux
500
+ ISP_PORT = /dev/ttyACM0
501
+ ```
502
+
503
+ **Requirement:** *Optional*
504
+
505
+ ----
506
+
507
+ ### ISP_LOCK_FUSE_PRE
508
+
509
+ **Description:**
510
+
511
+ Bootloader unlock bits.
512
+
513
+ Usually can be auto-detected from `boards.txt`
514
+
515
+ **Example:**
516
+
517
+ ```Makefile
518
+ ISP_LOCK_FUSE_PRE = 0x3f
519
+ ```
520
+
521
+ **Requirement:** *Optional*
522
+
523
+ ----
524
+
525
+ ### ISP_LOCK_FUSE_POST
526
+
527
+ **Description:**
528
+
529
+ Bootloader lock bits.
530
+
531
+ Usually can be auto-detected from `boards.txt`
532
+
533
+ **Example:**
534
+
535
+ ```Makefile
536
+ ISP_LOCK_FUSE_POST = 0xcf
537
+ ```
538
+
539
+ **Requirement:** *Optional*
540
+
541
+ ----
542
+
543
+ ### ISP_HIGH_FUSE
544
+
545
+ **Description:**
546
+
547
+ `ISP_LOW_FUSE/ISP_EXT_FUSE` - high/low/extended fuse bits.
548
+
549
+ Usually can be auto-detected from `boards.txt`
550
+
551
+ **Example:**
552
+
553
+ ```Makefile
554
+ ISP_HIGH_FUSE = 0xdf # or 0xff or 0x01
555
+ ```
556
+
557
+ **Requirement:** *Optional*
558
+
559
+ ----
560
+
561
+ ### ISP_EEPROM
562
+
563
+ **Description:**
564
+
565
+ Whether to upload the EEPROM file or not.
566
+
567
+ Defaults to `0`
568
+
569
+ **Example:**
570
+
571
+ ```Makefile
572
+ ISP_EEPROM = 1
573
+ ```
574
+
575
+ **Requirement:** *Optional*
576
+
577
+ ----
578
+
579
+ ## Compiler/Executable variables
580
+
581
+ ### CC_NAME
582
+
583
+ **Description:**
584
+
585
+ C compiler.
586
+
587
+ Defaults to `avr-gcc`
588
+
589
+ **Example:**
590
+
591
+ ```Makefile
592
+ CC_NAME = pic32-gcc
593
+ ```
594
+
595
+ **Requirement:** *Optional*
596
+
597
+ ----
598
+
599
+ ### CXX_NAME
600
+
601
+ **Description:**
602
+
603
+ C++ compiler.
604
+
605
+ Defaults to `avr-g++`
606
+
607
+ **Example:**
608
+
609
+ ```Makefile
610
+ CXX_NAME = pic32-g++
611
+ ```
612
+
613
+ **Requirement:** *Optional*
614
+
615
+ ----
616
+
617
+ ### OBJCOPY_NAME
618
+
619
+ **Description:**
620
+
621
+ Objcopy utility.
622
+
623
+ Defaults to `avr-objcopy`
624
+
625
+ **Example:**
626
+
627
+ ```Makefile
628
+ OBJCOPY_NAME = pic32-objcopy
629
+ ```
630
+
631
+ **Requirement:** *Optional*
632
+
633
+ ----
634
+
635
+ ### OBJDUMP_NAME
636
+
637
+ **Description:**
638
+
639
+ Objdump utility.
640
+
641
+ Defaults to `avr-objdump`
642
+
643
+ **Example:**
644
+
645
+ ```Makefile
646
+ OBJDUMP_NAME = pic32-objdump
647
+ ```
648
+
649
+ **Requirement:** *Optional*
650
+
651
+ ----
652
+
653
+ ### AR_NAME
654
+
655
+ **Description:**
656
+
657
+ Archive utility.
658
+
659
+ Defaults to `avr-ar`
660
+
661
+ **Example:**
662
+
663
+ ```Makefile
664
+ AR_NAME = pic32-ar
665
+ ```
666
+
667
+ **Requirement:** *Optional*
668
+
669
+ ----
670
+
671
+ ### SIZE_NAME
672
+
673
+ **Description:**
674
+
675
+ Size utility.
676
+
677
+ Defaults to `avr-size`
678
+
679
+ **Example:**
680
+
681
+ ```Makefile
682
+ SIZE_NAME = pic32-size
683
+ ```
684
+
685
+ **Requirement:** *Optional*
686
+
687
+ ----
688
+
689
+ ### NM_NAME
690
+
691
+ **Description:**
692
+
693
+ Nm utility.
694
+
695
+ Defaults to `avr-nm`
696
+
697
+ **Example:**
698
+
699
+ ```Makefile
700
+ NM_NAME = pic32-nm
701
+ ```
702
+
703
+ **Requirement:** *Optional*
704
+
705
+ ----
706
+
707
+ ### OPTIMIZATION_LEVEL
708
+
709
+ **Description:**
710
+
711
+ Linker's `-O` flag
712
+
713
+ Defaults to `s`, which shouldn't really be changed as it breaks `SoftwareSerial` and usually results in bigger hex files.
714
+
715
+ **Example:**
716
+
717
+ ```Makefile
718
+ OPTIMIZATION_LEVEL = 3
719
+ ```
720
+
721
+ **Requirement:** *Optional*
722
+
723
+ ----
724
+
725
+ ### CFLAGS_STD
726
+
727
+ **Description:**
728
+
729
+ Flags to pass to the C compiler.
730
+
731
+ Defaults to `-std=gnu99`
732
+
733
+ **Example:**
734
+
735
+ ```Makefile
736
+ <unset as per chipKIT.mk>
737
+ ```
738
+
739
+ **Requirement:** *Optional*
740
+
741
+ ----
742
+
743
+ ### OVERRIDE_EXECUTABLES
744
+
745
+ **Description:**
746
+
747
+ Override the default build tools.
748
+
749
+ If set to `1`, each tool (`CC`, `CXX`, `AS`, `OBJCOPY`, `OBJDUMP`, `AR`, `SIZE`, `NM`) must have its path explicitly defined. See `chipKIT.mk`.
750
+
751
+ **Example:**
752
+
753
+ ```Makefile
754
+ OVERRIDE_EXECUTABLES = 1
755
+ ```
756
+
757
+ **Requirement:** *Optional*
758
+
759
+ ----
760
+
761
+ ### MONITOR_CMD
762
+
763
+ **Description:**
764
+
765
+ Command to run the serial monitor.
766
+
767
+ Defaults to `screen`
768
+
769
+ **Example:**
770
+
771
+ ```Makefile
772
+ MONITOR_CMD = minicom
773
+ ```
774
+
775
+ **Requirement:** *Optional*
776
+
777
+ ----
778
+
779
+ ### PRE_BUILD_HOOK
780
+
781
+ **Description:**
782
+
783
+ Path to shell script to be executed before build. Could be used to automatically
784
+ bump revision number for example.
785
+
786
+ Defaults to `pre-build-hook.sh`
787
+
788
+ **Example:**
789
+
790
+ ```Makefile
791
+ PRE_BUILD_HOOK = ~/bin/bump-revision.sh
792
+ ```
793
+
794
+ **Requirement:** *Optional*
795
+
796
+ ----
797
+
798
+ ## Avrdude setting variables
799
+
800
+ ### AVRDUDE
801
+
802
+ **Description:**
803
+
804
+ Path to `avrdude` utility
805
+
806
+ Usually can be auto-detected within the parent of `AVR_TOOLS_DIR` or in the `$PATH`
807
+
808
+ **Example:**
809
+
810
+ ```Makefile
811
+ AVRDUDE = /usr/bin/avrdude
812
+ ```
813
+
814
+ **Requirement:** *Optional*
815
+
816
+ ----
817
+
818
+ ### AVRDUDE_CONF
819
+
820
+ **Description:**
821
+
822
+ Path to `avrdude.conf` file
823
+
824
+ Usually can be auto-detected within the parent of `AVR_TOOLS_DIR`
825
+
826
+ **Example:**
827
+
828
+ ```Makefile
829
+ AVRDUDE_CONF = /etc/avrdude.conf
830
+ # or
831
+ AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
832
+ ```
833
+
834
+ **Requirement:** *Optional*
835
+
836
+ ----
837
+
838
+ ### AVR_TOOLS_PATH
839
+
840
+ **Description:**
841
+
842
+ Directory where tools such as `avrdude`, `avr-g++`, `avr-gcc` etc. are stored.
843
+
844
+ Usually can be auto-detected from `AVR_TOOLS_DIR/bin`
845
+
846
+ **Example:**
847
+
848
+ ```Makefile
849
+ AVR_TOOLS_PATH = /usr/bin
850
+ # or
851
+ AVR_TOOLS_PATH = /usr/share/arduino/hardware/tools/avr/bin
852
+ ```
853
+
854
+ **Requirement:** *Optional*
855
+
856
+ ----
857
+
858
+ ### ARDUINO_LIB_PATH
859
+
860
+ **Description:**
861
+
862
+ Directory where the standard Arduino libraries are stored.
863
+
864
+ Defaults to `ARDUINO_DIR/libraries`
865
+
866
+ **Example:**
867
+
868
+ ```Makefile
869
+ # Linux
870
+ ARDUINO_LIB_PATH = /usr/share/arduino/libraries
871
+ ```
872
+
873
+ **Requirement:** *Optional*
874
+
875
+ ----
876
+
877
+ ### ARDUINO_CORE_PATH
878
+
879
+ **Description:**
880
+
881
+ Directory where the standard Arduino cores are stored.
882
+
883
+ Defaults to `ARDUINO_DIR/hardware/arduino/cores/arduino`
884
+
885
+ **Example:**
886
+
887
+ ```Makefile
888
+ ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/robot
889
+ ```
890
+
891
+ **Requirement:** *Optional*
892
+
893
+ ----
894
+
895
+ ### ALTERNATE_CORE_PATH
896
+
897
+ **Description:**
898
+
899
+ Path to non-standard cores.
900
+
901
+ Defaults to `ARDUINO_SKETCHBOOK/hardware/ALTERNATE_CORE`
902
+
903
+ **Example:**
904
+
905
+ ```Makefile
906
+ ALTERNATE_CORE_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
907
+ ```
908
+
909
+ **Requirement:** *Optional*
910
+
911
+ ----
912
+
913
+ ### BOARDS_TXT
914
+
915
+ **Description:**
916
+
917
+ Path to `boards.txt`
918
+
919
+ Defaults to `ARDUINO_DIR/hardware/arduino/boards.txt`
920
+
921
+ **Example:**
922
+
923
+ ```Makefile
924
+ BOARD_TXT = ~/sketchbook/hardware/boards.txt
925
+ # or
926
+ BOARD_TXT = /usr/share/arduino/hardware/arduino/boards.txt
927
+ ```
928
+
929
+ **Requirement:** *Optional*
930
+
931
+ ----
932
+
933
+ ### AVRDUDE_ARD_BAUDRATE
934
+
935
+ **Description:**
936
+
937
+ Upload speed
938
+
939
+ Usually can be auto-detected as `upload.speed` from `boards.txt`
940
+
941
+ **Example:**
942
+
943
+ ```Makefile
944
+ AVRDUDE_ARD_BAUDRATE = 19200
945
+ ```
946
+
947
+ **Requirement:** *Optional*
948
+
949
+ ----
950
+
951
+ ### AVRDUDE_ARD_PROGRAMMER
952
+
953
+ **Description:**
954
+
955
+ Upload protocol
956
+
957
+ Usually can be auto-detected as `upload.protocol` from `boards.txt`
958
+
959
+ **Example:**
960
+
961
+ ```Makefile
962
+ AVRDUDE_ARD_PROGRAMMER = stk500v1
963
+ ```
964
+
965
+ **Requirement:** *Optional*
966
+
967
+ ----
968
+
969
+ ### AVRDUDE_ISP_BAUDRATE
970
+
971
+ **Description:**
972
+
973
+ ISP speed if different to `upload.speed`
974
+
975
+ Defaults to same as `AVRDUDE_ARD_BAUDRATE` or `19200`
976
+
977
+ **Example:**
978
+
979
+ ```Makefile
980
+ AVRDUDE_ISP_BAUDRATE = 19200
981
+ ```
982
+
983
+ **Requirement:** *Optional*
984
+
985
+ ----
986
+
987
+ ### AVRDUDE_OPTS
988
+
989
+ **Description:**
990
+
991
+ Options to pass to `avrdude`.
992
+
993
+ Defaults to `-q -V -D` (quiet, don't verify, don't auto-erase). User values are not *ANDed* to the defaults, you have to set each option you require.
994
+
995
+ **Example:**
996
+
997
+ ```Makefile
998
+ AVRDUDE_OPTS = -v
999
+ ```
1000
+
1001
+ **Requirement:** *Optional*
1002
+
1003
+ ----
1004
+
1005
+ ## Bootloader variables
1006
+
1007
+ ### BOOTLOADER_FILE
1008
+
1009
+ **Description:**
1010
+
1011
+ File for bootloader.
1012
+
1013
+ Usually can be auto-detected as `bootloader.file` from `boards.txt`
1014
+
1015
+ **Example:**
1016
+
1017
+ ```Makefile
1018
+ BOOTLOADER_FILE = optiboot_atmega328.hex
1019
+ ```
1020
+
1021
+ **Requirement:** *Optional*
1022
+
1023
+ ----
1024
+
1025
+ ### BOOTLOADER_PATH
1026
+
1027
+ **Description:**
1028
+
1029
+ Relative path to bootloader directory.
1030
+
1031
+ Usually can be auto-detected as a relative `bootloader.path` from `boards.txt`
1032
+
1033
+ **Example:**
1034
+
1035
+ ```Makefile
1036
+ BOOTLOADER_PATH = optiboot
1037
+ # or
1038
+ BOOTLOADER_PATH = arduino:atmega
1039
+ ```
1040
+
1041
+ **Requirement:** *Optional*
1042
+
1043
+ ----
1044
+
1045
+ ### BOOTLOADER_PARENT
1046
+
1047
+ **Description:**
1048
+
1049
+ Absolute path to bootloader file's parent directory.
1050
+
1051
+ Defaults to `/usr/share/arduino/hardware/arduino/bootloaders` (Linux)
1052
+
1053
+ **Example:**
1054
+
1055
+ ```Makefile
1056
+ BOOTLOADER_PARENT = ~/sketchbook/hardware/promicro/bootloaders
1057
+ BOOTLOADER_PATH = caterina
1058
+ BOOTLOADER_FILE = Caterina-promicro16.hex
1059
+ ```
1060
+
1061
+ Would result in an absolute path to the bootloader hex file of `~/sketchbook/hardware/promicro/bootloaders/caterina/Caterina-promicro16.hex`
1062
+
1063
+ **Requirement:** *Optional, unless BOOTLOADER_FILE and/or BOOTLOADER_PATH are user-defined*
1064
+
1065
+ ----
1066
+
1067
+ ## ChipKIT variables
1068
+
1069
+ ### MPIDE_DIR
1070
+
1071
+ **Description:**
1072
+
1073
+ Path to chipKIT MP IDE
1074
+
1075
+ Usually can be auto-detected as `AUTO_MPIDE_DIR` from the defaults `/usr/share/mpide` (Linux) or `/Applications/Mpide.app/Contents/Resources/Java` (OSX)
1076
+
1077
+ **Example:**
1078
+
1079
+ ```Makefile
1080
+ MPIDE_DIR = ~/mpide
1081
+ ```
1082
+
1083
+ **Requirement:** *Optional*
1084
+
1085
+ ----
1086
+
1087
+ ### MPIDE_PREFERENCES_PATH
1088
+
1089
+ **Description:**
1090
+
1091
+ Path to chipKIT `preferences.txt` file.
1092
+
1093
+ Usually can be auto-detected as `AUTO_MPIDE_PREFERENCES_PATH` from the defaults `~/.mpide/preferences.txt` (Linux) or `~/Library/Mpide/preferences.txt` (OSX)
1094
+
1095
+ **Example:**
1096
+
1097
+ ```Makefile
1098
+ MPIDE_PREFERENCES_PATH = ~/chipkit/preferences.txt
1099
+ ```
1100
+
1101
+ **Requirement:** *Optional*