From 87fcba66a1485ca47dd655895868084ae36cc12d Mon Sep 17 00:00:00 2001 From: schodet Date: Tue, 6 Jul 2004 21:49:45 +0000 Subject: Support des modules. --- n/avr/utils/Makefile | 77 ++--------------------------------- n/avr/utils/Makefile.avr | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 73 deletions(-) create mode 100644 n/avr/utils/Makefile.avr (limited to 'n/avr/utils') diff --git a/n/avr/utils/Makefile b/n/avr/utils/Makefile index 89e18f4..2be5002 100644 --- a/n/avr/utils/Makefile +++ b/n/avr/utils/Makefile @@ -1,7 +1,8 @@ -PRG = test_utils -OBJECTS = test_utils.o +PROGS = test_utils +SOURCES = test_utils.c DOC = utils.html EXTRACTDOC = utils.h avrconfig.h +MODULES = # atmega8, atmega8535, atmega128... MCU_TARGET = atmega8 # -O2 : speed @@ -11,74 +12,4 @@ OPTIMIZE = -O2 DEFS = LIBS = -# You should not have to change anything below here. - -CC = avr-gcc - -CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -CPPFLAGS = $(DEFS) -LDFLAGS = -Wl,-Map,$(PRG).map - -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump - -all: elf lst hex - -elf: $(PRG).elf -lst: $(PRG).lst - -$(PRG).elf: $(OBJECTS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) - -%.lst: %.elf - $(OBJDUMP) -h -S $< > $@ - -clean: - rm -f *.o $(PRG).elf *.bak $(DOC) *.exd - rm -f *.lst *.map $(EXTRA_CLEAN_FILES) - rm -f $(PRG).hex $(PRG).bin $(PRG).srec $(PRG)_eeprom.hex $(PRG)_eeprom.bin $(PRG)_eeprom.srec - -# Rules for building the doc. - -doc: $(DOC) - -%.html: %.txt %.exd - aft $< - -%.exd: $(EXTRACTDOC) - test -n "$^" && extractdoc $^ > $@ || true - -# Rules for building the .text rom images. - -text: hex bin srec - -hex: $(PRG).hex -bin: $(PRG).bin -srec: $(PRG).srec - -%.hex: %.elf - $(OBJCOPY) -j .text -j .data -O ihex $< $@ - -%.srec: %.elf - $(OBJCOPY) -j .text -j .data -O srec $< $@ - -%.bin: %.elf - $(OBJCOPY) -j .text -j .data -O binary $< $@ - -# Rules for building the .eeprom rom images. - -eeprom: ehex ebin esrec - -ehex: $(PRG)_eeprom.hex -ebin: $(PRG)_eeprom.bin -esrec: $(PRG)_eeprom.srec - -%_eeprom.hex: %.elf - $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ - -%_eeprom.srec: %.elf - $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ - -%_eeprom.bin: %.elf - $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ - +include Makefile.avr diff --git a/n/avr/utils/Makefile.avr b/n/avr/utils/Makefile.avr new file mode 100644 index 0000000..b3ceb39 --- /dev/null +++ b/n/avr/utils/Makefile.avr @@ -0,0 +1,103 @@ +# Flags. {{{1 + +CC = avr-gcc + +CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) +CPPFLAGS = $(DEFS) +LDFLAGS = + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +# Main rules. {{{1 + +CSOURCES = $(filter %.c, $(SOURCES)) +SSOURCES = $(filter %.s, $(SOURCES)) +OBJECTS = $(CSOURCES:%.c=%.o) $(SSOURCES:%.s=%.o) +ELFS = $(PROGS:%=%.elf) + +all: elf lst hex + +.PHONY: all clean elf lst doc text hex srec bin eeprom ehex esrec ebin + +# Rules for modules. {{{1 + +MODULESFILES = $(MODULES:%=modules/%/Module) + +Makefile: $(MODULESFILES) + +MODULESOURCES = $(addprefix modules/$(module)/,\ + $(shell cat modules/$(module)/Module)) +MODULESSOURCES := $(if $(MODULES),\ + $(foreach module,$(MODULES),$(MODULESOURCES))) +SOURCES += $(MODULESSOURCES) + +$(MODULESFILES): + mkdir -p modules + cd modules && cvs co $(@:modules/%/Module=%) + test -f $@ + +# General rules. {{{1 + +elf: $(PROGS:%=%.elf) +lst: $(PROGS:%=%.lst) + +$(PROGS:%=%.elf): $(OBJECTS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +clean: + rm -f *.o $(OBJECTS) $(PROGS:%=%.elf) *.lst *.map *.bak *~ + rm -f $(DOC) *.exd $(EXTRA_CLEAN_FILES) $(TEXTS) $(EEPROMS) + +# Rules for building the doc. {{{1 + +doc: $(DOC) + +%.html: %.txt %.exd + aft $< + +%.exd: $(EXTRACTDOC) + test -n "$^" && extractdoc $^ > $@ || true + +# Rules for building the .text rom images. {{{1 + +TEXTS = $(PROGS:%=%.hex) $(PROGS:%=%.bin) $(PROGS:%=%.srec) + +text: hex bin srec + +hex: $(PROGS:%=%.hex) +bin: $(PROGS:%=%.bin) +srec: $(PROGS:%=%.srec) + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images. {{{1 + +EEPROMS = $(PROGS:%=%_eeprom.hex) $(PROGS:%=%_eeprom.bin) \ + $(PROGS:%=%_eeprom.srec) + +eeprom: ehex ebin esrec + +ehex: $(PROGS:%=%_eeprom.hex) +ebin: $(PROGS:%=%_eeprom.bin) +esrec: $(PROGS:%=%_eeprom.srec) + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ + -- cgit v1.2.3