# Programs
FOP := $(HOME)/fop-0.92beta/fop
XSLTPROC := xsltproc

# Inputs/outputs
NAMES := ccxslt1 ccxslt2 ccxslt3
XML := $(NAMES:%=xml/%.xml)
PRINTFO := $(NAMES:%=print/%.fo)
PRINTPDF := $(NAMES:%=print/%.pdf)
PRINTPS := $(NAMES:%=print/%.ps)
SLIDESFO := $(NAMES:%=slides/%.fo)
SLIDESPDF := $(NAMES:%=slides/%.pdf)
SLIDESPS := $(NAMES:%=slides/%.ps)
HTML := $(NAMES:%=html/%-all.html)
PDFONE := $(PRINTPDF) $(SLIDESPDF)
PSONE := $(PRINTPS) $(SLIDESPS)
PDFSIX := $(PDFONE:%.pdf=%-6.pdf)
PSSIX := $(PSONE:%.ps=%-6.ps)
PDF := $(PDFONE) $(PDFSIX)
PS := $(PSONE) $(PSSIX)

.PHONY: all clean
all: $(PDF) $(PS) $(HTML)

clean:
	rm -f $(PDF) $(PS) $(HTML)
	rm -f $(PRINTFO) $(SLIDESFO)

%.pdf: %.fo
	$(FOP) $< -pdf $@

%.ps: %.fo
	$(FOP) $< -ps $@

%-6.ps: %.ps
	psnup -W11in -H8.5in -d -6 $< $@

%-6.pdf: %-6.ps
	ps2pdf $< $@

print/%.fo: xml/%.xml xsl/print.xsl xsl/fo.xsl
	$(XSLTPROC) xsl/print.xsl $< > $@

slides/%.fo: xml/%.xml xsl/slides.xsl xsl/fo.xsl
	$(XSLTPROC) xsl/slides.xsl $< > $@

html/%-all.html: xml/%.xml xsl/html.xsl
	$(XSLTPROC) xsl/html.xsl $< > $@

html.mk: $(XML) xsl/count.xsl
	rm -f $@
	for i in $(NAMES); do \
		echo .PHONY: html/$$i >> $@; \
		c=$$($(XSLTPROC) xsl/count.xsl xml/$$i.xml); \
		for n in $$(seq $$c); do \
			echo html/$$i:: html/$$i-$$n.html >> $@; \
		done; \
	done

html/%-1.html: xml/%.xml xsl/html.xsl
	$(XSLTPROC) xsl/html.xsl $< --param page 1 > $@
