2012-06-07 22:49:47 +02:00
#
# LUFA Library
# Copyright (C) Dean Camera, 2012.
#
# dean [at] fourwalledcubicle [dot] com
# www.lufa-lib.org
#
2012-06-10 17:31:03 +02:00
LUFA_BUILD_MODULES += AVRDUDE
LUFA_BUILD_TARGETS += avrdude avrdude-ee
LUFA_BUILD_MANDATORY_VARS += MCU TARGET
LUFA_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS
LUFA_BUILD_PROVIDED_VARS +=
LUFA_BUILD_PROVIDED_MACROS +=
2012-06-07 22:49:47 +02:00
# -----------------------------------------------------------------------------
# LUFA AVRDUDE Programmer Buildsystem Makefile Module.
# -----------------------------------------------------------------------------
# DESCRIPTION:
# Provides a set of targets to re-program a device using the open source
# avr-dude utility.
# -----------------------------------------------------------------------------
# TARGETS:
#
# avrdude - Program target FLASH with application using
# avrdude
# avrdude-ee - Program target EEPROM with application data
# using avrdude
#
# MANDATORY PARAMETERS:
#
# MCU - Microcontroller device model name
# TARGET - Application name
#
# OPTIONAL PARAMETERS:
#
# AVRDUDE_PROGRAMMER - Name of programming hardware to use
# AVRDUDE_PORT - Name of communication port to use
# AVRDUDE_FLAGS - Flags to pass to avr-dude
#
2012-06-10 17:31:03 +02:00
# PROVIDED VARIABLES:
#
# (None)
#
# PROVIDED MACROS:
#
# (None)
#
2012-06-07 22:49:47 +02:00
# -----------------------------------------------------------------------------
2012-06-21 22:06:10 +02:00
SHELL = /bin/sh
ERROR_IF_UNSET ?= $( if $( filter undefined, $( origin $( strip $( 1) ) ) ) , $( error Makefile $( strip $( 1) ) value not set ) )
ERROR_IF_EMPTY ?= $( if $( strip $( $( strip $( 1) ) ) ) , , $( error Makefile $( strip $( 1) ) option cannot be blank) )
ERROR_IF_NONBOOL ?= $( if $( filter Y N, $( $( strip $( 1) ) ) ) , , $( error Makefile $( strip $( 1) ) option must be Y or N) )
2012-06-07 22:49:47 +02:00
# Default values of optionally user-supplied variables
AVRDUDE_PROGRAMMER ?= jtagicemkii
AVRDUDE_PORT ?= usb
AVRDUDE_FLAGS ?=
2012-06-10 10:06:13 +02:00
# Sanity check user supplied values
$( foreach MANDATORY_VAR , $ ( LUFA_BUILD_MANDATORY_VARS ) , $ ( call ERROR_IF_UNSET , $ ( MANDATORY_VAR ) ) )
$( call ERROR_IF_EMPTY , MCU )
$( call ERROR_IF_EMPTY , TARGET )
$( call ERROR_IF_EMPTY , AVRDUDE_PROGRAMMER )
$( call ERROR_IF_EMPTY , AVRDUDE_PORT )
2012-06-07 22:49:47 +02:00
# Output Messages
MSG_AVRDUDE_CMD := ' [AVRDUDE] :'
2012-06-17 13:40:50 +02:00
# Construct base avrdude command flags
BASE_AVRDUDE_FLAGS := -p $( MCU) -P $( AVRDUDE_PORT) -c $( AVRDUDE_PROGRAMMER)
2012-06-07 22:49:47 +02:00
avrdude : $( TARGET ) .hex $( MAKEFILE_LIST )
@echo $( MSG_AVRDUDE_CMD) Programming device \" $( MCU) \" FLASH with settings \" $( AVRDUDE_FLASH_FLAGS) \" using \" $( AVRDUDE_PROGRAMMER) \" on port \" $( AVRDUDE_PORT) \"
2012-06-17 13:40:50 +02:00
avrdude $( BASE_AVRDUDE_FLAGS) -U flash:w:$< $( AVRDUDE_FLAGS)
2012-06-07 22:49:47 +02:00
avrdude-ee : $( TARGET ) .eep $( MAKEFILE_LIST )
@echo $( MSG_AVRDUDE_CMD) Programming device \" $( MCU) \" EEPROM with settings \" $( AVRDUDE_EEP_FLAGS) \" using \" $( AVRDUDE_PROGRAMMER) \" on port \" $( AVRDUDE_PORT) \"
2012-06-17 13:40:50 +02:00
avrdude $( BASE_AVRDUDE_FLAGS) -U eeprom:w:$< $( AVRDUDE_FLAGS)
2012-06-07 22:49:47 +02:00
# Phony build targets for this module
.PHONY : avrdude avrdude -ee