Skript file: /~heha/basteln/m/servo/servo.zip/servo15/Makefile

# Makefile für 15-Servo-Steuerung mit ATmega8, ATmegaX8 oder ATtinyX8
PROJECT = servo15
OBJECTS = main.o
DEVICE = atmega8
F_CPU = 8000000

# Compilerschalter
CFLAGS = -DF_CPU=$(F_CPU) -Os -Wall -Wno-parentheses

# Linkerschalter
# LDFLAGS = -Wl,--relax -Wl,--gc-sections

CC = avr-gcc -mmcu=$(DEVICE)
OHEX = avr-objcopy -O ihex
DUMP = avr-objdump -d
SIZE = avr-size --mcu=$(DEVICE)
PROG = avrdude -p $(DEVICE) -c pony-stk200 -P lpt1 -i 10

all: $(PROJECT).hex $(PROJECT).lst

# Compile+link: „Ausführbare“ Datei generieren
%.o: %.S Makefile
	$(CC) $(CFLAGS) -c $< -o $@ 

%.o: %.cpp Makefile
	$(CC) $(CFLAGS) -c $< -o $@ 

%.o: %.c Makefile
	$(CC) $(CFLAGS) -c $< -o $@ 

%.elf: $(OBJECTS)
	$(CC)  $(LDFLAGS) $^ -o $@
	$(SIZE) $@

# Datei für das Programmierprogramm erzeugen
%.hex: %.elf
#	$(OHEX) -j .text -j .data -j .eeprom -j .fuse -j .signature $< $@
	$(OHEX) -j .text -j .data $< $@
	$(OHEX) -j .eeprom --change-section-lma .eeprom=0 $< $(PROJECT).eep

# Listing-Datei generieren
%.lst: %.elf
	$(DUMP) $< > $@

# Chip-Programmierung
program:
#	avrpp -8 -ff $(PROJECT).hex
ifeq "$(DEVICE)" "atmega8"
	$(PROG) -e -U flash:w:$(PROJECT).hex -U eeprom:w:$(PROJECT).eep -U hfuse:w:0xD9:m -U lfuse:w:0xE4:m
else
	$(PROG) -e -U flash:w:$(PROJECT).hex -U eeprom:w:$(PROJECT).eep -U hfuse:w:0xDF:m -U lfuse:w:0xE2:m
endif

fuse:
ifeq "$(DEVICE)" "atmega8"
	$(PROG) -U hfuse:w:0xD9:m -U lfuse:w:0xE4:m
else
	$(PROG) -U hfuse:w:0xDF:m -U lfuse:w:0xE2:m
endif

flash: $(PROJECT).hex
#	avrpp -8 $<
	$(PROG) -e -U flash:w:$< -U eeprom:w:$(PROJECT).eep
	
# Projektverzeichnis aufräumen aber .hex-Datei behalten
clean:
	$(RM) $(OBJECTS) $(PROJECT).elf $(PROJECT).lst

# Liste der unechten Ziele
.PHONY : all clean program flash fuse

.PRECIOUS : $(OBJECTS) $(PROJECT).elf
Detected encoding: UTF-80