This repository has been archived by the owner on Jan 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
184 lines (153 loc) · 6.87 KB
/
Makefile
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#############################################################################
# Fichier Makefile
# UE MAP401 - DLST - UGA - 2020/2021
#############################################################################
# utilisation des variables internes $@ $< $^ $*
# $@ : correspond au nom de la cible
# $< : correspond au nom de la premiere dependance
# $^ : correspond � toutes les d�pendances
# $* : correspond au nom du fichier sans extension
# (dans les regles generiques uniquement)
#############################################################################
# information sur la regle executee avec la commande @echo
# (une commande commancant par @ n'est pas affichee a l'ecran)
#############################################################################
# désactivation des règles implicites
.SUFFIXES:
#############################################################################
# definition des variables locales
#############################################################################
# compilateur C
CC = clang
# chemin d'acces aux librairies (interfaces)
INCDIR = .
# chemin d'acces aux librairies (binaires)
LIBDIR = .
# options pour l'�dition des liens
LDOPTS = -L$(LIBDIR) -lm
# options pour la recherche des fichiers .o et .h
INCLUDEOPTS = -I$(INCDIR)
# options de compilation
COMPILOPTS = -g -Wall $(INCLUDEOPTS)
# liste des executables
EXECUTABLES = test_image test_geom2d test_contour contour_of distance_points
#############################################################################
# definition des regles
#############################################################################
########################################################
# la règle par défaut
all : $(EXECUTABLES)
########################################################
# listes génériques
liste_%.c liste_%.h: listes/%.env listes/liste_.h listes/liste_.c
{ \
. $< ;\
replace="sed -e s/#INCLUDE_TEMPLATE/$${INCLUDE}/g -e s/_LISTE_TTTTT_H_/_LISTE_$${UP}_H_/g -e s/TTTTT/$${CAP}/g -e s/ttttt/$${LOW}/g" ;\
$$replace listes/liste_.h > liste_$*.h ;\
$$replace listes/liste_.c > liste_$*.c ;\
}
########################################################
# regle generique :
# remplace les regles de compilation separee de la forme
# module.o : module.c module.h
# $(CC) -c $(COMPILOPTS) module.c
%.o : %.c $(wildcard %.h) liste_point.h liste_bezier3.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module "$*
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
########################################################
# regles explicites de compilation separee de modules
# n'ayant pas de fichier .h ET/OU dependant d'autres modules
image.o : image.c image.h types_macros.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module image"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
test_image.o : test_image.c image.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module test_image"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
contour.o: contour.c contour.h geom2d.h liste_point.h tableau_points.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module contour"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
liste_points.o: liste_points.c liste_point.h geom2d.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module liste_points"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
tableau_points.o: tableau_points.c liste_point.h tableau_points.h geom2d.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module tableau_points"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $<
sortie.o: sortie_eps.c sortie.h contour.h liste_point.h tableau_points.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module sortie_eps"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $< -o $@
simplification.o: simplification.c simplification.h tableau_points.h geom2d.h liste_point.h liste_bezier3.h
@echo ""
@echo "---------------------------------------------"
@echo "Compilation du module simplification"
@echo "---------------------------------------------"
$(CC) -c $(COMPILOPTS) $< -o $@
########################################################
# regles explicites de creation des executables
test_image : test_image.o image.o
@echo ""
@echo "---------------------------------------------"
@echo "Creation de l'executable "$@
@echo "---------------------------------------------"
$(CC) $^ $(LDOPTS) -o $@
test_geom2d: test_geom2d.o geom2d.o
@echo ""
@echo "---------------------------------------------"
@echo "Creation de l'executable "$@
@echo "---------------------------------------------"
$(CC) $^ $(LDOPTS) -o $@
test_contour: test_contour.o image.o contour.o liste_point.o tableau_points.o geom2d.o
@echo ""
@echo "---------------------------------------------"
@echo "Creation de l'executable "$@
@echo "---------------------------------------------"
$(CC) $^ $(LDOPTS) -o $@
contour_of: contour_of.o image.o contour.o liste_point.o liste_bezier3.o tableau_points.o geom2d.o sortie.o simplification.o
@echo ""
@echo "---------------------------------------------"
@echo "Creation de l'executable "$@
@echo "---------------------------------------------"
$(CC) $^ $(LDOPTS) -o $@
distance_points: distance_points.c geom2d.o
@echo ""
@echo "---------------------------------------------"
@echo "Creation de l'executable "$@
@echo "---------------------------------------------"
$(CC) $^ $(LDOPTS) -o $@
# regle pour "nettoyer" le répertoire
clean:
rm -fR $(EXECUTABLES) *.o images/*.pbm.contours liste_*.c liste_*.h
test: test_image test_geom2d test_contour
./test_geom2d && ./test_image && ./test_contour
FICHIERS_TACHE_6_2 = image_poly_tache6 elephant-gotlib goudyini-A JoaquimHock-LesArbres cheval papillon2
contours: contour_of
echo === Simplifications d=1 === > resultats-tache6-2.txt
for f in $(FICHIERS_TACHE_6_2); do ./contour_of images/$$f.pbm -c -d 1 -3; mv images/$$f.pbm-mode3.eps images/$$f-3-d1.eps; done >> resultats-tache6-2.txt
echo === Simplifications d=2 === >> resultats-tache6-2.txt
for f in $(FICHIERS_TACHE_6_2); do ./contour_of images/$$f.pbm -c -d 2 -3; mv images/$$f.pbm-mode3.eps images/$$f-3-d2.eps; done >> resultats-tache6-2.txt
echo === Avant simplification === >> resultats-tache6-2.txt
for f in $(FICHIERS_TACHE_6_2); do ./contour_of images/$$f.pbm -c; done >> resultats-tache6-2.txt
ls -1 images/*.pbm | xargs -L1 -I{} ./contour_of {} -c -3 > resultats-tache3-2.txt
./contour_of images/chat.pbm -1 -2
./contour_of images/image_ex_poly.pbm -1 -2
./contour_of images/image2_poly.pbm -1 -2