From b27012ed2747e77675387f2c92af7409db5e4a68 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 27 May 2008 22:02:17 +0200 Subject: * digital/avr/make: - build objects in a sub-directory. --- digital/avr/make/Makefile.avr | 21 ++++++++++++--------- digital/avr/make/Makefile.gen | 8 ++++++++ digital/avr/make/Makefile.host | 8 ++++---- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/digital/avr/make/Makefile.avr b/digital/avr/make/Makefile.avr index 7dfee06d..bf92c0c4 100644 --- a/digital/avr/make/Makefile.avr +++ b/digital/avr/make/Makefile.avr @@ -35,7 +35,8 @@ AVR_SIMU_ELFS := $(SIMU_PROGS:%=%.avr.simu.elf) AVR_SOURCES := $(filter-out %.host.c,$(ALL_SOURCES)) AVR_C_SOURCES := $(filter %.c,$(AVR_SOURCES)) AVR_S_SOURCES := $(filter %.S,$(AVR_SOURCES)) -AVR_OBJECTS := $(AVR_C_SOURCES:%.c=%.avr.o) $(AVR_S_SOURCES:%.S=%.avr.o) +AVR_OBJECTS := $(AVR_C_SOURCES:%.c=$(OBJDIR)/%.avr.o) \ + $(AVR_S_SOURCES:%.S=$(OBJDIR)/%.avr.o) AVR_SIMU_OBJECTS := $(AVR_OBJECTS:%.avr.o=%.avr.simu.o) elf: $(AVR_ELFS) @@ -43,9 +44,11 @@ simuelf: $(AVR_SIMU_ELFS) lst: $(AVR_PROGS:%=%.avr.lst) define AVR_PROG_template -$(1).avr.elf: $$(patsubst %.S,%.avr.o,$$(patsubst %.c,%.avr.o,\ +$(1).avr.elf: $$(patsubst %.S,$(OBJDIR)/%.avr.o,\ + $$(patsubst %.c,$(OBJDIR)/%.avr.o,\ $$(filter-out %.host.c,$$($(1)_SOURCES)))) -$(1).avr.simu.elf: $$(patsubst %.S,%.avr.simu.o,$$(patsubst %.c,%.avr.simu.o,\ +$(1).avr.simu.elf: $$(patsubst %.S,$(OBJDIR)/%.avr.simu.o,\ + $$(patsubst %.c,$(OBJDIR)/%.avr.simu.o,\ $$(filter-out %.host.c,$$($(1)_SOURCES)))) endef @@ -57,16 +60,16 @@ $(AVR_ELFS) $(AVR_SIMU_ELFS): %.avr.lst: %.avr.elf $(AVR_OBJDUMP) -h -S $< > $@ -%.avr.o: %.c +$(OBJDIR)/%.avr.o: %.c | $(OBJDIR) $(AVR_COMPILE.c) -o $@ $< -%.avr.simu.o: %.c +$(OBJDIR)/%.avr.simu.o: %.c | $(OBJDIR) $(AVR_COMPILE.c) -DSIMU=1 -o $@ $< -%.avr.o: %.S +$(OBJDIR)/%.avr.o: %.S | $(OBJDIR) $(AVR_COMPILE.S) -o $@ $< -%.avr.simu.o: %.S +$(OBJDIR)/%.avr.simu.o: %.S | $(OBJDIR) $(AVR_COMPILE.S) -DSIMU=1 -o $@ $< # Dependency checking. @@ -115,9 +118,9 @@ esrec: $(AVR_PROGS:%=%_eeprom.srec) # Cleaning. clean.avr: - rm -f *.avr.o *.avr.d $(AVR_ELFS) \ + rm -f $(OBJDIR)/*.avr.o $(OBJDIR)/*.avr.d $(AVR_ELFS) \ *.avr.lst *.avr.map $(TEXTS) $(EEPROMS) clean.simu: - rm -f *.avr.simu.o *.avr.simu.d $(AVR_SIMU_ELFS) + rm -f $(OBJDIR)/*.avr.simu.o *.avr.simu.d $(AVR_SIMU_ELFS) diff --git a/digital/avr/make/Makefile.gen b/digital/avr/make/Makefile.gen index b4d422ba..54d178e1 100644 --- a/digital/avr/make/Makefile.gen +++ b/digital/avr/make/Makefile.gen @@ -48,6 +48,13 @@ $(foreach prog,$(ALL_PROGS),$(eval $(call MODULES_template,$(prog)))) vpath %.c $(ALL_MODULES:%=$(BASE)/modules/%) vpath %.S $(ALL_MODULES:%=$(BASE)/modules/%) +# Objects directory. + +OBJDIR := obj + +$(OBJDIR): + mkdir -p $(OBJDIR) + # Compilation test rules. define TEST_MCU_template @@ -99,4 +106,5 @@ doc: $(DOC) clean: clean.avr clean.simu clean.host rm -f *.bak *~ $(DOC) *.exd $(EXTRA_CLEAN_FILES) + rmdir $(OBJDIR) || true diff --git a/digital/avr/make/Makefile.host b/digital/avr/make/Makefile.host index d2942506..99f1cfc3 100644 --- a/digital/avr/make/Makefile.host +++ b/digital/avr/make/Makefile.host @@ -21,12 +21,12 @@ host: exe HOST_PROGS += $(PROGS) HOST_EXES := $(HOST_PROGS:%=%.host) HOST_SOURCES := $(filter-out %.avr.c %.avr.S,$(ALL_SOURCES)) -HOST_OBJECTS := $(HOST_SOURCES:%.c=%.host.o) +HOST_OBJECTS := $(HOST_SOURCES:%.c=$(OBJDIR)/%.host.o) exe: $(HOST_EXES) define HOST_PROG_template -$(1).host: $$(patsubst %.c,%.host.o,\ +$(1).host: $$(patsubst %.c,$(OBJDIR)/%.host.o,\ $$(filter-out %.avr.c %.avr.S,$$($(1)_SOURCES))) endef @@ -35,7 +35,7 @@ $(foreach prog,$(HOST_PROGS),$(eval $(call HOST_PROG_template,$(prog)))) $(HOST_EXES): $(HOST_LINK.o) $^ $(HOST_LDLIBS) -o $@ -%.host.o: %.c +$(OBJDIR)/%.host.o: %.c | $(OBJDIR) $(HOST_COMPILE.c) -o $@ $< # Dependency checking. @@ -44,5 +44,5 @@ $(HOST_EXES): # Cleaning. clean.host: - rm -f *.host.o *.host.d $(HOST_EXES) + rm -f $(OBJDIR)/*.host.o $(OBJDIR)/*.host.d $(HOST_EXES) -- cgit v1.2.3