# Makefile for LaTeX files LATEX = latex BIBTEX = bibtex MAKEINDEX = makeindex XDVI = xdvi -gamma 4 DVIPS = dvips #DVIPDF = dvipdft DVIPDF = dvipdfm -p a4 L2H = latex2html GH = gv RERUN = "(There were undefined references|Rerun to get (cross-references|the bars) right)" RERUNBIB = "No file.*\.bbl|Citation.*undefined" MAKEIDX = "^[^%]*\\makeindex" MPRINT = "^[^%]*print" USETHUMBS = "^[^%]*thumbpdf" SRC := $(shell egrep -l '^[^%]*\\begin\{document\}' *.tex) BIBFILE := $(shell perl -ne '($$_)=/^[^%]*\\bibliography\{(.*?)\}/;@_=split /,/;foreach $$b (@_) {print "$$b.bib "}' $(SRC)) EPSPICS := $(shell perl -ne '@foo=/^[^%]*\\(includegraphics|psfig)(\[.*?\])?\{(.*?)\}/g;if (defined($$foo[2])) { if ($$foo[2] =~ /.eps$$/) { print "$$foo[2] "; } else { print "$$foo[2].eps "; }}' *.tex) DEP = *.tex TRG = $(SRC:%.tex=%.dvi) PSF = $(SRC:%.tex=%.ps) PDF = $(SRC:%.tex=%.pdf) COPY = if test -r $(<:%.tex=%.toc); then cp $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); fi RM = rm -f OUTDATED = echo "EPS-file is out-of-date!" && false all : $(TRG) define run-latex $(COPY);$(LATEX) $< egrep -q $(MAKEIDX) $< && ($(MAKEINDEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) ; true egrep -c $(RERUNBIB) $(<:%.tex=%.log) && ($(BIBTEX) $(<:%.tex=%);$(COPY);$(LATEX) $<) ; true egrep -q $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) ; true egrep -q $(RERUN) $(<:%.tex=%.log) && ($(COPY);$(LATEX) $<) ; true if cmp -s $(<:%.tex=%.toc) $(<:%.tex=%.toc.bak); then true ;else $(LATEX) $< ; fi $(RM) $(<:%.tex=%.toc.bak) # Display relevant warnings egrep -i "(Reference|Citation).*undefined" $(<:%.tex=%.log) ; true endef $(TRG) : %.dvi : %.tex $(DEP) $(EPSPICS) $(BIBFILE) @$(run-latex) $(PSF) : %.ps : %.dvi @$(DVIPS) -z $< -o $@ $(PDF) : %.pdf : %.dvi @$(DVIPDF) -o $@ $< show : $(TRG) @for i in $(TRG) ; do $(XDVI) $$i & ; done showps : $(PSF) @for i in $(PSF) ; do $(GH) $$i & ; done ps : $(PSF) pdf : $(PDF) # TODO: This probably needs fixing html : @$(DEP) $(EPSPICS) @$(L2H) $(SRC) clean : -rm -f $(TRG) $(PSF) $(PDF) $(TRG:%.dvi=%.aux) $(TRG:%.dvi=%.bbl) $(TRG:%.dvi=%.blg) $(TRG:%.dvi=%.log) $(TRG:%.dvi=%.out) .PHONY : all show clean ps pdf showps ###################################################################### # Define rules for EPS source files. %.eps: %.sxd $(OUTDATED) %.eps: %.sda $(OUTDATED) %.eps: %.png bmeps $< $(<:%.png=%.eps) %.eps: %.sxc $(OUTDATED) %.eps: %.xcf $(OUTDATED) %.eps: %.zargo $(OUTDATED) %.eps: %.m @egrep -q $(MPRINT) $< && ($(OUTDATED))