diff options
Diffstat (limited to '2005/flow-accounting-ols2005/OLS2005/Makefile')
-rw-r--r-- | 2005/flow-accounting-ols2005/OLS2005/Makefile | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/2005/flow-accounting-ols2005/OLS2005/Makefile b/2005/flow-accounting-ols2005/OLS2005/Makefile new file mode 100644 index 0000000..1b0ee7a --- /dev/null +++ b/2005/flow-accounting-ols2005/OLS2005/Makefile @@ -0,0 +1,141 @@ +# Makefile for proceedings using the OLS/GCCSummit schema. + +# Tools - some of the dvi programs are from dviutils-1.0-9.rpm +# pdftk is from pdftk-1.12-0.rpm +LATEX = latex +BIBTEX = bibtex +DVIPS = dvips +DVIPDF = echo dvipdfm +DVICONCAT = dviconcat +PDFCONCAT = pdftk +# EXTRATEX = /usr/share/texmf: +# Note: dvipdfm can be used to generate PDF from DVI in a pinch, +# but pdflatex seems to do slightly better. We'll invoke both +# latex and pdflatex in the latex2dvi script, and skip dvipdfm +# for now. + +all: papers + +# Get the set of all papers. DIRS can be set on the command line to +# suppress some of the papers; as a side effect this disables +# generation of the proceedings. + +# To rebuild the Example paper, delete the EXAMPLE/ from the DIRS line below +#DIRS := $(subst /,,$(filter-out Texmf/ TEMPLATES/, $(wildcard */))) +ifeq ($(DIRS),) +DIRS := $(subst /,,$(filter-out EXAMPLE/ Texmf/ TEMPLATES/, $(wildcard */))) +all: proceedings ProcSeq.mk + +# Writing a dependency list for this file is impossible. We want it +# to be regenerated only when the set of subdirectories changes, but +# there is no way to know that. Fortunately, generating it is cheap. +ifneq ($(MAKECMDGOALS), clean) +include ProcSeq.mk +ProcSeq.mk: + @set fnord $(DIRS); shift; \ + while [ $$# -gt 0 ]; do \ + dir=$${1%/}; shift; \ + printf '%s/%s-proc.tex: %s/%s-proc.stmp; @:\n' \ + $$dir $$dir $$dir $$dir; \ + printf '%s/%s-proc.stmp: ProcDefs.tex %s\n' $$dir $$dir $$prev; \ + printf '\t./Texmf/make-wrapper $$^ $$@\n'; \ + prev=$$dir/$$dir-proc.aux; \ + done > $@T + @mv -f $@T $@ +endif +endif + +SUBMAKES := $(DIRS:=/Makefile.inc) +include $(SUBMAKES) + +# $(space) expands to a single space. +space := $(empty) $(empty) +SEARCHPATH := $(subst $(space),:,$(DIRS)): # intentional trailing colon + +# Render PDF and PostScript for each individual paper. +PS = $(PAPERS:.dvi=.ps) +PDF = $(PAPERS:.dvi=.pdf) + +papers: $(PS) $(PDF) +proceedings: Proceedings.ps Proceedings.pdf + +# Render PDF and PostScript for the entire proceedings. This works as +# follows: For each paper we generate a wrapper file, $(paper)-proc.tex, +# which reads $(paper).tex in proceedings mode. The content of this file +# depends on a small number of settings extracted from the top-level +# Proceedings.tex, and the .aux file of the alphabetically previous paper. +# A DVI file generated (in the usual manner) from that wrapper file will +# be suitable for concatenation with all the other DVIs to make the full +# proceedings DVI, from which we then generate PostScript and PDF as usual. + +# Stamp-file pattern to prevent trivial changes in Proceedings.tex from +# triggering a complete rebuild. +ProcDefs.tex: ProcDefs.stmp; @: +ProcDefs.stmp: Frontmatter.tex + { echo '\PassOptionsToClass{proceedings}{ols}'; \ + fgrep '\def\Proc' $<; } > ProcDefs.texT + ./Texmf/move-if-change ProcDefs.texT ProcDefs.tex + echo timestamp > $@ + +ProcToc.tex: ProcToc.stmp; @: +ProcToc.stmp: $(PAPERS:.dvi=-proc.aux) + ./Texmf/make-toc $(@:.stmp=.tex) $^ + echo timestamp > $@ + +# These must have explicit rules; the implicit rules below are geared to +# subdirectories, and will not work. +Frontmatter.dvi: Frontmatter.tex ProcToc.tex + ./Texmf/latex2dvi $(*F) + +Proceedings.dvi: Frontmatter.dvi $(PAPERS:.dvi=-proc.dvi) + $(DVICONCAT) -o $@ $^ + +Proceedings.pdf: Frontmatter.pdf $(PAPERS:.dvi=-proc.pdf) + $(PDFCONCAT) $^ cat output $@ + +Proceedings.ps: Proceedings.dvi + TEXINPUTS=$(SEARCHPATH) $(DVIPS) -q -o $@ $< + +# Proceedings.pdf: Proceedings.dvi +# TEXINPUTS=$(SEARCHPATH) $(DVIPDF) -q -o $@ $< + +# Utility. +clean: + -rm -f $(PAPERS) $(PS) $(PDF) + -rm -f $(PAPERS:.dvi=.aux) $(PAPERS:.dvi=.oaux) $(PAPERS:.dvi=.log) + -rm -f $(PAPERS:.dvi=.bbl) $(PAPERS:.dvi=.blg) + -rm -f $(PAPERS:.dvi=-proc.tex) $(PAPERS:.dvi=-proc.stmp) + -rm -f $(PAPERS:.dvi=-proc.dvi) $(PAPERS:.dvi=-proc.log) + -rm -f $(PAPERS:.dvi=-proc.pdf) + -rm -f $(PAPERS:.dvi=-proc.aux) $(PAPERS:.dvi=-proc.oaux) + -rm -f $(PAPERS:.dvi=-proc.bbl) $(PAPERS:.dvi=-proc.blg) + + -rm -f ProcSeq.mk ProcDefs.tex ProcDefs.stmp ProcToc.stmp ProcToc.tex + -rm -f Frontmatter.dvi Frontmatter.log Frontmatter.aux Frontmatter.oaux + -rm -f Proceedings.dvi Proceedings.ps Proceedings.pdf + +# Pattern rules. Generation of PDF/PS from DVI is straightforward. +%.pdf: %.dvi + cd $(@D) && $(DVIPDF) -o $(@F) $(<F) + +%.ps: %.dvi + cd $(@D) && $(DVIPS) -q -o $(@F) $(<F) + +.fig.eps: + fig2dev -L eps $< >$@ + +.fig.pdf: + fig2dev -L pdf $< >$@ + + +# Properly regenerating a .dvi file from the corresponding .tex file +# requires running LaTeX (and possibly BibTeX) in a loop. GNU make +# cannot be coded to do this, so we have a helper script to do it. +# We read the .aux files for nefarious purposes, so make needs to be +# aware that this operation generates them too. +%.dvi %.aux: %.tex + cd $(@D) && TEXINPUTS=../Texmf:$$TEXINPUTS ../Texmf/latex2dvi $(*F) + +.PHONY: all papers proceedings clean +.SECONDARY: # Never delete intermediate files. + |