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