PROJECTNAME=$(basename $(wildcard *.tex)) AUX=$(addsuffix .aux, $(PROJECTNAME)) FIGS=$(notdir $(wildcard figs/*.fig)) BBLS=$(addsuffix .bbl, $(PROJECTNAME)) PDFS=$(addsuffix .pdf, $(PROJECTNAME)) SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME)) all: $(PDFS) $(PDFS): $(FIGS) $(BBLS) pdflatex -file-line-error $(patsubst %.pdf, %.tex, $@) pdflatex -file-line-error $(patsubst %.pdf, %.tex, $@) pdflatex -synctex=1 $(patsubst %.pdf, %.tex, $@) $(AUX): $(FIGS) pdflatex -file-line-error -draftmode $(patsubst %.aux, %.tex, $@) $(SYNCTEXS): $(FIGS) pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@) bib: $(BBLS) $(BBLS): $(AUX) bibtex $(patsubst %.bbl, %.aux, $@) figs: $(FIGS) $(FIGS): make -C figs/$@ for pdf in $$(find figs/$@/ -name '*.pdf'); do ln -fs "$$pdf" ./ ; done clean-aux: clean-figs-aux rm -f $(addsuffix .aux, $(PROJECTNAME)) rm -f $(addsuffix .log, $(PROJECTNAME)) rm -f $(addsuffix .out, $(PROJECTNAME)) rm -f $(addsuffix .toc, $(PROJECTNAME)) clean-figs: $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean; ) rm -f $(notdir $(wildcard figs/*.fig/*.pdf)) clean-figs-aux: $(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean-aux; ) clean-tex: rm -f $(PDFS) $(SYNCTEXS) clean-bibliography: rm -f $(addprefix .bbl, $PROJECTNAME) clean: clean-aux clean-tex clean-figs