diff --git a/lib/Makefile.dfgproposal b/lib/Makefile.dfgproposal new file mode 100644 index 0000000..d13d31e --- /dev/null +++ b/lib/Makefile.dfgproposal @@ -0,0 +1,75 @@ +########################################################################### +# 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 + bibtex -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 BibTeX" $(patsubst %.tex, %.log, $<)> /dev/null);\ + then $(MAKE) -B $(BBL); 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)