#  +---------------------------------------------------+
#  | Author      : Pietro Cerutti                      |
#  | Version     : 2006-05-11                          |
#  | Description : simple Makefile for LaTeX projects  |
#  | Usage       : make help                           |
#  +---------------------------------------------------+

# BEGIN _MODIFY THIS_
version=20070507-0.8.4    # version to use as suffix to the .tar.bz2
dviviewer=`which xdvi`    # DVI viewer
psviewer=`which evince`   # PostScript viewer
pdfviewer=`which evince`  # PDF viewer
editor=${EDITOR}          # editor (console)
# END _MODIFY THIS_

# Variables
document=town_dtc         # name of the TeX main file
logfile=make.log          # log file
tmplogfile=make.log.tmp   # temporary log file

all: build			# default target

# Help target
help:
	@echo "Usage:"
	@echo "  make [build] compile DVI"
	@echo "  make ps      compile PostScript"
	@echo "  make pdf     compile PDF"
	@echo "  make view    display DVI"
	@echo "  make viewps  display PostScript"
	@echo "  make viewpdf display PDF output"
	@echo "  make edit    open the master TeX file for editing"
	@echo "  make pack    create a .tar.bz2 pack with sources and artifacts"
	@echo "  make clean   delete artifacts"

# Build target
build: clean
	@echo ""
	@echo "Building for \"${document}\""
	@echo "**** GENERATING DVI ****"                         > ${logfile}
	@echo -n " ->  generating DVI.............. "
	@while ( latex ${document} > ${tmplogfile}; grep -q "Rerun to get cross" ${tmplogfile} ); do \
		cat ${tmplogfile} >> ${logfile} ; \
	done
	@rm ${tmplogfile}
	@echo "done."

ps: build
	@echo ""                                                >> ${logfile}
	@echo "**** GENERATING POSTSCRIPT ****"                 >> ${logfile}
	@echo -n " ->  generating PostScript....... "
	@dvips ${document}                       2>> ${logfile}
	@echo "done."	
	@echo ""                                                >> ${logfile}

pdf: build
	@echo ""                                                >> ${logfile}
	@echo "**** GENERATING PDF ****"                 >> ${logfile}
	@echo -n " ->  generating PDF.............. "
	@dvipdf ${document}
	@echo "done."
	
# View target
view: build
	@echo ""
	@echo "Viewing \"${document}\""
	@echo -n " -> starting DVI viewer... "
	@${dviviewer} ${document} &
	@echo "done."

viewps: ps
	@echo ""
	@echo "Viewing \"${document}\""
	@echo -n " -> starting PostScript viewer... "
	@${psviewer} ${document}.ps &
	@echo "done."

viewpdf: pdf
	@echo ""
	@echo "Viewing \"${document}\""
	@echo -n " -> starting PDF viewer... "
	@${pdfviewer} ${document}.pdf &
	@echo "done."

# Edit target
edit: ${document}.tex
	@echo ""
	@echo "Editing \"${document}\""
	@echo -n " -> opening the default editor... "
	@${editor} ${document}.tex
	@echo "done."

# Clean
clean:
	@echo -n " ->  removing artifacts.... "
	@echo "done."
	@find . -maxdepth 1 -type f \( 	-name "*.aux" -o \
					-name "*.log" -o \
					-name "*.toc" -o \
					-name "*.dvi" -o \
					-name "make.log.tmp" -o \
					-name "${document}.dvi" -o \
					-name "${document}.ps" -o \
					-name "${document}.pdf" -o \
					-name "${document}.tar.bz2" \
	                            \) -delete

# Create a tarball of the whole directory
pack: pdf
	@echo ""
	@echo -n "Creating the tarball... "
	@tar --exclude ${document}.tar.bz2 --exclude .svn -cjf ${document}.tar.bz2 *
	@echo "done. (`du -h ${document}.tar.bz2 | cut -f1`)"
