Newer
Older
Handbook / make-includes / standard_rules.make
nstanger on 22 Jan 2009 2 KB - Extended targets of various rules.
################################################################################
#
# File: $Id$
#
# Standard rules for a variety of situations. Includes standard suffixes and
# paths.
# 
#
################################################################################


################################################################################
#
# Required make variables. These should be defined by the calling makefile.
#
# SUBJECT_CODE
#	The paper number for the current paper, e.g., 212.
#
PAPER_NUMBER?=$(error The required make variable PAPER_NUMBER has not been defined. Please set it to the correct value)
#
# IMGDIR
#	The path to the directory that contains images, e.g., images.
#
IMGDIR?=$(error The required make variable IMGDIR has not been defined. Please set it to the directory in which images are located)


################################################################################
#
# Default rules.
#
#
# PDF from LaTeX via DVI, typically for images drawn using PSTricks).
# 
%.pdf %-print.pdf: $(IMGDIR)/%.tex
	latex --jobname=$(IMGDIR)/$* $<
	dvips -q -f $(IMGDIR)/$* | ps2eps -q -l | epstopdf -f -o=$(IMGDIR)/$@
#
# PDF from LaTeX.
#
%.pdf: %.tex
	pdflatex $<
	pdflatex $<
#
# 2-up PDF from 1-up PDF.
#
%-2up.pdf: %.pdf
	pdfnup $< --nup 2x1 --outfile $@
#
# Derived XML with inclusions from source XML without inclusions.
#
%-derived.xml: %.xml
	xmllint --xinclude $< > $@
#
# LaTeX from derived XML.
#
%.tex: %-derived.xml
	$(call xslt,$<,xml2latex.xsl,$(call xslt_parameter,paper,$(PAPER_NUMBER))) > $@
#
# HTML from derived XML.
#
%.html: %-derived.xml
	$(call xslt,$<,xml2html.xsl,$(call xslt_parameter,paper,$(PAPER_NUMBER))) > $@
#
# PDF and PNG from OmniGraffle. (We can't automate this.)
#
%.pdf %-print.pdf %.png %-web.png: %.graffle
	@echo "$(notdir $<): regenerate $(notdir $@)"
	@exit 1
#
# Various bitmap types embedded in OmniGraffle. (We can't automate this.)
#
%.graffle: %.png
	@echo "$(notdir $@): reinsert $(notdir $<)"
	@exit 1

%.graffle: %.jpg
	@echo "$(notdir $@): reinsert $(notdir $<)"
	@exit 1
#
# PNG from TIFF.
#
%.png %-print.png %-web.png: %.tif
	convert "$<" $(IMGDIR)/$@
#
# PNG from PICT.
#
%.png %-print.png %-web.png: %.pict
	convert "$<" $(IMGDIR)/$@
#
# PDF from Ploticus.
#
%.pdf %-print.pdf: %.plo
	ploticus -eps -tightcrop -o stdout $< | shiftbbox | epstopdf --filter --outfile=$(IMGDIR)/$@
#
# PDF from PS
#
%.pdf %-print.pdf: %.ps
	ps2eps --ignoreBB --nohires --loose < $< | ps2pdf -dEPSCrop - $(IMGDIR)/$@
#
# PDF from EPS
#
%.pdf %-print.pdf: %.eps
	ps2eps --ignoreBB --nohires --loose < $< | ps2pdf -dEPSCrop - $(IMGDIR)/$@
#
# PDF from SVG (via Inkscape)
# We remove the intermediate file manually rather than through the tidy/clean
# mechanism.
#
%.pdf %-print.pdf: %.svg
	inkscape --file=$< --export-text-to-path --without-gui --export-pdf=$*-tmp.pdf
	pdfcrop $*-tmp.pdf $@
	-rm -f $*-tmp.pdf
#
# PNG from SVG (via Inkscape)
#
%.png %-print.png %-web.png: %.svg
	inkscape --file=$< --without-gui --export-area-drawing --export-background-opacity=1.0 --export-dpi=96 --export-png=$@