summaryrefslogtreecommitdiff
path: root/i/marvin/src/Makefile.defs
diff options
context:
space:
mode:
authorschodet2006-03-09 21:47:36 +0000
committerschodet2006-03-09 21:47:36 +0000
commit3be1cb1479ecfaba4d39117d09b39e0e1e17402f (patch)
tree0e6493f3bfa73cd3df54bea5bdbe71db9f1fdfc9 /i/marvin/src/Makefile.defs
parent9663eddfb74a97f89f9bb98a8e68409d2958110b (diff)
Génération automatique des règles de compilation pour les programmes.
Suppression du problème de dépendance des SUBDIRS grâce à ça. Support de la compilation en exterieur (en ajoutant des sources d'un autre répertoire, prochainement un exemple dans n/asserv/utils). Réajout de -O2.
Diffstat (limited to 'i/marvin/src/Makefile.defs')
-rw-r--r--i/marvin/src/Makefile.defs24
1 files changed, 13 insertions, 11 deletions
diff --git a/i/marvin/src/Makefile.defs b/i/marvin/src/Makefile.defs
index 3f569e6..09f35b0 100644
--- a/i/marvin/src/Makefile.defs
+++ b/i/marvin/src/Makefile.defs
@@ -5,7 +5,7 @@ INCLUDES = -I$(SRCDIR) -I.
# Tests de coverage (man gcov).
ifeq ($(COV),)
-#CXXFLAGS += -O2
+CXXFLAGS += -O2
else
CXXFLAGS += -fprofile-arcs -ftest-coverage
endif
@@ -16,38 +16,40 @@ CXXFLAGS += -pg
LDFLAGS += -pg
endif
-
# Messages sur une ligne.
CXXFLAGS += -fmessage-length=0
-# Attention, il y a un problème de dépendences dans l'ordre des SUBDIRS à
-# cause de la génération des règles.
SUBDIRS = utils utils/meta \
tester \
log serial timer \
config data scheduler \
- proto asserv\
+ proto asserv \
motor
LINK.o = $(CXX) $(LDFLAGS) $(TARGET_ARCH)
LEX = flex
YACC = bison
-VPATH = $(SUBDIRS:%=$(SRCDIR)/%)
-
-PROGRAMS =
-LIBS =
-EXTRA_CLEAN =
+vpath %.cc $(SUBDIRS:%=$(SRCDIR)/%) $(EXTRA_SUBDIRS)
+vpath %.ll $(SUBDIRS:%=$(SRCDIR)/%) $(EXTRA_SUBDIRS)
+vpath %.yy $(SUBDIRS:%=$(SRCDIR)/%) $(EXTRA_SUBDIRS)
all: build-all
# Inclus les autres répertoires.
-include $(SUBDIRS:%=$(SRCDIR)/%/Makefile.defs)
+include $(SUBDIRS:%=$(SRCDIR)/%/Makefile.defs) \
+ $(EXTRA_SUBDIRS:%=%/Makefile.defs)
OBJECTS = $(filter %.o,$(foreach PROGRAM,$(PROGRAMS),$($(PROGRAM)_OBJECTS)))
build-all: $(PROGRAMS)
+define PROGRAMS_template
+$(1): $$($(1)_OBJECTS)
+endef
+
+$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAMS_template,$(prog))))
+
# Régles.
%.cc: %.ll
$(LEX) $<