# ======================================================================= # Makefile for generating LaTeX documents # ----------------------------------------------------------------------- # # This is a simple makefile for generating LaTeX documents. It will # run bibtex, generate eps from xfig figures, and make pdfs. The # makefile supports builds in non-source directories: just make a # build directory, copy the makefile there, and change the srcdir # variable accordingly. # # Note that the makefile assumes that the default dvips/ps2pdfwr # commands "do the right thing" for fonts in pdfs. This is true on # Athena/Linux and Fedora Core but is not true for older redhat installs ... # # At a minimum you should just change the main variable to be # the basename of your toplevel tex file. If you use a bibliography # then you should set the bibfile variable to be the name of your # .bib file (assumed to be in the source directory). # # Targets: # (none) makes PDFs in output/ # clean removed everything except PDFs in output/ # clean-all removed everything in output/ # Directories relative to the top level: outdir = output srcdir = src # Relative to output: relsrcdir = ../$(srcdir) doc_target = power-spec docs_with_bib = power-spec docs_without_bib = srcs = $(wildcard $(srcdir)/*.tex) figs = $(wildcard $(srcdir)/figs/*) bibs = $(srcdir)/power-spec.bib #======================================================================= # You shouldn't need to change anything below this #======================================================================= # : needed after ../src/ in TEXINPUTS so that it looks in standard places PDFLATEX := TEXINPUTS=$(relsrcdir): pdflatex -interaction=nonstopmode -halt-on-error BIBTEX := BIBINPUTS=$(relsrcdir): bibtex GLOSSARIES := makeglossaries default : $(outdir) pdf #------------------------------------------------------------ # PDF pdfs_with_bib = $(addsuffix .pdf, $(docs_with_bib)) pdfs_without_bib = $(addsuffix .pdf, $(docs_without_bib)) pdfs = $(pdfs_with_bib) Makefile: build/Makefile ln -s $^ . pdf : $(pdfs) Makefile .PHONY: pdf open $(outdir): mkdir $@ open: $(pdfs) open $(pdfs) # This is not nice. To generate the glossary you need a .aux file, # .aux is generated by pdflatex - which complains as there are undefined names # Also if \gls are used in glossary.tex before they are defined - there are # similar problems, so makeglossaries needs to be run twice. $(pdfs_with_bib): %.pdf: $(srcdir)/%.tex $(srcs) $(figs) $(bibs) cd $(outdir); $(PDFLATEX) $(doc_target) cd $(outdir); $(BIBTEX) $(doc_target) cd $(outdir); $(GLOSSARIES) $(doc_target) cd $(outdir); $(PDFLATEX) $(doc_target) cd $(outdir); $(GLOSSARIES) $(doc_target) $(pdfs_without_bib): %.pdf: $(srcdir)/%.tex $(srcs) $(figs) cd $(outdir); $(PDFLATEX) $* || true cd $(outdir); makeglossaries $* || true cd $(outdir); $(PDFLATEX) $* || true junk += *.aux *.log *.bbl *.blg *.toc *.out #------------------------------------------------------------ # Other Targets clean : rm -rf $(addprefix $(outdir)/, $(junk)) clean-all: clean rm -rf $(addprefix $(outdir)/, $(pdfs))