###########################################################################
# Automating LaTeX-proposal management by make.
# The participants work on proposal.tex in "draft" mode, which gives a lot
# of information to the developers. Variants submit.tex and public.tex are
# used to prepare official versions (hiding development/private info). 
###########################################################################
# To use this file, set these files in a local Makefile
# PROPOSAL = ????	# the base name of the top-level proposal file(s) 
# REPORT = ????	# the base name of the top-level report file(s) 
# BIB =  ?????		# directory of the bibTeX databases
# PROP.dir = ????      # The LaTeX-proposal class directory
###########################################################################
# the following are computed from these settings
TARGET = $(PROPOSAL) $(REPORT)                       	  # all pdflatex targets
TARGET.pdf 	= $(TARGET:%.tex=%.pdf)         	  # PDFs to be produced
TARGET.aux 	= $(TARGET:%.tex=%.aux)             # their aux files.
PDATA 		= $(PROPOSAL:%.tex=%.pdata)       # the proposal project data
SRC = $(filter-out $(TARGET),$(shell ls *.tex))   # included files
PDFLATEX = pdflatex -interaction batchmode -file-line-error
BBL = $(PROPOSAL:%.tex=%.bbl) 
PROPCLS.dir = $(PROP.dir)/base
PROPETC.dir = $(PROP.dir)/etc
DFGPROPCLS.dir = $(PROP.dir)/dfg
TEXINPUTS := .//:$(PROPCLS.dir)//:$(DFGPROPCLS.dir)//:$(PROPETC.dir)//:
BIBINPUTS := $(BIB):$(BIBINPUTS)
BIBS := $(shell ls $(BIB)/*.bib)
PROPCLS.clssty = proposal.cls pdata.sty reporting.cls
PROPETC.sty = workaddress.sty metakeys.sty sref.sty
DFGPROPCLS.clssty = dfgproposal.cls dfgpdata.sty dfgreporting.cls
PROPCLS = $(PROPCLS.clssty:%=$(PROPCLS.dir)/%) $(DFGPROPCLS.clssty:%=$(DFGPROPCLS.dir)/%) $(PROPETC.sty:%=$(PROPETC.dir)/%)

all: $(TARGET.pdf)

submit:
	$(MAKE) -w PROPOSAL=submit.tex all

public:
	$(MAKE) -w PROPOSAL=public.tex all

cd: 	                                           # make cd will prepare CD for burning
	mkdir CD;make $(TARGET.pdf); cp $(TARGET.pdf) CD

bbl: $(BBL)
$(BBL): %.bbl: %.aux
	biber -min-crossrefs=100 -terse $<

$(PDATA): %.pdata: %.tex
	$(PDFLATEX) $<

$(TARGET.aux): %.aux: %.tex
	$(PDFLATEX) $<

$(TARGET.pdf): %.pdf: %.tex $(SRC) $(BIBS) $(PROPCLS) 
	$(PDFLATEX) $<  || $(RM) $@
#	sort $(PROPOSAL:%.tex=%.delivs) > $(PROPOSAL:%.tex=%.deliverables)
	@if (test -e $(patsubst %.tex, %.idx,  $<));\
	    then makeindex $(patsubst %.tex, %.idx,  $<); fi
# bbl is up to date $(MAKE) -$(MAKEFLAGS) $(BBL)
	@if (grep "(re)run" $(patsubst %.tex, %.log,  $<)> /dev/null);\
	    then biber $(basename $<); fi
	$(PDFLATEX)  $< || $(RM) $@
	@if (grep Rerun $(patsubst %.tex, %.log,  $<) > /dev/null);\
	   then $(PDFLATEX)  $<  || $(RM) $@; fi
	@if (grep Rerun $(patsubst %.tex, %.log,  $<) > /dev/null);\
	    then $(PDFLATEX)  $<  || $(RM) $@; fi

clean: 
	rm -f *~ *.log *.ilg *.out *.glo *.idx *.ilg *.blg *.run.xml *.synctex.gz *.cut

distclean: clean
	rm -f *.aux *.ind *.gls *.ps *.dvi *.thm *.out *.run.xml *.bbl *.toc *.deliv* *.pdata *-blx.bib
	rm -Rf auto

echo:
	@echo $(BIBS)
