From 1f14105a0465099079c06955c43e58c664b13c13 Mon Sep 17 00:00:00 2001 From: schodet Date: Sat, 2 Oct 2004 15:59:45 +0000 Subject: Conversion au nouveau système de Makefile. --- n/chenil/Makefile.avr | 55 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 22 deletions(-) (limited to 'n/chenil/Makefile.avr') diff --git a/n/chenil/Makefile.avr b/n/chenil/Makefile.avr index d1411f4..325be3f 100644 --- a/n/chenil/Makefile.avr +++ b/n/chenil/Makefile.avr @@ -1,55 +1,66 @@ # Flags. {{{1 -CC = avr-gcc - CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -CPPFLAGS = $(DEFS) -Imodules +CPPFLAGS = $(DEFS) -MMD $(INCLUDES) \ + $(if $(CONFIGFILE), $(CONFIGFILE:%=-include %)) +INCLUDES = -Imodules LDFLAGS = +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/%/Module) +VPATH = $(MODULES:%=modules/%) -Makefile: $(MODULESFILES) +modules_checkout: modules_co -MODULESOURCES = $(addprefix modules/$(module)/,\ - $(shell cat modules/$(module)/Module)) -MODULESSOURCES := $(if $(MODULES),\ - $(foreach module,$(MODULES),$(MODULESOURCES))) -SOURCES += $(MODULESSOURCES) +modules_co: $(MODULES:%=modules_co.%) -$(MODULESFILES): +$(MODULES:%=modules_co.%): mkdir -p modules - cd modules && cvs co $(@:modules/%/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