From 5df03b91677bb6d299bf1e95f980e9088ffeb9ee Mon Sep 17 00:00:00 2001 From: schodet Date: Fri, 21 Jan 2005 01:25:09 +0000 Subject: Passage à la nouvelle version du Makefile. --- n/avr/proto/Makefile | 5 ++++- n/avr/proto/Makefile.avr | 56 ++++++++++++++++++++++++++++++------------------ 2 files changed, 39 insertions(+), 22 deletions(-) (limited to 'n') diff --git a/n/avr/proto/Makefile b/n/avr/proto/Makefile index 050f564..a056496 100644 --- a/n/avr/proto/Makefile +++ b/n/avr/proto/Makefile @@ -1,5 +1,5 @@ PROGS = test_proto -SOURCES = test_proto.c proto.c +test_proto_OBJECTS = test_proto.o proto.o rs232.o DOC = proto.html EXTRACTDOC = avrconfig.h proto.h proto_inline.c MODULES = n/avr/rs232 @@ -14,3 +14,6 @@ DEFS = LIBS = include Makefile.avr + +test_proto.elf: $(test_proto_OBJECTS) + diff --git a/n/avr/proto/Makefile.avr b/n/avr/proto/Makefile.avr index 01c9b7b..c010642 100644 --- a/n/avr/proto/Makefile.avr +++ b/n/avr/proto/Makefile.avr @@ -1,52 +1,66 @@ # Flags. {{{1 -CC = avr-gcc - -CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) \ - $(if $(CONFIGFILE), $(CONFIGFILE:%=-include %)) -CPPFLAGS = $(DEFS) -Imodules -LDFLAGS = +CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) +CPPFLAGS = $(DEFS) -MMD $(INCLUDES) \ + $(if $(CONFIGFILE), $(CONFIGFILE:%=-include %)) +INCLUDES = -Imodules +LDFLAGS = $(CFLAGS) +CC = avr-gcc 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/%/Makefile.module) +VPATH = $(MODULES:%=modules/%) -include $(MODULESFILES) +modules_checkout: modules_co -SOURCES += $(MODULESSOURCES) +modules_co: $(MODULES:%=modules_co.%) -$(MODULESFILES): +$(MODULES:%=modules_co.%): mkdir -p modules - cd modules && cvs co $(@:modules/%/Makefile.module=%) - test -f $@ + cd modules && cvs co $(@:modules_co.%=%) + +modules_update: modules_up + +modules_up: $(MODULES:%=modules_up.%) + +$(MODULES:%=modules_up.%): + cd modules/$(@:modules_up.%=%) && cvs up # General rules. {{{1 -elf: $(PROGS:%=%.elf) +ELFS = $(PROGS:%=%.elf) +OBJECTS = $(filter %.o,$(foreach prog,$(PROGS),$($(prog)_OBJECTS))) + +elf: $(ELFS) lst: $(PROGS:%=%.lst) -$(PROGS:%=%.elf): $(OBJECTS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) +# Great piece of rules which only works in make 3.80+. +# define PROG_template +# $(1).elf: $$($(1)_OBJECTS) +# endef +# +# $(foreach prog,$(PROGS),$(eval $(call PROG_template,$(prog)))) + +$(ELFS): + $(LINK.o) $^ $(LDLIBS) -o $@ %.lst: %.elf $(OBJDUMP) -h -S $< > $@ +# Dependency checking. +-include $(OBJECTS:%.o=%.d) + clean: - rm -f *.o $(OBJECTS) $(PROGS:%=%.elf) *.lst *.map *.bak *~ + rm -f *.o *.d $(ELFS) *.lst *.map *.bak *~ rm -f $(DOC) *.exd $(EXTRA_CLEAN_FILES) $(TEXTS) $(EEPROMS) # Rules for building the doc. {{{1 -- cgit v1.2.3