source: trunk/Makefile @ 8

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