summaryrefslogtreecommitdiff
path: root/i/marvin/src/Makefile.defs
blob: 09f35b05bd03a88017c70218df97a2dacaae1063 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Flags.
CXXFLAGS = -Wall -g
CPPFLAGS = -MMD $(INCLUDES)
INCLUDES = -I$(SRCDIR) -I.

# Tests de coverage (man gcov).
ifeq ($(COV),)
CXXFLAGS += -O2
else
CXXFLAGS += -fprofile-arcs -ftest-coverage
endif

# Profiling (man gprof).
ifneq ($(PROF),)
CXXFLAGS += -pg
LDFLAGS += -pg
endif

# Messages sur une ligne.
CXXFLAGS += -fmessage-length=0

SUBDIRS = utils utils/meta \
	  tester \
	  log serial timer \
	  config data scheduler \
	  proto asserv \
	  motor 

LINK.o = $(CXX) $(LDFLAGS) $(TARGET_ARCH)
LEX = flex
YACC = bison

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) \
	$(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) $<

%.cc: %.yy
	$(YACC) -o $@ $<

# D�pendances.
-include $(OBJECTS:%.o=%.d)

# M�nage.
clean:
	rm -f *.o *.d $(PROGRAMS)
	rm -f *.bbg *.bb *.da *.gcov
	rm -f gmon.out
	rm -f $(EXTRA_CLEAN)

.PHONY: all build-all clean