Line 0
Link Here
|
|
|
1 |
############################################################################### |
2 |
# Makefile GENERAL de Wormux |
3 |
# Par STINNER Victor (Haypo) - http://www.haypocalc.com/ |
4 |
############################################################################### |
5 |
|
6 |
# Défintions communes |
7 |
include make.env |
8 |
|
9 |
ifndef ERREUR |
10 |
############################################################################### |
11 |
|
12 |
# Rêgle par défaut : compile tout |
13 |
all: compile_debut checklib i18n_mo $(BIN) compile_fin |
14 |
|
15 |
# Compile en mode release |
16 |
release: compile_debut checklib i18n_mo $(BIN) strip compile_fin |
17 |
strip: |
18 |
@echo "o Nettoie le binaire (strip)" |
19 |
@strip $(BIN) |
20 |
|
21 |
# Message d'accueil |
22 |
compile_debut: |
23 |
@echo -e $(call SEPARATEUR,"(début compilation)") |
24 |
@echo |
25 |
ifdef RELEASE |
26 |
@echo -e $(call TITRE,"Compilation de Wormux (RELEASE)") |
27 |
@echo |
28 |
@echo -e "CXXFLAGS =" $(call GRAS,$(CXXFLAGS)) |
29 |
else |
30 |
@echo -e $(call TITRE,"Compilation de Wormux (DEBUG)") |
31 |
endif |
32 |
@echo |
33 |
|
34 |
# Vérifie qu'on a toutes les librairies nécessaires |
35 |
checklib: |
36 |
@pkg-config clanlib --libs 1>/dev/null 2>&1 \ |
37 |
|| (echo -e $(ERREUR_CLANLIB); exit 1) |
38 |
@pkg-config libxml++-1.0 --libs 1>/dev/null 2>&1 \ |
39 |
|| (echo -e $(ERREUR_LIBXMLPLUSPLUS); exit 1) |
40 |
|
41 |
# Affiche des informations sur la compilation |
42 |
info: |
43 |
@echo -e $(call TITRE,"Wormux version" $(call GRAS,$(VERSION))) |
44 |
@echo |
45 |
ifdef LINUX |
46 |
@echo -e "Compilation sous" $(call GRAS,"Linux") |
47 |
else |
48 |
@echo -e "Compilation sous" $(call GRAS,"Windows") |
49 |
endif |
50 |
@echo -e "CXX =" $(call GRAS,$(CXX)) |
51 |
@echo |
52 |
@echo -e "CXXFLAGS =" $(call GRAS,$(CXXFLAGS)) |
53 |
@echo |
54 |
@echo -e "LIBS =" $(call GRAS,$(LIBS)) |
55 |
@echo |
56 |
|
57 |
# Compilation proprement dite, puis liaison |
58 |
$(BIN): $(OBJECTS) |
59 |
@echo -e "o Lie le tout dans" $(call GRAS,$(BIN)) |
60 |
@$(CXX) -o $(BIN) $(CXXFLAGS) $(LIBS) $(OBJECTS) |
61 |
|
62 |
# Generate .mo file |
63 |
i18n_mo: $(MO_FR) |
64 |
$(MO_FR): $(PO_FR) |
65 |
@echo -e "Generate "$(call GRAS,$(MO_FR))" file" |
66 |
@msgfmt $(PO_FR) -o $(MO_FR) |
67 |
|
68 |
# Message de fin de compilation |
69 |
compile_fin: |
70 |
@echo |
71 |
@echo -e $(call TITRE,"Compilation terminée") |
72 |
@echo |
73 |
@echo -e "Lancez Wormux en tapant :" $(call GRAS,$(dir $(BIN))$(notdir $(BIN))) |
74 |
@echo -e "Vous pouvez aussi utiliser" $(call GRAS,"make exec") |
75 |
@echo -e "(ou make qexec pour eviter la liaison)" |
76 |
@echo -e $(call SEPARATEUR,"(fin compilation)") |
77 |
|
78 |
# Créer une archive tgz du programme |
79 |
# Options de tar : |
80 |
# -cvf : Create Verbose File= |
81 |
# -C : Change directory |
82 |
# -z : Passe à travers gzip |
83 |
tgz-bin: release |
84 |
@echo -e $(call SEPARATEUR,"(début archivage)") |
85 |
@echo |
86 |
@echo -e $(call TITRE,"Creer l'archive binaire") |
87 |
@echo |
88 |
@rm -f $(ARCHIVE_BIN) |
89 |
@echo -e "o Fichier :" $(call GRAS,$(ARCHIVE_BIN)) |
90 |
@echo |
91 |
@echo -e "(en cas d'erreur, verifiez que le répertoire principal de Wormux s'appelle bien 'wormux')" |
92 |
tar -czf $(ARCHIVE_BIN) -C ../../ $(addprefix wormux/,$(INCLU_TGZ_BIN)) $(EXCLU_TGZ_BIN) |
93 |
@echo |
94 |
@echo -e "Taille de l'archive =" \ |
95 |
$(call GRAS,$(call TAILLE_FICHIER,$(ARCHIVE_BIN))) |
96 |
@echo |
97 |
@echo -e $(call SEPARATEUR,"(fin archivage)") |
98 |
|
99 |
# Créer une archive tgz des sources (voir la regle 'tgz' pour plus d'infos) |
100 |
tgz-src: |
101 |
@echo -e $(call SEPARATEUR,"(début archivage)") |
102 |
@echo |
103 |
@echo -e $(call TITRE,"Creer l'archive source") |
104 |
@echo |
105 |
@rm -f $(ARCHIVE_SRC) |
106 |
@echo -e "Fichier :" $(call GRAS,$(ARCHIVE_SRC)) |
107 |
@echo |
108 |
@echo -e "(en cas d'erreur, verifiez que le répertoire principal de Wormux s'appelle bien 'wormux')" |
109 |
@tar -czf $(ARCHIVE_SRC) -C ../../ \ |
110 |
$(addprefix wormux/,$(INCLU_TGZ_SRC)) $(EXCLU_TGZ_SRC) |
111 |
@echo |
112 |
@echo -e "Taille de l'archive =" \ |
113 |
$(call GRAS,$(call TAILLE_FICHIER,$(ARCHIVE_SRC))) |
114 |
@echo |
115 |
@echo -e $(call SEPARATEUR,"(fin archivage)") |
116 |
|
117 |
# Nettoyage : Efface les binaires et temporaires |
118 |
clean: |
119 |
@echo -e $(call SEPARATEUR,"(début du nettoyage)") |
120 |
@echo |
121 |
@echo -e $(call TITRE,"Nettoyage") |
122 |
@echo |
123 |
rm -f $(shell find ../ $(FICH_TMP_FIND)) |
124 |
@echo |
125 |
@echo -n "Pour effacer les objets et binaire, " |
126 |
@echo "tapez make cleanall" |
127 |
@echo |
128 |
@echo -e $(call SEPARATEUR,"(fin du nettoyage)") |
129 |
|
130 |
# Nettoyage : Efface les binaires et temporaires |
131 |
cleanall: clean |
132 |
@echo -e $(call SEPARATEUR,"(début du gros nettoyage)") |
133 |
@echo |
134 |
@echo -e $(call TITRE,"Nettoyage") |
135 |
@echo |
136 |
rm -f *.o $(BIN) |
137 |
@echo |
138 |
@echo -e $(call SEPARATEUR,"(fin du gros nettoyage)") |
139 |
|
140 |
### Compile, puis exécute Wormux ### |
141 |
exec: all qexec |
142 |
|
143 |
### Exécute Wormux, sans recompilation ### |
144 |
qexec: |
145 |
@echo -e $(call SEPARATEUR,"(exécution)") |
146 |
ifdef LINUX |
147 |
@(cd $(dir $(BIN)); ./$(notdir $(BIN));) |
148 |
else |
149 |
@cd $(dir $(BIN)) |
150 |
@$(notdir $(BIN)) |
151 |
endif |
152 |
@echo -e $(call SEPARATEUR,"(fin d'exécution)") |
153 |
|
154 |
# Installation |
155 |
pre_install: |
156 |
@touch constante.cpp |
157 |
|
158 |
install: CXXFLAGS += -DINSTALL_DIR=\"$(DIR_SHARE)\" |
159 |
install: pre_install release all |
160 |
@echo -e $(call SEPARATEUR,"(début installation)") |
161 |
@echo |
162 |
@echo -e $(call TITRE,"Installation de Wormux") |
163 |
@echo |
164 |
@echo -e "Répetoire d'installation" $(call GRAS,$(DIR_OK)) |
165 |
@echo |
166 |
@$(WARNING_ROOT) |
167 |
@echo |
168 |
@echo -e "Création du répetoire" $(call GRAS,$(DIR_BIN)) |
169 |
@mkdir -p $(DIR_BIN) |
170 |
@echo -e "Création du répetoire" $(call GRAS,$(DIR_SHARE)) |
171 |
@mkdir -p $(DIR_SHARE) |
172 |
@echo |
173 |
|
174 |
@echo -e "Nettoyage du répertoire" $(call GRAS,$(DIR_SHARE)) |
175 |
@rm -rf $(DIR_SHARE)* |
176 |
@echo |
177 |
|
178 |
@echo -e "Copie du binaire." |
179 |
@cp $(BIN) $(DIR_BIN) |
180 |
@echo -e "Copie des données." |
181 |
@cp -R ../donnee/* $(DIR_SHARE) |
182 |
@echo |
183 |
|
184 |
@echo -e "Change les droits des fichiers" |
185 |
@find $(DIR_SHARE) -type f -exec chmod 755 {} \; |
186 |
@echo -e "Change les droits des répertoires." |
187 |
@find $(DIR_SHARE) -type d -exec chmod 755 {} \; |
188 |
@echo |
189 |
|
190 |
@echo -e $(call GRAS,"Installation de Wormux terminée !") |
191 |
@echo |
192 |
@echo -e $(call SEPARATEUR,"(début installation)") |
193 |
|
194 |
# Désinstallation |
195 |
uninstall: |
196 |
@echo -e $(call SEPARATEUR,"(début désinstallation)") |
197 |
@echo |
198 |
@echo -e $(call TITRE,"Désinstallation de Wormux") |
199 |
@echo |
200 |
@echo -e "Répertoire d'installation :" $(call GRAS,$(DIR_OK)) |
201 |
@$(WARNING_ROOT) |
202 |
@echo -e "o Suppression de" $(call GRAS,$(DIR_BIN)$(notdir $(BIN))) |
203 |
@rm -rf $(DIR_BIN)$(notdir $(BIN)) |
204 |
|
205 |
@echo -e "o Suppression de" $(call GRAS,$(DIR_SHARE)) |
206 |
@rm -rf $(DIR_SHARE) |
207 |
|
208 |
@echo |
209 |
@echo -e $(call GRAS,"Fin de la désinstallation de Wormux terminée")"." |
210 |
@echo |
211 |
@echo -e $(call SEPARATEUR,"(fin désinstallation)") |
212 |
|
213 |
# Génération du nouveau fichier .pot |
214 |
i18n_pot: $(I18N_POT) |
215 |
$(I18N_POT): $(SOURCES) |
216 |
@echo -e $(call SEPARATEUR,"(début fichier .pot)") |
217 |
@echo |
218 |
@echo -e "Creation du fichier" $(call GRAS,$(I18N_POT)) |
219 |
@xgettext -o $(I18N_POT) $(SOURCES) -k'_' -s \ |
220 |
--force --from-code iso-8859-1 |
221 |
@echo |
222 |
@echo -e $(call SEPARATEUR,"(fin fichier .pot)") |
223 |
|
224 |
# Génération des dépendances des fichiers sources |
225 |
# Utilise "gcc -MM" |
226 |
%.d: %.cpp |
227 |
@echo -e "o Calcule les dependences de" $(call GRAS,$<) |
228 |
@$(CC) -MM $< >$@.tmp \ |
229 |
&& sed -e 's/\.o/.d/' <$@.tmp >$@\ |
230 |
&& cat $@.tmp >>$@\ |
231 |
&& rm -f $@.tmp |
232 |
@echo -e "\t"'@echo -e "o Compile" $$(call GRAS,$<)\\'"\n"\ |
233 |
"\t"'&& $$(CXX) -o $(<:.cpp=.o) -c $< $$(CXXFLAGS)' >>$@ |
234 |
|
235 |
ifdef NEED_DEPEND |
236 |
|
237 |
# Inclusion des dépendances |
238 |
# Si elles n'existent pas, les génère :-) |
239 |
-include $(DEPENDS) |
240 |
|
241 |
endif |
242 |
|
243 |
ifdef NEED_OBJECT_RULE |
244 |
|
245 |
# Rêgle par défaut pour la compilation |
246 |
%.o: %.cpp |
247 |
@echo -e "o Compile" $(call GRAS,$<) |
248 |
@$(CXX) -o $@ -c $< $(CXXFLAGS) |
249 |
|
250 |
endif |
251 |
|
252 |
############################################################################### |
253 |
|
254 |
# Erreur |
255 |
else |
256 |
|
257 |
%: all |
258 |
all: |
259 |
@echo -e $(ERREUR) |
260 |
@exit 1 |
261 |
|
262 |
endif |