-
Virgile Prevosto authored
[Ptests] preserve LOG after STDOPT directive See merge request frama-c/frama-c!2073
Virgile Prevosto authored[Ptests] preserve LOG after STDOPT directive See merge request frama-c/frama-c!2073
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
makeLatex 7.62 KiB
# Fichier inclure dans son makefile pour faire des compilation latex.
# L'utilisateur doit dfinir certaines variables (notes +)
# et peut en option en (re)dfinir d'autres (notes *) :
#
# === outils (peuvent tre redfinis si on veut prciser le path par exemple) :
# TEXI (= texi2dvi)
# HEVEA (HEVEAOPTS), HACHA
# === fichiers :
# * TOPTEX=top.tex : dtermin par dfaut par un grep de documentclass
# * GENERATED_TEX= : fichiers .tex gnrs (vide par dfaut)
#
# * FIGURES_TODO= : noms de figures sans extension (-> .eps + .pdf)
# (suppose qu'on a le .eps et le .pdf
# ou qu'on sait a une cible pour les fabriquer...)
#
# * HVA=macros.hva : si on a besoin de dfinir des choses pour hevea
#
# Les figures (fichiers .fig) sont compils en postscript et/ou en pdf
# en fonction des besoins. Si on souhaite compiler une figure en latex
# (formules, etc) il faut simplement nommer le fichier *.tex.fig
#
# === les cibles fournies sont :
# ps, pdf, doc (= ps + pdf), html,
# debug_latex,
# clean_latex, clean_hevea, clean
#
# loop : lance gv sur TOPTEX.ps et une boucle de compilation qui met jour
# le contenu visualis.
# Il est conseill d'utiliser plutt la cible 'sloop' pour ne pas avoir
# un cran qui dfile en permanence.
#------------------------------------------------------------------------------
# l'avantage de texi2dvi par rapport latex,
# c'est qu'il s'occupe de l'index, de la biblio,
# et de lancer latex autant de fois qu'il le faut.
TEXI?=texi2dvi
TEXI2DVI=TEXINPUTS="$(TEXINPUTS)" BIBINPUTS="$(BIBINPUTS)" $(TEXI)
TEXI2PDF=$(TEXI2DVI) --pdf
# on n'utilise plus de traduction type caml2tex, mais directement :
# \lstinputlisting[language=caml]{truc.ml}
# dans le fichier latex
TEX = $(shell ls *.tex)
GENERATED_TEX ?=
IMAGE_TEX = $(shell ls *.image.tex 2>/dev/null)
SRC_TEX = $(filter-out $(IMAGE_TEX) $(GENERATED_TEX),$(TEX))
ALL_TEX = $(TEX) $(GENERATED_TEX)
TOPTEX ?= $(shell grep -l documentclass $(SRC_TEX))
SRC = $(TOPTEX:%.tex=%)
DVI = $(SRC).dvi
PS = $(SRC).ps
PDF = $(SRC).pdf
CLASS = $(shell grep documentclass $(TOPTEX) \
| sed -e 's/.*\(book\).*/\1/' \
| sed -e 's/.*\(report\).*/\1/' \
| sed -e 's/.*\(article\).*/\1/')
FIGURES_TODO ?=
FIGURES_FIG = $(shell ls *.fig 2>/dev/null)
LATEX_FIGURES_FIG = $(shell ls *.tex.fig 2>/dev/null)
SIMPLE_FIGURES_FIG = $(filter-out $(LATEX_FIGURES_FIG), $(FIGURES_FIG))
SIMPLE_FIGURES_EPS = $(SIMPLE_FIGURES_FIG:%.fig=%.eps) $(FIGURES_TODO:%=%.eps)
SIMPLE_FIGURES_PDF = $(SIMPLE_FIGURES_FIG:%.fig=%.pdf) $(FIGURES_TODO:%=%.pdf)
FIGURES_PSTEX = $(LATEX_FIGURES_FIG:%.tex.fig=%.eps)
FIGURES_PDFTEX = $(LATEX_FIGURES_FIG:%.tex.fig=%.pdf)
FIGURES_TEX = $(LATEX_FIGURES_FIG:%.tex.fig=%.tex)
FIGURES_EPS = $(SIMPLE_FIGURES_EPS) $(FIGURES_PSTEX)
FIGURES_PDF = $(SIMPLE_FIGURES_PDF) $(FIGURES_PDFTEX)
GENERATED_FIGURES = $(FIGURES_EPS) $(FIGURES_PDF) $(FIGURES_TEX)
# plus utile : hevea se dbrouille tout seul.
#IMAGES_GIF = $(shell grep -s gif $(SRC).html | grep "^[ ]*<IMG" | sed -e 's=[^"]*"\(.*.gif\).*=\1=')
# TODO : tendre au cas d'une biblio multiple (plusieurs fichiers .bib).
BIB_NAME = $(shell grep -h "bibliography{" $(TOPTEX) \
| sed -e 's/\\bibliography{\(.*\)}/\1.bib/')
# TODO: modifier pour chercher dans BIBINPUTS
ifneq ($(strip $(BIB_NAME)),)
BIB_FILE = $(BIB_NAME)
#BBL_FILE must be empty is there is no BIB_FILE
BBL_FILE=$(SRC).bbl
endif
#------------------------------------------------------------------------------
# Cibles :
.PHONY: clean clean_hevea clean_latex
.PHONY : ps pdf doc html
.PHONY : debug_latex
ps : $(PS)
# no <TAB> here
pdf : $(PDF)
# no <TAB> here
doc : ps pdf
# no <TAB> here
html : index.html $(IMAGES_GIF)
# no <TAB> here
debug_latex :
@echo "SRC = $(SRC)"
@echo "TEX = $(TEX)"
@echo "GENERATED_TEX = $(GENERATED_TEX)"
@echo "BIB_FILE = $(BIB_FILE)"
@echo "BBL_FILE = $(BBL_FILE)"
@echo "GENERATED_FIGURES = $(GENERATED_FIGURES)"
@echo "IMAGES_GIF = $(IMAGES_GIF)"
@echo "TEXI2DVI = $(TEXI2DVI)"
@echo "HVA = $(HVA)"
#------------------------------------------------------------------------------
# Dpendances :
$(SRC).dvi : $(ALL_TEX) $(FIGURES_TEX) $(FIGURES_EPS) $(BBL_FILE) $(FIGURES_PDF)
# no <TAB> here
$(SRC).pdf : $(ALL_TEX) $(FIGURES_TEX) $(FIGURES_PDF) $(BBL_FILE)
# no <TAB> here
$(SRC).html : $(ALL_TEX) $(SRC).pdf $(SRC).bbl
# no <TAB> here
#------------------------------------------------------------------------------
# Regles de production :
# dessins .eps partir des .fig de xfig
%.eps : %.tex.fig
fig2dev -L pstex $< $@
%.eps : %.fig
fig2dev -L eps $< $@
%.pdf : %.tex.fig
fig2dev -L pdftex $< $@
%.pdf : %.fig
fig2dev -L pdf $< $@
%.tex : %.tex.fig
fig2dev -L pstex_t -p $* $< $@
%.pdf : %.eps
epstopdf $<
%.fig : %.dot
dot -Tfig $< > $@
%.fig : %.dia
dia --filter=fig $<
%.dvi : %.tex
@echo "=== Compilation de $<"
$(MAKE) clean_tmp_tex
$(TEXI2DVI) $<
$(SRC).bbl : $(BIB_FILE)
@echo "=== Fichier .bib plus rcent -> effacement du .bbl"
rm -f $(SRC).bbl
%.aux : %.dvi
@echo "=== Fichier .aux ok"
%.ps : %.dvi
@echo "=== Conversion PostScript de $<"
dvips $< -o
%.pdf : %.tex
@echo "=== Conversion en PDF de $<"
# ps2pdf -sPAPERSIZE=a4 $< $@
$(MAKE) clean_tmp_tex
$(TEXI2PDF) $<
#-------------------------------------------------------------------------------
# Makefile (originally from hevea documentation) :
HEVEA?=hevea
HEVEAOPTS?= -exec xxdate.exe -fix
HACHA?=hacha
#HVA = file.hva to be defined by user if needed
HVA ?=
$(SRC).html: $(HVA) $(SRC).tex
$(HEVEA) $(HEVEAOPTS) $(HVA) $(SRC).tex
index.html: $(SRC).html
$(HACHA) -o index.html $(SRC).html
# ceci n'est normalement plus utile sous UNIX grace l'option -fix de hevea
#$(IMAGES_GIF) : $(SRC).image.tex
#@echo "=== Gnration des images gif"
#imagen $(SRC)
#------------------------------------------------------------------------------
# boucle de mise au point :
LOOP_GOAL=$(PS)
until_success:
$(MAKE) $(LOOP_GOAL); \
while [ $$? -ne 0 ]; do \
touch $(DVI) $(PS) $(PDF); \
$(MAKE) -q $(LOOP_GOAL); \
while [ $$? -eq 0 ]; do \
sleep 1; \
$(MAKE) -q $(LOOP_GOAL); \
done; \
$(MAKE) $(LOOP_GOAL); \
done
loop:
$(MAKE) until_success
gv -watch $(PS) &
while ( true ); do \
$(MAKE) until_success; \
sleep 2; \
done
sloop:
$(MAKE) -s loop
#------------------------------------------------------------------------------
clean_hevea :
@echo "=== Mnage des fichiers hevea"
rm -f $(SRC).html $(SRC).h{toc,aux,ind,idx} $(SRC).cb
rm -f index.html $(SRC)[0-9][0-9][0-9].html $(SRC).css
rm -f $(SRC).image.cb $(SRC).image.tex $(SRC)[0-9][0-9][0-9].gif
rm -f previous_motif.gif next_motif.gif contents_motif.gif
clean_tmp_tex :
@echo "=== Mnage des fichiers temporaires de latex"
rm -f $(SRC).aux
rm -f $(SRC).log
rm -f $(SRC).blg
rm -f $(SRC).idx
rm -f $(SRC).ind
rm -f $(SRC).ilg
rm -f $(SRC).toc
rm -f $(SRC).loc
rm -f $(SRC).lof
rm -f $(SRC).lot
rm -f $(SRC).out
clean_latex : clean_tmp_tex
@echo "=== Mnage des fichiers latex"
rm -f $(SRC).bbl
rm -f $(SRC).dvi
rm -f $(SRC).ps
rm -f $(SRC).pdf
@echo "=== Mnage des figures"
rm -f *.~[0-9]*~ *.bak *~
rm -f $(GENERATED_FIGURES)
clean : clean_latex clean_hevea
#------------------------------------------------------------------------------
# vim: set filetype=make :
#------------------------------------------------------------------------------