The following are the different variables that can be overwritten in the user makefiles.
- Global variables
- Installation/Directory variables
- Arduino IDE variables
- Sketch related variables
- ISP programming variables
- Compiler/Executable variables
- Avrdude setting variables
- Bootloader variables
- ChipKIT variables
Description:
Suppress printing of Arduino-Makefile configuration.
Defaults to 0
(unset/disabled).
Example:
ARDUINO_QUIET = 1
Requirement: Optional
Description:
Directory where the *.mk
files are stored.
Usually can be auto-detected as AUTO_ARDUINO_DIR
(parent of Arduino.mk
).
Example:
ARDMK_DIR = /usr/share/arduino
Requirement: Optional
Description:
Directory where tools such as avrdude
, avr-g++
, avr-gcc
, etc. are stored in the bin/
subdirectory.
Usually can be auto-detected from $PATH
as SYSTEMPATH_AVR_TOOLS_DIR
or as BUNDLED_AVR_TOOLS_DIR
within the Arduino distribution.
Example:
AVR_TOOLS_DIR = /usr
# or
AVR_TOOLS_DIR = /usr/share/arduino/hardware/tools/avr
Requirement: Optional
Description:
Command to reset the MCU.
Defaults to ard-reset-arduino
with the extra --caterina
flag for atmega32u4 boards.
Example:
RESET_CMD = ~/gertduino/reset
Requirement: Optional
Description:
Directory where the Arduino IDE and/or core files are stored.
Example:
# Linux
ARDUINO_DIR = /usr/share/arduino
# Mac OS X
ARDUINO_DIR = /Applications/Arduino.app/Contents/Resources/Java
Requirement: Optional
Description:
Version string for Arduino IDE and/or core.
Usually can be auto-detected as AUTO_ARDUINO_VERSION
from /usr/share/arduino/lib/version.txt
Example:
ARDUINO_VERSION = 105
Requirement: Optional
Description:
Architecture for Arduino 1.5
Defaults to unset for 1.0 or avr
for 1.5
Example:
ARCHITECTURE = sam
Requirement: Optional
Description:
Board vendor/maintainer.
Defaults to arduino
Example:
VENDOR = sparkfun
Requirement: Optional
Description:
Path to sketchbook
directory.
Usually can be auto-detected from the Arduino preferences.txt
file or the default ~/sketchbook
Example:
ARDUINO_SKETCHBOOK = ~/sketches
Requirement: Optional
Description:
Path to Arduino preferences.txt
file.
Usually can be auto-detected as AUTO_ARDUINO_PREFERENCES
from the defaults:
- on Linux :
~/.arduino/preferences.txt
- on Mac OS X :
~/Library/Arduino/preferences.txt
Example:
ARDUINO_PREFERENCES_PATH = ~/sketches/preferences.txt
Requirement: Optional
Description:
Path to standard Arduino core files.
Example:
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/arduino
Requirement: Optional
Description:
Any libraries you intend to include.
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.
Example:
ARDUINO_LIBS = SD SD/utility Wire Wire/utility
Requirement: Optional
Description:
Device type as listed in boards.txt
or make show_boards
.
Example:
BOARD_TAG = uno or mega2560
Requirement: Mandatory
Description:
1.5 submenu as listed in boards.txt
Example:
# diecimila.name=Arduino Duemilanove or Diecimila
BOARD_TAG=diecimila
# diecimila.menu.cpu.atmega168=ATmega168
BOARD_SUB=atmega168
Requirement: Mandatory for 1.5 if using a submenu CPU
Description:
Path to serial (USB) device used for uploading/serial comms.
Example:
# Linux
MONITOR_PORT = /dev/ttyUSB0
# or
MONITOR_PORT = /dev/ttyACM0
# Mac OS X
MONITOR_PORT = /dev/cu.usb*
# Windows
MONITOR_PORT = com3
Requirement: Mandatory
Description:
Directory where additional libraries are stored.
Defaults to libraries
directory within user's sketchbook.
Example:
# Linux
USER_LIB_PATH = ~/sketchbook/libraries
# For a random project on *nix
USER_LIB_PATH = /path/to/my/project
Requirement: Optional
Description:
Directory where binaries and compiled files are put.
Defaults to build-$(BOARD_TAG)
in your Makefile
directory.
Example:
OBJDIR = /path/to/my/project-directory/bin
Requirement: Optional
Description:
Non-standard core for Arduino-unsupported chips like the ATtiny.
Example:
# HLT core
ALTERNATE_CORE = attiny-master
# tiny core
ALTERNATE_CORE = arduino-tiny
# tiny core 2
ALTERNATE_CORE = tiny2
Requirement: Optional
Description:
Path to non-standard core's variant files.
Example:
ARDUINO_VAR_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
Requirement: Optional
Description:
Variant of a standard board design.
Usually can be auto-detected as build.variant
from boards.txt
.
Example:
VARIANT = leonardo
Requirement: Optional
Description:
Override USB VID
for atmega32u4 boards.
Usually can be auto-detected as build.vid
from boards.txt
Example:
USB_VID = 0x2341
Requirement: Optional
Description:
Override USB PID
for atmega32u4 boards.
Usually can be auto-detected as build.pid
from boards.txt
Example:
USB_PID = 0x8039
Requirement: Optional
Description:
CPU speed in Hz
Usually can be auto-detected as build.f_cpu
from boards.txt
Example:
F_CPU = 8000000L
Requirement: Optional
Description:
Maximum hex file size
Usually can be auto-detected as upload.maximum_size
from boards.txt
Example:
HEX_MAXIMUM_SIZE = 14336
Requirement: Optional
Description:
Microcontroller model.
Usually can be auto-detected as build.mcu
from boards.txt
Example:
MCU = atmega32u4
Requirement: Optional
Description:
Override default MCU flags.
Defaults to mmcu
Example:
MCU_FLAG_NAME = mprocessor
Requirement: Optional
Description:
Baudrate of the serial monitor.
Defaults to 9600
if it can't find it in the sketch Serial.begin()
Example:
MONITOR_BAUDRATE = 57600
Requirement: Optional
Description:
Type of ISP. Either a USB device or ArduinoISP protocol.
Example:
ISP_PROG = usbasp
# or
ISP_PROG = usbtiny
# or
ISP_PROG = stk500v2
# or
ISP_PROG = stk500v1
Requirement: Optional
Description:
Device path to ArduinoISP. Not needed for hardware ISP's.
Example:
# Linux
ISP_PORT = /dev/ttyACM0
Requirement: Optional
Description:
Bootloader unlock bits.
Usually can be auto-detected from boards.txt
Example:
ISP_LOCK_FUSE_PRE = 0x3f
Requirement: Optional
Description:
Bootloader lock bits.
Usually can be auto-detected from boards.txt
Example:
ISP_LOCK_FUSE_POST = 0xcf
Requirement: Optional
Description:
ISP_LOW_FUSE/ISP_EXT_FUSE
- high/low/extended fuse bits.
Usually can be auto-detected from boards.txt
Example:
ISP_HIGH_FUSE = 0xdf # or 0xff or 0x01
Requirement: Optional
Description:
Whether to upload the EEPROM file or not.
Defaults to 0
Example:
ISP_EEPROM = 1
Requirement: Optional
Description:
C compiler.
Defaults to avr-gcc
Example:
CC_NAME = pic32-gcc
Requirement: Optional
Description:
C++ compiler.
Defaults to avr-g++
Example:
CXX_NAME = pic32-g++
Requirement: Optional
Description:
Objcopy utility.
Defaults to avr-objcopy
Example:
OBJCOPY_NAME = pic32-objcopy
Requirement: Optional
Description:
Objdump utility.
Defaults to avr-objdump
Example:
OBJDUMP_NAME = pic32-objdump
Requirement: Optional
Description:
Archive utility.
Defaults to avr-ar
Example:
AR_NAME = pic32-ar
Requirement: Optional
Description:
Size utility.
Defaults to avr-size
Example:
SIZE_NAME = pic32-size
Requirement: Optional
Description:
Nm utility.
Defaults to avr-nm
Example:
NM_NAME = pic32-nm
Requirement: Optional
Description:
Linker's -O
flag
Defaults to s
, which shouldn't really be changed as it breaks SoftwareSerial
and usually results in bigger hex files.
Example:
OPTIMIZATION_LEVEL = 3
Requirement: Optional
Description:
Flags to pass to the C compiler.
Defaults to -std=gnu99
Example:
<unset as per chipKIT.mk>
Requirement: Optional
Description:
Override the default build tools.
If set to 1
, each tool (CC
, CXX
, AS
, OBJCOPY
, OBJDUMP
, AR
, SIZE
, NM
) must have its path explicitly defined. See chipKIT.mk
.
Example:
OVERRIDE_EXECUTABLES = 1
Requirement: Optional
Description:
Command to run the serial monitor.
Defaults to screen
Example:
MONITOR_CMD = minicom
Requirement: Optional
Description:
Path to shell script to be executed before build. Could be used to automatically bump revision number for example.
Defaults to pre-build-hook.sh
Example:
PRE_BUILD_HOOK = ~/bin/bump-revision.sh
Requirement: Optional
Description:
Path to avrdude
utility
Usually can be auto-detected within the parent of AVR_TOOLS_DIR
or in the $PATH
Example:
AVRDUDE = /usr/bin/avrdude
Requirement: Optional
Description:
Path to avrdude.conf
file
Usually can be auto-detected within the parent of AVR_TOOLS_DIR
Example:
AVRDUDE_CONF = /etc/avrdude.conf
# or
AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
Requirement: Optional
Description:
Directory where tools such as avrdude
, avr-g++
, avr-gcc
etc. are stored.
Usually can be auto-detected from AVR_TOOLS_DIR/bin
Example:
AVR_TOOLS_PATH = /usr/bin
# or
AVR_TOOLS_PATH = /usr/share/arduino/hardware/tools/avr/bin
Requirement: Optional
Description:
Directory where the standard Arduino libraries are stored.
Defaults to ARDUINO_DIR/libraries
Example:
# Linux
ARDUINO_LIB_PATH = /usr/share/arduino/libraries
Requirement: Optional
Description:
Directory where the standard Arduino cores are stored.
Defaults to ARDUINO_DIR/hardware/arduino/cores/arduino
Example:
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/robot
Requirement: Optional
Description:
Path to non-standard cores.
Defaults to ARDUINO_SKETCHBOOK/hardware/ALTERNATE_CORE
Example:
ALTERNATE_CORE_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
Requirement: Optional
Description:
Path to boards.txt
Defaults to ARDUINO_DIR/hardware/arduino/boards.txt
Example:
BOARD_TXT = ~/sketchbook/hardware/boards.txt
# or
BOARD_TXT = /usr/share/arduino/hardware/arduino/boards.txt
Requirement: Optional
Description:
Upload speed
Usually can be auto-detected as upload.speed
from boards.txt
Example:
AVRDUDE_ARD_BAUDRATE = 19200
Requirement: Optional
Description:
Upload protocol
Usually can be auto-detected as upload.protocol
from boards.txt
Example:
AVRDUDE_ARD_PROGRAMMER = stk500v1
Requirement: Optional
Description:
ISP speed if different to upload.speed
Defaults to same as AVRDUDE_ARD_BAUDRATE
or 19200
Example:
AVRDUDE_ISP_BAUDRATE = 19200
Requirement: Optional
Description:
Options to pass to avrdude
.
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.
Example:
AVRDUDE_OPTS = -v
Requirement: Optional
Description:
File for bootloader.
Usually can be auto-detected as bootloader.file
from boards.txt
Example:
BOOTLOADER_FILE = optiboot_atmega328.hex
Requirement: Optional
Description:
Relative path to bootloader directory.
Usually can be auto-detected as a relative bootloader.path
from boards.txt
Deprecated in 1.5, now part of bootloader.file
Example:
BOOTLOADER_PATH = optiboot
# or
BOOTLOADER_PATH = arduino:atmega
Requirement: Optional
Description:
Absolute path to bootloader file's parent directory.
Defaults to /usr/share/arduino/hardware/arduino/bootloaders
(Linux)
Example:
BOOTLOADER_PARENT = ~/sketchbook/hardware/promicro/bootloaders
BOOTLOADER_PATH = caterina
BOOTLOADER_FILE = Caterina-promicro16.hex
Would result in an absolute path to the bootloader hex file of ~/sketchbook/hardware/promicro/bootloaders/caterina/Caterina-promicro16.hex
Requirement: Optional, unless BOOTLOADER_FILE and/or BOOTLOADER_PATH are user-defined
Description:
Path to chipKIT MP IDE
Usually can be auto-detected as AUTO_MPIDE_DIR
from the defaults /usr/share/mpide
(Linux) or /Applications/Mpide.app/Contents/Resources/Java
(OSX)
Example:
MPIDE_DIR = ~/mpide
Requirement: Optional
Description:
Path to chipKIT preferences.txt
file.
Usually can be auto-detected as AUTO_MPIDE_PREFERENCES_PATH
from the defaults ~/.mpide/preferences.txt
(Linux) or ~/Library/Mpide/preferences.txt
(OSX)
Example:
MPIDE_PREFERENCES_PATH = ~/chipkit/preferences.txt
Requirement: Optional