default: paper.ps paper

DOC=paper

DOCSOURCES=$(DOC).lhs Patchy.lhs PrimPatch.lhs Patch.lhs \
	PatchSeqList.lhs ContextPatch.lhs
FIGURES=
PICS=

FIGSFIG=${FIGURES:=.fig}
FIGSEPS=${FIGURES:=.eps}
FIGSLATEX=${FIGURES:=.latex}

#PICSEPS=${PICS:=.eps} ${FIGSEPS}
PICSEPS=${PICS:=.eps}
PICSETEX=${PICSEPS:.eps=.eps.tex}
PICSPDF=${PICSEPS:.eps=.pdf}

$(DOC).idx $(DOC).aux $(DOC).dvi $(DOC).out $(DOC).pdf: $(DOCSOURCES)
$(DOC).aux $(DOC).dvi: $(PICSETEX) $(PICSEPS)
$(DOC).out $(DOC).pdf: $(PICSPDF)
$(DOC).aux $(DOC).out $(DOC).dvi $(DOC).pdf: $(FIGSLATEX)
$(DOC).dvi $(DOC).pdf: # $(DOC).ind $(DOC).bbl
$(DOC): $(DOCSOURCES)

FORCE:

clean:
	rm -f *.dvi *.aux *.log *.toc *.ps *.pdf *.bbl *.blg *.tpt \
	o *.hi paper \
	$(FIGSEPS) $(FIGSTEX) $(PICSTEX)

%: %.lhs
	ghc -Wall --make -o $@ $<

$(FIGSLATEX): %.latex: %.fig
	fig2dev -L latex -m 0.7 $< $@

$(FIGSEPS): %.eps: %.fig
	fig2dev -L eps $< $@

%.eps.tex: %.eps
	([ -x `which fig2ps2tex.sh` ] && fig2ps2tex.sh $< > $@) || (echo using fig2ps2tex ; fig2ps2tex $< > $@)

%.pdf.tex: %.eps.tex
	sed -e"s/eps/pdf/" $< > $@

$(PICSPDF): %.pdf: %.eps
	epstopdf $< || (rm $@ ; false)

$(DOC).aux: 
	latex $(DOC).lhs || ( rm $(DOC).aux $(DOC).dvi ; false)

$(DOC).dvi: 
	latex $(DOC).lhs || (rm $(DOC).aux $(DOC).dvi ; false)
	while grep "Rerun to get" $(DOC).log ; do latex $(DOC) ; done

$(DOC).bbl: $(DOC).aux $(DOC).bib
	([ -f $(DOC).bbl ] && mv $(DOC).bbl $(DOC).bbl.old) || true
	bibtex $(DOC)
	([ -f $(DOC).bbl.old ] && cmp $(DOC).bbl $(DOC).bbl.old && mv $(DOC).bbl.old $(DOC).bbl) || true

$(DOC).ind: $(DOC).idx
	makeindex $(DOC)

$(DOC).ps: $(DOC).dvi
	dvips $(DOC) -o $(DOC).ps

$(DOC).out:
	pdflatex $(DOC) || (rm $(DOC).aux $(DOC).out $(DOC).pdf ; false)
	(grep "Rerun to get" $(DOC).log && touch $(DOC).bbl) || true

thumbdta.tex: $(DOC).out
	thumbpdf $(DOC)

$(DOC).pdf: thumbdta.tex
	pdflatex $(DOC) || (rm $(DOC).aux $(DOC).out $(DOC).pdf ; false)
	while grep "Rerun to get" $(DOC).log ; do pdflatex $(DOC) ; done

dvi: $(DOC).dvi

ps: $(DOC).ps
pdf: $(DOC).pdf
