From 43ae76992af5712d7303a7022ac14962cc925919 Mon Sep 17 00:00:00 2001 From: burg Date: Sat, 2 Apr 2005 17:55:20 +0000 Subject: Correction des Makefiles --- n/avr/adc/Makefile | 14 ++++++++---- n/avr/adc/Makefile.avr | 58 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/n/avr/adc/Makefile b/n/avr/adc/Makefile index 3dd2ee6..822a330 100644 --- a/n/avr/adc/Makefile +++ b/n/avr/adc/Makefile @@ -1,7 +1,7 @@ PROGS = test_adc -SOURCES = test_adc.c adc.c -DOC = adc.html -EXTRACTDOC = adc.c avrconfig.h +test_adc_OBJECTS = test_adc.o adc.o rs232.o proto.o +DOC = +EXTRACTDOC = MODULES = n/avr/proto n/avr/rs232 n/avr/utils CONFIGFILE = avrconfig.h # atmega8, atmega8535, atmega128... @@ -11,6 +11,12 @@ MCU_TARGET = atmega8535 OPTIMIZE = -O2 DEFS = -LIBS = +LDLIBS = + +EXTRA_TARGETS = +EXTRA_CLEAN_FILES = include Makefile.avr + +test_adc.elf: $(test_adc_OBJECTS) + diff --git a/n/avr/adc/Makefile.avr b/n/avr/adc/Makefile.avr index 01c9b7b..6a4324d 100644 --- a/n/avr/adc/Makefile.avr +++ b/n/avr/adc/Makefile.avr @@ -1,52 +1,68 @@ +# Makefile.avr 1.6 +# # 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