FNAME=divide
##
## assumes FNAME is defined
##
## define LATEX_PROCESS=pdf to use PDF processing (pdflatex)
##
## automatically considers .tex files included with \input{filename}
##
## LATEX_DEPENDENCIES may also be defined for other dependencies,
## such as images (e.g., \includegraphics) or other files (e.g., \lstinclude)
##
.PHONY: default
default: slides

.PHONY: slides handouts notes thumbnails
slides: $(FNAME).pdf
handouts: $(FNAME)-2up.pdf
notes: $(FNAME)-notes.pdf

.PHONY: all
all: slides notes
# all: slides handouts

#
# LaTeX source-extracted dependencies (simple)
#
SED_INPUT_EXPR = 's|^.*\\input{\([^}]*\)}.*$$|\1|p'
LATEX_INCLUDES := $(addsuffix .tex,$(shell sed -n -e $(SED_INPUT_EXPR) < $(FNAME).tex))
#
# LaTeX or PDFLaTeX
#
ifeq ($(LATEX_PROCESS),pdf)
LATEX = pdflatex
latex_v_LABEL = 'PDFLATEX'
LATEX_EXT = pdf
else
LATEX = latex
latex_v_LABEL = 'LATEX   '
LATEX_EXT = dvi
endif
#
# Verbose or silent output
#
SILENT_RULES ?= yes
ifeq ($(SILENT_RULES),yes)
LATEX_FLAGS	= -interaction=batchmode -file-line-error
DVIPSFLAGS	= -q
cmd_v_pre	= @
cmd_v_out	= > /dev/null
dvips_v_pre	= @echo "  DVIPS     " $@;
ps2pdf_v_pre	= @echo "  PS2PDF    " $@;
sed_v_pre	= @echo "  SED       " $@;
else
LATEX_FLAGS	=
DVIPSFLAGS	=
cmd_v_pre	=
cmd_v_out	=
dvips_v_pre	=
ps2pdf_v_pre	=
sed_v_pre	=
endif
#
# LaTeX/PDFLaTeX --> DVI/PDF; not 100% complete, but good enough
#
%.$(LATEX_EXT): %.tex $(LATEX_DEPENDENCIES) $(LATEX_INCLUDES)
	@for c in ' ' 2 3; do \
		echo "  "$(latex_v_LABEL)" $$c" $@; \
		$(latex_v_preamble) \
		if $(LATEX) $(LATEX_FLAGS) $* $(cmd_v_out); then \
			grep -q 'LaTeX Warning:.*Rerun' $*.log || exit 0; \
		else \
			rm $@; \
			exit 1; \
		fi;\
	done

%.pdf: %.ps
	$(ps2pdf_v_pre)ps2pdf -dNOSAFER -dALLOWPSTRANSPARENCY $< $@

PDFNUPFLAGS = --vanilla --no-landscape --frame true --scale 0.9 --nup 1x2

%-2up.pdf: %-handout.pdf
	pdfnup $(PDFNUPFLAGS) -o $@ $<

%-handout.tex: %.tex
	$(sed_v_pre)sed -e 's/^\\documentclass.*{beamer}$$/\\documentclass[handout,t]{beamer}/' < $< > $@

%-notes.tex: %.tex
	$(sed_v_pre)sed -e 's/^\\documentclass.*{beamer}$$/\\documentclass{article}\n\\usepackage{beamerarticle}/' < $< > $@

%.ps: %.dvi
	$(dvips_v_pre)dvips $(DVIPSFLAGS) -G0 $* -o $@

%-4up.ps: %.ps
	mpage -R -a -4 $< > $@

##
## cleanup
##
.PHONY: clean-slides veryclean-slides
clean: clean-slides
CLEAN_EXTENSIONS = dvi log aux out tpm tpt toc nav snm vrb
clean-slides:
	/bin/rm -f $(foreach e,$(CLEAN_EXTENSIONS),$(FNAME).$(e)) \
		$(foreach e,$(CLEAN_EXTENSIONS),$(FNAME)-notes.$(e)) \
		$(foreach e,$(CLEAN_EXTENSIONS),$(FNAME)-handout.$(e))


veryclean: veryclean-slides
veryclean-slides: clean-slides
	/bin/rm -f $(FNAME).pdf $(FNAME).ps $(FNAME)-handout.pdf \
		$(FNAME)-notes.pdf $(FNAME)-notes.ps $(FNAME)-2up.pdf
