#
# Makefile for LaTeX projects
# Author: Stanislav Kruchinin <stanislav.kruchinin@gmail.com>
#

TARGET ?= thesis
BIBFILE ?= thesis.bib

ARCH ?= 7z
BIBTEX ?= bibtex8
DVIPS ?= dvips
L2H ?= latex2html
L2RTF ?= latex2rtf
LATEX ?= latex
PDFLATEX ?= pdflatex
PS2PDF ?= gs
PSBOOK ?= psbook
PSNUP ?= psnup

ARCHEXT ?= zip
ARCHFLAGS ?= a -t$(ARCHEXT)
ARCHIVE := $(TARGET).$(ARCHEXT)
BIBTEXFLAGS ?= -H -c cp1251
DVIPSFLAGS ?= -P pdf -t A4 -z
L2HFLAGS ?= -dir html -iso_language RU.RU -split 3 -short_index \
  -numbered_footnotes -white -antialias -html_version 4.0
L2RTFFLAGS ?= -F -M12 -i russian
LATEXFLAGS ?= --src-specials
PS2PDFFLAGS ?= -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -g4960x7016 -r600 \
  -dCompatibilityLevel=1.2
PSNUPFLAGS ?= -2 -pA4
PDFLATEXFLAGS ?= --shell-escape --synctex=1

CLEXT ?= *.aux *.toc *.idx *.ind *.ilg *.log *.out *.lof *.lot *.lol \
  *.bbl *.blg *.bak *.dvi *.ps *.pdf *.synctex *.synctex.gz
CLFILES ?= $(CLEXT) $(ARCHIVE)
SRCFILES ?= *


dvi: $(TARGET).dvi

clean:
	-rm -f $(CLFILES)

.help:
	@echo "  dvi          (default) build DVI" ;\
	echo "  figclean     clean output files in figures directory" ;\
	echo "  html         convert DVI to HTML" ;\
	echo "  pdf          build PDF" ;\
	echo "  pdf_2on1     build PDF with two A5 pages on one A4 ordered by number" ;\
	echo "  pdf_book     build PDF booklet (two A5 on A4)" ;\
	echo "  ps           build PS" ;\
	echo "  ps_2on1      build PS with two A5 pages on one A4 ordered by number" ;\
	echo "  ps_book      build PS booklet (two A5 on A4)" ;\
	echo "  rtf          convert DVI to RTF" ;\
	echo "  srcdist      build source distribution" ;\
	$(MAKE) -s -C fig help

html: $(TARGET).dvi
	$(L2H) $(L2HFLAGS) $(TARGET).tex

pdf: $(TARGET).pdf

pdf_2on1: $(TARGET)_2on1.pdf

pdf_book: $(TARGET)_book.pdf

ps: $(TARGET).ps

ps_2on1: $(TARGET)_2on1.ps

ps_book: $(TARGET)_book.ps

rtf: $(TARGET).rtf

srcdist: clean figclean
	$(ARCH) $(ARCHFLAGS) $(ARCHIVE) $(SRCFILES)

$(TARGET).dvi: *.tex *.bib
	@$(LATEX) $(TEXFLAGS) $(TARGET).tex ;\
	if [ -f $(BIBFILE) ] ; then \
		for f in *.aux; do $(BIBTEX) $(BIBTEXFLAGS) $$f; done ;\
	else \
		echo Warning: Bibliography file does not exist ;\
	fi ;\
	$(LATEX) $(TEXFLAGS) $(TARGET).tex ;\
	$(LATEX) $(TEXFLAGS) $(TARGET).tex

$(TARGET).ps: $(TARGET).dvi
	$(DVIPS) $(DVIPSFLAGS) $^

$(TARGET)_2on1.ps: $(TARGET).ps
	$(PSNUP) $(PSNUPFLAGS) $^ > $@

$(TARGET)_book.ps: $(TARGET).ps
	$(PSNUP) $(PSNUPFLAGS) $^ > $@ ;\
	$(PSBOOK) $^ | $(PSNUP) -2 > $@

$(TARGET).pdf: *.tex *.bib
	@$(PDFLATEX) $(PDFLATEXFLAGS) $(TARGET).tex ;\
	if [ -f $(BIBFILE) ] ; then \
		for f in *.aux ; do $(BIBTEX) $(BIBTEXFLAGS) $$f ; done ;\
	else \
		echo "Warning: Bibliography file does not exist" ;\
	fi ;\
	$(PDFLATEX) $(PDFLATEXFLAGS) $(TARGET).tex ;\
	$(PDFLATEX) $(PDFLATEXFLAGS) $(TARGET).tex

$(TARGET)_2on1.pdf: $(TARGET)_2on1.ps
	$(PS2PDF) $(PS2PDFFLAGS) -sOutputFile=$@ -c save pop -f $^

$(TARGET)_book.pdf: $(TARGET)_book.ps
	$(PS2PDF) $(PS2PDFFLAGS) -sOutputFile=$@ -c save pop -f $^

$(TARGET).rtf: $(TARGET).dvi
	$(L2RTF) $(L2RTFFLAGS) -a $(TARGET).aux -b $(TARGET).bbl $(TARGET).tex

bmtoeps epstoeps epstopdf fixbb optimize pdftopng256 pdftotiffg4:
	@$(MAKE) -C fig $@

figclean:
	@$(MAKE) -C fig clean

