source: trunk/Makefile @ 4

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