summaryrefslogtreecommitdiff
path: root/src/test/Makefile
blob: c203699e30ccf49641d6f4a4a8029e9217497e59 (plain) (blame)
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
#########################################################################
#                         Makefile recursif                             #
#=======================================================================#
# Les variables suivantes sont definis dans un makefile plus haut.      #
# BASEDIR   repertoire de base du projet                                #
# SRCDIR    repertoire contenant le code source                         #
# BINDIR    repertoire ou sont places toutes objets compiles            #
#=======================================================================#
# ==> indique des champs modifiables aisement                           #
#=======================================================================#
# Comme tous les tests dependent du projet principal, les references au #
# dossier `main' sont autorisees.                                       #
#########################################################################

# Nom du repertoire contenant ce makefile
LOCALDIR = test

# Tout les fichiers se terminant par 'Test' sont consideres comme
# etant un test contenant une fonction main. Ces fichiers seront compiles
# a un executable.
TESTS = $(shell find *Test.*)

# ==> Si un objet X necessite une compilation non-standard (i.e. pas de regle du style X: X.cc X.h), rajouter cet objet
# en fin de BINS ne suffit pas. Il faut de plus creer une nouvelle regle.
LOCALBINS = $(patsubst %.cc,%,$(TESTS))
BINS=$(addprefix $(BINDIR)/$(LOCALDIR)/,$(LOCALBINS))

# Inclure les headers de main (source principale)
CXXFLAGS += -I $(SRCDIR)/main/

all: checkdirs $(BINS)

# Verifie l'existance du repertoire de sortie
checkdirs: $(BINDIR)/$(LOCALDIR)

# Cree le repertoire de sortie
$(BINDIR)/$(LOCALDIR):
	@mkdir -p $@

# Regle implicite pour les fichiers sans extension (i.e. pour les executables)
$(BINDIR)/$(LOCALDIR)/%: %.cc
	$(CXX) $(CXXFLAGS) $< -static -L$(BINDIR)/main -lvhc -o $@