source: trunk/Makefile @ 3

Last change on this file since 3 was 2, checked in by g7moreau, 13 years ago
  • Add Makefile
File size: 13.5 KB
Line 
1####################################################################
2###                                                              ###
3###             Makefile pour  LaTeX                             ###
4###                                                              ###
5####################################################################
6#
7# Copyright 2000-2011 Gabriel Moreau / Vincent Morra
8
9# Il y a encore pas mal de bug dans ce makefile
10# génération du these.ps -> des merdouilles au niveau
11# des figures. Solution: aller sous tmp/ et dvips à la main
12
13QUIX := A.linux
14
15DOCUMENT := these
16
17ARBO_TEX := ./
18
19ARBO_FIG := $(ARBO_TEX)
20
21################################################################
22
23DIR_PROJET := $(shell pwd | perl -p -e 's!/src/?.*$!!!' )
24DIR_TMP    := $(DIR_PROJET)/tmp
25DIR_DOC    := $(DIR_PROJET)/doc
26DIR_PS     := $(DIR_DOC)/ps
27DIR_PDF    := $(DIR_DOC)/pdf
28DIR_HTML   := $(DIR_DOC)/html
29
30################################################################
31
32LATEX  := latex
33BIBTEX := bibtex
34L2H    := latex2html
35PDFTEXPRE := export TEXMFOUTPUT="$(DIR_TMP)";
36PDFTEXPRE += export TEXINPUTS="$(DIR_PROJET)/src:toto:$(DIR_TMP):";
37PDFTEXPRE += export LANG="C";
38PDFTEX := pdflatex
39DVIPS  := dvips
40RM     := rm -f
41BIN_PROTECT   := chmod u-w .
42BIN_UNPROTECT := chmod u+w .
43
44# NE PAS TOUCHER A PARTIR D'ICI
45################################################################
46
47SRC_FIG     := $(notdir $(foreach dir,$(ARBO_FIG),$(wildcard $(dir)/*.fig)))
48SRC_TEX     := $(notdir $(foreach dir,$(ARBO_TEX),$(wildcard $(dir)/*.tex)))
49SRC_BIB     := biblio.bib
50
51#OBJ_PSTEX   := $(patsubst %.fig,$(DIR_TMP)/%.pstex,  $(SRC_FIG))
52#OBJ_PDFTEX   := $(patsubst %.fig,$(DIR_TMP)/%.pdftex,   $(SRC_FIG))
53OBJ_EPS      := $(patsubst %.fig,$(DIR_TMP)/%.eps,      $(SRC_FIG))
54OBJ_PSTEX_T  := $(patsubst %.fig,$(DIR_TMP)/%.pstex_t,  $(SRC_FIG))
55OBJ_PDF      := $(patsubst %.fig,$(DIR_TMP)/%.pdf,      $(SRC_FIG))
56OBJ_PDFTEX_T := $(patsubst %.fig,$(DIR_TMP)/%.pdftex_t, $(SRC_FIG))
57
58OBJ_BASE    := $(DIR_TMP)/$(DOCUMENT)
59
60
61RERUNTEX := "(There were undefined references|Rerun to get (cross-references|the bars) right)"
62RERUNBIB := "No file.*\.bbl|Citation.*undefined" 
63
64COPYTOC := if test -r $(OBJ_BASE).toc; then cp $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; fi 
65
66vpath %.fig       $(ARBO_FIG)
67vpath %.pstex     $(DIR_TMP)
68vpath %.pstex_t   $(DIR_TMP)
69vpath %.pdftex    $(DIR_TMP)
70vpath %.pdftex_t  $(DIR_TMP)
71vpath %.pdf     . $(DIR_TMP)
72vpath %.eps     . $(DIR_TMP)
73
74.PHONY: all dossier
75.PHONY: doc docps docpdf
76.PHONY: html
77.PHONY: xpdf xdvi gv
78.PHONY: echo clean miniclean help
79.PHONY: figure bibtex
80.PHONY: pdflatex pdf 
81.PHONY: latex    dvi
82.PHONY: protect unprotect
83.PHONY: warning review
84.SUFFIXES:
85
86#--------------------------------------------------------------#
87
88all: dossier doc
89
90dossier: $(DIR_HTML) $(DIR_PS) $(DIR_PDF) $(DIR_TMP)
91        @echo '############################################################'
92        @echo '### Fin de la gestion des dossiers'
93        @echo '############################################################'
94
95#--------------------------------------------------------------#
96
97xpdf: $(DIR_TMP)/$(DOCUMENT).pdf
98        xpdf $(DIR_TMP)/$(DOCUMENT).pdf &
99        @echo '############################################################'
100        @echo '####  Visualisation de $(DOCUMENT)'
101        @echo '############################################################'
102
103xdvi: $(DIR_TMP)/$(DOCUMENT).dvi
104        export XEDITOR="nedit-nc -line %l %f"; \
105        xdvi -bg grey95 $(DIR_TMP)/$(DOCUMENT) &
106        @echo '############################################################'
107        @echo '####  Visualisation de $(DOCUMENT)'
108        @echo '############################################################'
109#       xdvi -hl white $(DIR_TMP)/$(DOCUMENT) &
110
111gv:$(DIR_PS)/$(DOCUMENT).ps
112        gv $(DIR_PS)/$(DOCUMENT).ps &
113        @echo '############################################################'
114        @echo '####  Visualisation de $(DOCUMENT)'
115        @echo '############################################################'
116
117#--------------------------------------------------------------#
118
119doc: docpdf docps
120        @echo '############################################################'
121        @echo '### Fin de la compilation '
122        @echo '############################################################'
123
124docpdf: $(DIR_PDF)/$(DOCUMENT).pdf
125        @echo '############################################################'
126        @echo '### Fin de la doc pdf'
127        @echo '############################################################'
128
129docps: $(DIR_PS)/$(DOCUMENT).ps
130        @echo '############################################################'
131        @echo '### Fin de la doc postscript'
132        @echo '############################################################'
133
134html: $(DIR_HTML)
135        latex2html -split 3 -local_icons -no_math -white \
136        -tmp /tmp -dir $(DIR_HTML) -prefix $(DOCUMENT) -antialias $(DOCUMENT).tex
137
138#--------------------------------------------------------------#
139
140warning:
141        @echo '############################################################'
142        @echo '### Liste des warnings dans le documents'
143        @echo '############################################################'
144#       @touch -r $(DOCUMENT).tex $(DIR_TMP)/warning.log
145        @touch -r$(DIR_TMP)/warning.log
146        @touch $(DOCUMENT).tex
147#       @make simple | grep Warning | grep -v Marginpar
148#       @touch  -r $(DIR_TMP)/warning.log $(DOCUMENT).tex
149        @touch  -r $(DIR_TMP)/warning.log
150
151review:
152        @echo '############################################################'
153        @echo "### Liste des `grep -HnE '\\rev(add|del|mark|par|forget)' -r . | grep -E '^*/.*\.tex\:' | grep -v macro_review.tex | wc -l` reviews dans le documents"
154        @echo '############################################################'
155        @grep -HnE '\\rev(add|del|mark|par|forget)' -r . | grep -E '^*/.*\.tex\:' | grep -v macro_review.tex
156
157#--------------------------------------------------------------#
158
159echo: 
160        @echo '############################################################'
161        @echo '### Liste des variables '
162        @echo '############################################################'
163        @echo SRC_FIG       $(SRC_FIG)
164        @echo SRC_TEX       $(SRC_TEX)
165        @echo OBJ_PSTEX     $(OBJ_PSTEX)
166        @echo OBJ_PSTEX_T   $(OBJ_PSTEX_T)
167        @echo OBJ_PDF       $(OBJ_PDF)
168
169clean: 
170        @echo '############################################################'
171        @echo '####  Nettoyage'
172        @echo '############################################################'
173        $(RM) $(DOCUMENT).aux \
174        $(DOCUMENT).log \
175        $(DOCUMENT).bbl \
176        $(DOCUMENT).blg \
177        $(DOCUMENT).brf \
178        $(DOCUMENT).cb  \
179        $(DOCUMENT).ind \
180        $(DOCUMENT).idx \
181        $(DOCUMENT).ilg \
182        $(DOCUMENT).dvi \
183        $(DOCUMENT).inx \
184        $(DOCUMENT).toc \
185        $(DOCUMENT).out \
186        $(DOCUMENT).lof \
187        $(DOCUMENT).lot \
188        $(DOCUMENT).pdf \
189        $(OBJ_PSTEX) \
190        $(OBJ_PSTEX_T) \
191        $(OBJ_PDF) \
192        $(DIR_PDF)/$(DOCUMENT).pdf \
193        $(DIR_TMP)/*
194
195miniclean: 
196        @echo '############################################################'
197        @echo '####  Nettoyage tres partiel'
198        @echo '############################################################'
199        $(RM)   $(DIR_TMP)/$(DOCUMENT).aux \
200                $(DIR_TMP)/$(DOCUMENT).toc \
201                $(DIR_TMP)/$(DOCUMENT).lof
202
203#--------------------------------------------------------------#
204
205figure: $(OBJ_PDF) $(OBJ_PDFTEX_T) $(OBJ_EPS) $(OBJ_PSTEX_T)
206        @echo '############################################################'
207        @echo '####  Fin des figures'
208        @echo '############################################################'
209
210#--------------------------------------------------------------#
211
212protect:
213        $(BIN_PROTECT)
214        @echo '############################################################'
215        @echo '#### Mise en place de la protection du dossier source'
216        @echo '############################################################'
217
218unprotect:
219        $(BIN_UNPROTECT)
220        @echo '############################################################'
221        @echo '#### Suppression de la protection du dossier source'
222        @echo '############################################################'
223
224#--------------------------------------------------------------#
225
226pdflatex: figure
227        @echo '############################################################'
228        @echo '####  Debut du formateur pdflatex'
229        @echo '############################################################'
230        $(BIN_PROTECT)
231        $(PDFTEXPRE) $(PDFTEX) $(DOCUMENT).tex; true
232        $(BIN_UNPROTECT)
233        @echo '############################################################'
234        @echo '####  Fin du formateur pdflatex'
235        @echo '############################################################'
236
237latex: figure
238        @echo '############################################################'
239        @echo '####  Debut du formateur latex'
240        @echo '############################################################'
241        $(BIN_PROTECT)
242        $(PDFTEXPRE) $(LATEX) -src $(DOCUMENT).tex; true
243        $(BIN_UNPROTECT)
244        @echo '############################################################'
245        @echo '####  Fin du formateur latex'
246        @echo '############################################################'
247
248bibtex:
249        @echo '############################################################'
250        @echo '####  Debut de la bibliographie'
251        @echo '############################################################'
252        $(BIBTEX) $(OBJ_BASE)
253        @echo '############################################################'
254        @echo '####  Fin de la bibliographie'
255        @echo '############################################################'
256
257#--------------------------------------------------------------#
258
259help:
260        @echo '############################################################'
261        @echo '# all       -> compilation complete'
262        @echo '# dossier   -> création des dossiers du projet'
263        @echo '# clean     -> nettoyage partiel'
264        @echo '# pdf       -> compilation simple avec dependance -> pdf'
265        @echo '# dvi       -> compilation simple avec dependance -> dvi'
266        @echo '# xpdf      -> visualisation du resultat pdf'
267        @echo '# xdvi      -> visualisation du resultat dvi'
268        @echo '# gv        -> visualisation du resultat ps'
269        @echo '# warning   -> liste de tous les warnings'
270        @echo '# review    -> liste de toutes les remarques'
271        @echo '# pdflatex  -> compilation du source tex -> pdf'
272        @echo '# latex     -> compilation du source tex -> dvi'
273        @echo '# bibtex    -> compilation du source bibtex'
274        @echo '# protect   -> protection du dossier source'
275        @echo '# unprotect -> suppression de la protection'
276        @echo '############################################################'
277
278#--------------------------------------------------------------#
279
280pdf: $(DIR_TMP)/pdf.ok
281
282dvi: $(DIR_TMP)/dvi.ok
283
284$(DIR_TMP)/pdf.ok: $(DOCUMENT).tex $(SRC_TEX) $(OBJ_PDF) $(OBJ_PDFTEX_T)
285        make pdflatex
286        touch $<
287
288$(DIR_TMP)/dvi.ok: $(DOCUMENT).tex $(SRC_TEX) $(OBJ_EPS) $(OBJ_PSTEX_T)
289        make latex
290        touch $<
291
292################################################################
293
294$(DIR_TMP)/$(DOCUMENT).pdf: $(DOCUMENT).tex $(SRC_BIB) $(SRC_TEX) $(OBJ_PDF) $(OBJ_PSTEX_T)
295        $(COPYTOC)
296        make pdflatex
297        egrep -c $(RERUNBIB) $(OBJ_BASE).log && (make bibtex;$(COPYTOC); make pdflatex); true
298        egrep $(RERUNTEX) $(OBJ_BASE).log    && ($(COPYTOC); make pdflatex); true
299        egrep $(RERUNTEX) $(OBJ_BASE).log    && ($(COPYTOC); make pdflatex); true
300        if cmp -s $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; then echo 'end'; else make pdflatex; fi
301        $(RM) $(OBJ_BASE).toc.bak
302#       egrep -i "(Reference|Citation).*undefined" $(OBJ_BASE).log; true
303# Display relevant warnings
304
305################################################################
306
307################################################################
308
309$(DIR_TMP)/$(DOCUMENT).dvi: $(DOCUMENT).tex $(SRC_BIB) $(SRC_TEX) $(OBJ_EPS) $(OBJ_PSTEX_T)
310        $(COPYTOC)
311        make latex
312        egrep -c $(RERUNBIB) $(OBJ_BASE).log && (make bibtex;$(COPYTOC); make latex); true
313        egrep $(RERUNTEX) $(OBJ_BASE).log    && ($(COPYTOC); make latex); true
314        egrep $(RERUNTEX) $(OBJ_BASE).log    && ($(COPYTOC); make latex); true
315        if cmp -s $(OBJ_BASE).toc $(OBJ_BASE).toc.bak; then echo 'end'; else make latex; fi
316        $(RM) $(OBJ_BASE).toc.bak
317#       egrep -i "(Reference|Citation).*undefined" $(OBJ_BASE).log; true
318# Display relevant warnings
319
320################################################################
321
322#$(DIR_PS)/%.ps: $(DIR_PDF)/%.pdf
323#       pdftops $< $@
324
325
326$(DIR_PS)/%.ps: $(DIR_TMP)/%.dvi
327        $(PDFTEXPRE) 
328        dvips $< -o $@
329
330$(DIR_PDF)/%.pdf: $(DIR_TMP)/%.pdf
331        echo ---
332        rm -f $@
333        echo ---
334        cp $< $@
335#       ln -f $< $@
336#       je sais pas pourquoi mais le lien ne marche pas bien avec le make
337
338################################################################
339# figure
340
341#$(DIR_TMP)/%.pdf: $(DIR_TMP)/%.pstex $(DIR_TMP)/%.pstex_t
342#       ps2pdf  $<  $@
343#       cd $(DIR_TMP); \
344#       sed 's/\.pstex/.pdf/' $*.pstex_t > $*.tmp; \
345#       mv $*.tmp $*.pstex_t; \
346#       sed 's/\\epsfig{file=/\\includegraphics{/' $*.pstex_t > $*.tmp; \
347#       mv $*.tmp $*.pstex_t 
348
349$(DIR_TMP)/%.pstex: %.fig
350        fig2dev -L pstex $< $@
351
352$(DIR_TMP)/%.eps: %.fig
353        fig2dev -L pstex $< $@
354
355$(DIR_TMP)/%.pstex_t: %.fig $(DIR_TMP)/%.pstex
356        fig2dev -L pstex_t -p $* $< $@
357#       fig2dev -L pstex_t -E 1 -p $* $< $@
358
359#$(DIR_TMP)/%.pstex_t: $(DIR_TMP)/%.pstex %.fig
360#       fig2dev -L pstex_t -p $^ $@
361
362ifeq "$(QUIX)" "A.linux"
363$(DIR_TMP)/%.pdftex: %.fig
364        fig2dev -L pdftex $< $@
365endif
366ifeq "$(QUIX)" "A.darwin"
367$(DIR_TMP)/%.pdftex: %.fig
368        fig2dev -L pstex $< $(patsubst %.pdftex,%.pstex,$@)
369        ps2pdf $(patsubst %.pdftex,%.pstex,$@)  $@
370endif
371
372ifeq "$(QUIX)" "A.linux"
373$(DIR_TMP)/%.pdf: %.fig
374        fig2dev -L pdftex $< $@
375endif
376ifeq "$(QUIX)" "A.darwin"
377$(DIR_TMP)/%.pdf: %.fig
378        fig2dev -L pstex $< $(patsubst %.pdf,%.eps,$@)
379        ps2pdf $(patsubst %.pdf,%.eps,$@)  $@
380endif
381
382$(DIR_TMP)/%.pdftex_t: %.fig $(DIR_TMP)/%.pdftex
383        fig2dev -L pdftex_t -p $* $< $@
384#       fig2dev -L pdftex_t -E 1 -p $* $< $@
385
386################################################################
387# dossier
388
389$(DIR_DOC):
390        mkdir -p $@
391        chmod ugo+rx $@
392
393$(DIR_TMP):
394        mkdir -p $@
395        chmod ugo+rwx $@
396
397$(DIR_PS): $(DIR_DOC)
398        mkdir -p $@
399        chmod ugo+rx $@
400
401$(DIR_PDF): $(DIR_DOC)
402        mkdir -p $@
403        chmod ugo+rx $@
404
405$(DIR_HTML): $(DIR_DOC)
406        mkdir -p $@
407        chmod ugo+rx $@
Note: See TracBrowser for help on using the repository browser.