]> git.donarmstrong.com Git - qmk_firmware.git/blob - protocol/lufa/LUFA-120730/LUFA/Build/lufa_atprogram.mk
Squashed 'tmk_core/' content from commit 05caacc
[qmk_firmware.git] / protocol / lufa / LUFA-120730 / LUFA / Build / lufa_atprogram.mk
1 #\r
2 #             LUFA Library\r
3 #     Copyright (C) Dean Camera, 2012.\r
4 #\r
5 #  dean [at] fourwalledcubicle [dot] com\r
6 #           www.lufa-lib.org\r
7 #\r
8 \r
9 LUFA_BUILD_MODULES         += ATPROGRAM\r
10 LUFA_BUILD_TARGETS         += atprogram atprogram-ee\r
11 LUFA_BUILD_MANDATORY_VARS  += MCU TARGET\r
12 LUFA_BUILD_OPTIONAL_VARS   += ATPROGRAM_PROGRAMMER ATPROGRAM_INTERFACE ATPROGRAM_PORT\r
13 LUFA_BUILD_PROVIDED_VARS   += \r
14 LUFA_BUILD_PROVIDED_MACROS += \r
15 \r
16 # -----------------------------------------------------------------------------\r
17 #             LUFA ATPROGRAM Programmer Buildsystem Makefile Module.\r
18 # -----------------------------------------------------------------------------\r
19 # DESCRIPTION:\r
20 #   Provides a set of targets to re-program a device using the Atmel atprogram\r
21 #   utility in AVR Studio 5.x and Atmel Studio 6.0 onwards.\r
22 # -----------------------------------------------------------------------------\r
23 # TARGETS:\r
24 #\r
25 #    atprogram                 - Program target FLASH with application using\r
26 #                                atprogram\r
27 #    atprogram-ee              - Program target EEPROM with application data\r
28 #                                using atprogram\r
29 #\r
30 # MANDATORY PARAMETERS:\r
31 #\r
32 #    MCU                       - Microcontroller device model name\r
33 #    TARGET                    - Application name\r
34 #\r
35 # OPTIONAL PARAMETERS:\r
36 #\r
37 #    ATPROGRAM_PROGRAMMER      - Name of programming hardware to use\r
38 #    ATPROGRAM_INTERFACE       - Name of programming interface to use\r
39 #    ATPROGRAM_PORT            - Name of communication port to use\r
40 #\r
41 # PROVIDED VARIABLES:\r
42 #\r
43 #    (None)\r
44 #\r
45 # PROVIDED MACROS:\r
46 #\r
47 #    (None)\r
48 #\r
49 # -----------------------------------------------------------------------------\r
50 \r
51 SHELL = /bin/sh\r
52 \r
53 ERROR_IF_UNSET   ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set))\r
54 ERROR_IF_EMPTY   ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank))\r
55 ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N))\r
56 \r
57 # Default values of optionally user-supplied variables\r
58 ATPROGRAM_PROGRAMMER ?= jtagice3\r
59 ATPROGRAM_INTERFACE  ?= jtag\r
60 ATPROGRAM_PORT       ?= \r
61 \r
62 # Sanity check user supplied values\r
63 $(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR)))\r
64 $(call ERROR_IF_EMPTY, MCU)\r
65 $(call ERROR_IF_EMPTY, TARGET)\r
66 $(call ERROR_IF_EMPTY, ATPROGRAM_PROGRAMMER)\r
67 $(call ERROR_IF_EMPTY, ATPROGRAM_INTERFACE)\r
68 \r
69 # Output Messages\r
70 MSG_ATPROGRAM_CMD    := ' [ATPRGRM] :'\r
71 \r
72 # Construct base atprogram command flags\r
73 BASE_ATPROGRAM_FLAGS := --tool $(ATPROGRAM_PROGRAMMER) --interface $(ATPROGRAM_INTERFACE) --device $(MCU)\r
74 ifneq ($(ATPROGRAM_PORT),)\r
75    BASE_ATPROGRAM_FLAGS += --port $(ATPROGRAM_PORT)\r
76 endif\r
77 \r
78 # Construct the flags to use for the various memory spaces\r
79 ifeq ($(ARCH), AVR8)\r
80    ATPROGRAM_FLASH_FLAGS  := --chiperase --flash\r
81    ATPROGRAM_EEPROM_FLAGS := --eeprom\r
82 else ifeq ($(ARCH), XMEGA)\r
83    ATPROGRAM_FLASH_FLAGS  := --erase --flash\r
84    ATPROGRAM_EEPROM_FLAGS := --eeprom\r
85 else ifeq ($(ARCH), UC3)\r
86    ATPROGRAM_FLASH_FLAGS  := --erase\r
87    ATPROGRAM_EEPROM_FLAGS := --eeprom\r
88 else\r
89    $(error Unsupported architecture "$(ARCH)")\r
90 endif\r
91 \r
92 atprogram: $(TARGET).elf $(MAKEFILE_LIST)\r
93         @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" FLASH using \"$(ATPROGRAM_PROGRAMMER)\"\r
94         atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_FLASH_FLAGS) --file $<\r
95 \r
96 atprogram-ee: $(TARGET).elf $(MAKEFILE_LIST)\r
97         @echo $(MSG_ATPROGRAM_CMD) Programming device \"$(MCU)\" EEPROM using \"$(ATPROGRAM_PROGRAMMER)\"\r
98         atprogram $(BASE_ATPROGRAM_FLAGS) program $(ATPROGRAM_EEPROM_FLAGS) --file $<\r
99         \r
100 # Phony build targets for this module\r
101 .PHONY: atprogram atprogram-ee\r