source: trunk/Makefile @ 5

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