3 # Copyright (C) Dean Camera, 2012.
5 # dean [at] fourwalledcubicle [dot] com
9 LUFA_BUILD_MODULES
+= AVRDUDE
10 LUFA_BUILD_TARGETS
+= avrdude avrdude-ee
11 LUFA_BUILD_MANDATORY_VARS
+= MCU TARGET
12 LUFA_BUILD_OPTIONAL_VARS
+= AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS
13 LUFA_BUILD_PROVIDED_VARS
+=
14 LUFA_BUILD_PROVIDED_MACROS
+=
16 # -----------------------------------------------------------------------------
17 # LUFA AVRDUDE Programmer Buildsystem Makefile Module.
18 # -----------------------------------------------------------------------------
20 # Provides a set of targets to re-program a device using the open source
22 # -----------------------------------------------------------------------------
25 # avrdude - Program target FLASH with application using
27 # avrdude-ee - Program target EEPROM with application data
30 # MANDATORY PARAMETERS:
32 # MCU - Microcontroller device model name
33 # TARGET - Application name
35 # OPTIONAL PARAMETERS:
37 # AVRDUDE_PROGRAMMER - Name of programming hardware to use
38 # AVRDUDE_PORT - Name of communication port to use
39 # AVRDUDE_FLAGS - Flags to pass to avr-dude
49 # -----------------------------------------------------------------------------
53 ERROR_IF_UNSET ?
= $(if
$(filter undefined
, $(origin $(strip $(1)))), $(error Makefile
$(strip $(1)) value not set
))
54 ERROR_IF_EMPTY ?
= $(if
$(strip $($(strip $(1)))), , $(error Makefile
$(strip $(1)) option cannot be blank
))
55 ERROR_IF_NONBOOL ?
= $(if
$(filter Y N
, $($(strip $(1)))), , $(error Makefile
$(strip $(1)) option must be Y or N
))
57 # Default values of optionally user-supplied variables
58 AVRDUDE_PROGRAMMER ?
= jtagicemkii
62 # Sanity check user supplied values
63 $(foreach MANDATORY_VAR
, $(LUFA_BUILD_MANDATORY_VARS
), $(call ERROR_IF_UNSET
, $(MANDATORY_VAR
)))
64 $(call ERROR_IF_EMPTY
, MCU
)
65 $(call ERROR_IF_EMPTY
, TARGET
)
66 $(call ERROR_IF_EMPTY
, AVRDUDE_PROGRAMMER
)
67 $(call ERROR_IF_EMPTY
, AVRDUDE_PORT
)
70 MSG_AVRDUDE_CMD
:= ' [AVRDUDE] :'
72 # Construct base avrdude command flags
73 BASE_AVRDUDE_FLAGS
:= -p
$(MCU
) -P
$(AVRDUDE_PORT
) -c
$(AVRDUDE_PROGRAMMER
)
75 avrdude
: $(TARGET
).hex
$(MAKEFILE_LIST
)
76 @echo
$(MSG_AVRDUDE_CMD
) Programming device
\"$(MCU
)\" FLASH with settings
\"$(AVRDUDE_FLASH_FLAGS
)\" using
\"$(AVRDUDE_PROGRAMMER
)\" on port
\"$(AVRDUDE_PORT
)\"
77 avrdude
$(BASE_AVRDUDE_FLAGS
) -U flash
:w
:$< $(AVRDUDE_FLAGS
)
79 avrdude-ee
: $(TARGET
).eep
$(MAKEFILE_LIST
)
80 @echo
$(MSG_AVRDUDE_CMD
) Programming device
\"$(MCU
)\" EEPROM with settings
\"$(AVRDUDE_EEP_FLAGS
)\" using
\"$(AVRDUDE_PROGRAMMER
)\" on port
\"$(AVRDUDE_PORT
)\"
81 avrdude
$(BASE_AVRDUDE_FLAGS
) -U eeprom
:w
:$< $(AVRDUDE_FLAGS
)
83 # Phony build targets for this module
84 .PHONY
: avrdude avrdude-ee