summaryrefslogtreecommitdiffhomepage
path: root/digital/avr/make
diff options
context:
space:
mode:
authorNicolas Schodet2008-05-27 22:02:17 +0200
committerNicolas Schodet2008-05-27 22:02:17 +0200
commitb27012ed2747e77675387f2c92af7409db5e4a68 (patch)
treee26b4da502bce88930f219eab6ff11e10db8ff26 /digital/avr/make
parenta11e81609c018d695faec58849b9f91d35b2b522 (diff)
* digital/avr/make:
- build objects in a sub-directory.
Diffstat (limited to 'digital/avr/make')
-rw-r--r--digital/avr/make/Makefile.avr21
-rw-r--r--digital/avr/make/Makefile.gen8
-rw-r--r--digital/avr/make/Makefile.host8
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)