1PRG            = demo
2OBJ            = demo.o
3#MCU_TARGET     = at90s2313
4#MCU_TARGET     = at90s2333
5#MCU_TARGET     = at90s4414
6#MCU_TARGET     = at90s4433
7#MCU_TARGET     = at90s4434
8#MCU_TARGET     = at90s8515
9#MCU_TARGET     = at90s8535
10#MCU_TARGET     = atmega128
11#MCU_TARGET     = atmega1280
12#MCU_TARGET     = atmega1281
13#MCU_TARGET     = atmega1284p
14#MCU_TARGET     = atmega16
15#MCU_TARGET     = atmega163
16#MCU_TARGET     = atmega164p
17#MCU_TARGET     = atmega165
18#MCU_TARGET     = atmega165p
19#MCU_TARGET     = atmega168
20#MCU_TARGET     = atmega169
21#MCU_TARGET     = atmega169p
22#MCU_TARGET     = atmega2560
23#MCU_TARGET     = atmega2561
24#MCU_TARGET     = atmega32
25#MCU_TARGET     = atmega324p
26#MCU_TARGET     = atmega325
27#MCU_TARGET     = atmega3250
28#MCU_TARGET     = atmega329
29#MCU_TARGET     = atmega3290
30#MCU_TARGET     = atmega32u4
31#MCU_TARGET     = atmega48
32#MCU_TARGET     = atmega64
33#MCU_TARGET     = atmega640
34#MCU_TARGET     = atmega644
35#MCU_TARGET     = atmega644p
36#MCU_TARGET     = atmega645
37#MCU_TARGET     = atmega6450
38#MCU_TARGET     = atmega649
39#MCU_TARGET     = atmega6490
40MCU_TARGET     = atmega8
41#MCU_TARGET     = atmega8515
42#MCU_TARGET     = atmega8535
43#MCU_TARGET     = atmega88
44#MCU_TARGET     = attiny2313
45#MCU_TARGET     = attiny24
46#MCU_TARGET     = attiny25
47#MCU_TARGET     = attiny26
48#MCU_TARGET     = attiny261
49#MCU_TARGET     = attiny44
50#MCU_TARGET     = attiny45
51#MCU_TARGET     = attiny461
52#MCU_TARGET     = attiny84
53#MCU_TARGET     = attiny85
54#MCU_TARGET     = attiny861
55OPTIMIZE       = -O2
56
57DEFS           =
58LIBS           =
59
60# You should not have to change anything below here.
61
62CC             = avr-gcc
63
64# Override is only needed by avr-lib build system.
65
66override CFLAGS        = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS)
67override LDFLAGS       = -Wl,-Map,$(PRG).map
68
69OBJCOPY        = avr-objcopy
70OBJDUMP        = avr-objdump
71
72all: $(PRG).elf lst text eeprom
73
74$(PRG).elf: $(OBJ)
75	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
76
77# dependency:
78demo.o: demo.c iocompat.h
79
80clean:
81	rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak
82	rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
83
84lst:  $(PRG).lst
85
86%.lst: %.elf
87	$(OBJDUMP) -h -S $< > $@
88
89# Rules for building the .text rom images
90
91text: hex bin srec
92
93hex:  $(PRG).hex
94bin:  $(PRG).bin
95srec: $(PRG).srec
96
97%.hex: %.elf
98	$(OBJCOPY) -j .text -j .data -O ihex $< $@
99
100%.srec: %.elf
101	$(OBJCOPY) -j .text -j .data -O srec $< $@
102
103%.bin: %.elf
104	$(OBJCOPY) -j .text -j .data -O binary $< $@
105
106# Rules for building the .eeprom rom images
107
108eeprom: ehex ebin esrec
109
110ehex:  $(PRG)_eeprom.hex
111ebin:  $(PRG)_eeprom.bin
112esrec: $(PRG)_eeprom.srec
113
114%_eeprom.hex: %.elf
115	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \
116	|| { echo empty $@ not generated; exit 0; }
117
118%_eeprom.srec: %.elf
119	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \
120	|| { echo empty $@ not generated; exit 0; }
121
122%_eeprom.bin: %.elf
123	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \
124	|| { echo empty $@ not generated; exit 0; }
125
126# Every thing below here is used by avr-libc's build system and can be ignored
127# by the casual user.
128
129FIG2DEV                 = fig2dev
130EXTRA_CLEAN_FILES       = *.hex *.bin *.srec
131
132dox: eps png pdf
133
134eps: $(PRG).eps
135png: $(PRG).png
136pdf: $(PRG).pdf
137
138%.eps: %.fig
139	$(FIG2DEV) -L eps $< $@
140
141%.pdf: %.fig
142	$(FIG2DEV) -L pdf $< $@
143
144%.png: %.fig
145	$(FIG2DEV) -L png $< $@
146
147