Eigentlich macht man das genau andersrum:
Das Makefile steht in dem Verzeichnis, in das erzeugt werden soll und die Quellen woanders (zB eine Ebene höher).
	Code:
	# The project's base name
PRG				= eBook
# C sources that make up the project
SRC				= main.c ...
# we run on an AVR ATmega8
MCU_TARGET		= atmega8	
OPTIMIZE		= -Os 
INCLUDES		= -I../include
DEFS			= -DF_CPU=8000000
CC				= avr-gcc -mmcu=$(MCU_TARGET)
LD             	= $(CC)
OBJCOPY        	= avr-objcopy
OBJDUMP        	= avr-objdump
# Targets dealing with C sources
.PHONY: all size lst text eeprom depend 
# clean targets
.PHONY: clean
CFLAGS			= -Wall $(OPTIMIZE) $(DEFS) $(INCLUDES) -Winline -fno-keep-inline-functions -fno-common
LDFLAGS			= -Wl,-Map,$(PRG).map -Wl,-section-start=.eeprom=0x810001
ASMFLAGS		= -dp -save-temps -fverbose-asm
# object and assembler files. we build *.o out of *.s (not *.c)
OBJ				= $(patsubst %.c, %.o, $(SRC))
ASM				= $(patsubst %.c, %.s, $(SRC))
all: depend $(ASM) $(PRG).elf lst text eeprom
depend: 
	$(CC) -MM  $(addprefix ../, $(SRC)) -mmcu=$(MCU_TARGET) $(DEFS) $(INCLUDES) |\
		sed -e 's/\.o:/.s:/' > .depend
size: 
	avr-size -x $(OBJ)
	@echo AVR $(MCU_TARGET) Memory Usage:
	@avr-size -C --mcu=$(MCU_TARGET) $(PRG).elf | grep -E '^(Data)|(Pro)'
$(PRG).elf: $(OBJ) 
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-include .depend
%.s: ../%.c Makefile
	$(CC) -S $< -o $@ $(ASMFLAGS) $(CFLAGS) 
%.o: %.s
	$(CC) -x assembler $< -c -o $@ 
# Rules to clean up
clean:
	rm -f .depend $(wildcard *.o *.s *.i *.map *.lst *.elf *.hex *.map *~ ../*~)
# Rules to generate disassembly
lst: $(PRG).lst
%.lst: %.elf
	$(OBJDUMP) -h -S -j .data -j .eeprom -j .text $< > $@
# Rules for building the .text rom images
text: $(PRG).hex
%.hex: %.elf
	$(OBJCOPY) -j .text -j .data -O ihex $< $@
# Rules for building the .eeprom rom images
eeprom: $(PRG)_eeprom.hex
%_eeprom.hex: %.elf
	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=1 -O ihex $< $@
# Rules with avrdude
reset:
	$(AVRDUDE)
burn: 
	$(AVRDUDE) -V -U flash:w:"$(PRG).hex"
burn-all: 
	$(AVRDUDE) -V -U flash:w:"$(PRG).hex" -U eeprom:w:"$(PRG)_eeprom.hex"
 
						
					
Lesezeichen