# Makefile
#
# all: compile everything (default)
# clean: remove auxiliar files
# cleanall: remove all pdf's and auxiliar files
# cleanfigures: remove figures pdf's
# cleanpdf: remove all pdf files
# cleantildes: remove emacs auxiliar files
# fast: fast compilation  (without worrying about references)
# touch: touch all main files

# options for pdflatex
override PLOPT+=-shell-escape

# options for makeindex
override IXOPT+=

# options for bibtex
override BOPT+=

# files with references
REF=

# files without references
WOREF= $(basename $(wildcard homework*.tex)) midterm

# main files
MAIN=$(REF) $(WOREF)

# common files
COMMON=\
	$(wildcard *.sty)\
	packages.tex\
	layout.tex\
	common_math.tex\
	theorem_names_en.tex

.PHONY: all clean cleanall cleanfigures cleanpdf cleantildes fast touch

# compile everything
all: $(addsuffix .pdf, $(MAIN))

# fast compilation
fast: COMMON $(addsuffix .tex, $(MAIN))
	$(foreach VAR, $(MAIN), pdflatex $(PLOPT) $(VAR))

# touch all main files
touch:
	$(foreach VAR, $(MAIN), touch -c $(VAR).tex)

# remove auxiliar files
clean: cleantildes
	rm -f -- $(wildcard *.aux *.log *.toc *.out *.bbl *.blg *.brf *.idx *.ind *.ilg\
	 *.lof *.auxlock figures/compilations/*.dpth figures/compilations/*.log)

# remove emacs auxiliar files
cleantildes:
	rm -f -- $(wildcard *~ */*~ */*/*~)

# remove pdf files
cleanpdf: cleanfigures
	rm -f -- $(addsuffix .pdf, $(MAIN))

# remove figures pdf
cleanfigures:
	rm -f -- $(wildcard figures/compilations/*.pdf)

# remove pdf and auxiliar files
cleanall: clean cleanpdf


$(addsuffix .pdf,$(REF)): %.pdf: %.tex $(COMMON) $(wildcard *.bst *.bib)
	pdflatex $(PLOPT) $(basename $<)
	bibtex $(BOPT) $(basename $<)
	pdflatex $(PLOPT) $(basename $<)
	pdflatex $(PLOPT) $(basename $<)

$(addsuffix .pdf,$(WOREF)): %.pdf: %.tex $(COMMON)
	pdflatex $(PLOPT) $(basename $<)
	pdflatex $(PLOPT) $(basename $<)
	pdflatex $(PLOPT) $(basename $<)
