DOCS:=thesis
-LATEX:=pdflatex
-BIBTEX:=bibtex
+GREP?=grep
+LATEX?=pdflatex
+BIBTEX?=bibtex
BIBTEXFLAGS:=
-LATEXFLAGS:=-file-line-error -halt-on-error -no-shell-escape
+MAKEGLOSSARIES?=makeglossaries
+MAKEGLOSSARIESFLAGS?=
+LATEXFLAGS:=\
+ -file-line-error\
+ -halt-on-error\
+ -no-shell-escape\
+ -output-directory=./output/
-.PHONY: all clean
-.SECONDARY: $(addsuffix .fmt,$(DOCS))
+FIGURES:=$(addsuffix .png,$(addprefix img/,$(notdir $(basename $(wildcard fig/*.dot)))))
+LISTINGS:=$(wildcard listings/*)
+TEXS:=$(wildcard *.bib)
+BIBS:=$(wildcard *.tex)
-all: $(addsuffix .pdf,$(DOCS))
+.PHONY: all clean
+.SECONDARY: $(addsuffix .fmt,$(DOCS)) $(FIGURES)
-%.fmt: %.pre
- $(LATEX) $(LATEXFLAGS) -ini -jobname="$(basename $@)" "&$(LATEX) $<\dump"
+all: $(addprefix output/,$(addsuffix .pdf,$(DOCS)))
-%.fmt: preamble.tex
- $(LATEX) $(LATEXFLAGS) -ini -jobname="$(basename $@)" "&$(LATEX) $<\dump"
+output/%.fmt: %.pre
+ $(LATEX) $(LATEXFLAGS) -ini -jobname="$(basename $<)" "&$(LATEX) $<\dump"
-%.pdf: %.mlog
- grep -iFq 'Rerun to get' $< &&\
- $(LATEX) $(LATEXFLAGS) $(basename $<) || true
+output/%.pdf: %.mlog
+ if $(GREP) -iFq 'Rerun' $<; then $(LATEX) $(LATEXFLAGS) $(basename $<); fi
-%.mlog: %.tex %.fmt $(wildcard *.bib)
+%.mlog: %.tex output/%.fmt $(BIBS) $(TEXS) $(FIGURES) $(LISTINGS)
$(LATEX) $(LATEXFLAGS) $<
- grep -q '^\\bibdata{' $(basename $<).aux &&\
- $(BIBTEX) $(BIBTEXFLAGS) $(basename $<) || true
+ if $(GREP) -q '^\\bibdata{' $(basename $<).aux; then $(BIBTEX) $(BIBTEXFLAGS) $(basename $<); fi
+ if $(GREP) -q '\@istfilename' $(basename $<).aux; then $(MAKEGLOSSARIES) $(MAKEGLOSSARIESFLAGSFLAGS) $(basename $<); fi
$(LATEX) $(LATEXFLAGS) $< | tee $@
+img/%.png: fig/%.dot
+ dot -Tpng $< > $@
+
clean:
- $(RM) $(foreach DOC,$(DOCS),\
- $(addprefix $(DOC).,aux log fmt toc bbl blg run.xml out pdf snm nav snm vrb))
+ $(RM) output/* $(FIGURES)