# # Common useful definitions # LATEX = latex PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" pdflatex PDFLATEXOPTS = -interaction=batchmode PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1 MAKEINDEX = makeindex # # Set default PREFIX. This can be overridden with 'make install PREFIX=/installation/directory' # DEFAULT_PREFIX := $(shell kpsewhich -var-value TEXMFHOME) PREFIX ?= $(DEFAULT_PREFIX) # # package should be set in variable PKG # PKGREADME = README.md # # packages may specify additional files in the distribution with this variable # (by default empty) # DIST_ADDITIONAL_FILES ?= PKGDTX = $(PKG).dtx PKGINS = $(PKG).ins PKGSTY = $(PKG).sty PKGPDF = $(PKG).pdf PKGTDSZIP = $(PKG).tds.zip PKGZIP = $(PKG).zip .PHONY: help sty pdf install install_sty install_doc tdszip dist clean cleanall cleansty cleanaux cleanpdf cleantdszip cleandist help: @echo "Targets for $(PKG):" @echo "make sty -- generate LaTeX package file $(PKG).sty" @echo "make pdf -- generate pdf documentation" @echo "make install -- install style and documentation files to TEXMF tree" @echo "make install PREFIX=[specify texmf directory]" @echo "make $(PKG).tds.zip -- create TDS.ZIP to include in CTAN upload" @echo "make dist -- create distribution ZIP, ready for upload to CTAN" @echo "make clean -- remove LaTeX auxiliary files" @echo "make cleansty -- remove generated style file" @echo "make cleanpdf -- remove generated pdf documentation" @echo "make cleanall -- remove all generated files, incl. distribution zip" clean: cleanaux cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist # ------------------------------------------------ # make sty # ------------------------------------------------ sty: $(PKGSTY) $(PKGSTY): $(PKGINS) $(PKGDTX) $(LATEX) $< cleansty: @rm -f $(PKGSTY) # ------------------------------------------------ # make pdf # ------------------------------------------------ pdf: $(PKG).pdf # # fake index & glossary so they get a TOC entry from the beginning, and so the page # numbers in the index are correct. # $(PKG).aux $(PKG).idx $(PKG).glo: $(PKGDTX) $(PKGSTY) DTX=$< ; echo '\\begin{theindex}\\item index here \\end{theindex}' >$${DTX%.dtx}.ind DTX=$< ; echo '\\begin{theglossary}\\item changes here\\end{theglossary}' >$${DTX%.dtx}.gls $(PDFLATEX) $(PDFLATEXOPTS) $< $(PDFLATEX) $(PDFLATEXOPTS) $< $(PDFLATEX) $(PDFLATEXOPTS) $< $(PKG).ind: $(PKG).idx $(MAKEINDEX) -s gind.ist -o $@ $< $(PKG).gls: $(PKG).glo $(MAKEINDEX) -s gglo.ist -o $@ $< # final steps of making the PKG.pdf doc file. At the end, touch the ind and gls files so # that they don't look out-of-date (because the idx and glo files were overwritten again) $(PKGPDF): $(PKGDTX) $(PKG).aux $(PKG).ind $(PKG).gls $(PDFLATEX) $(PDFLATEXOPTS) $< $(PDFLATEX) $(PDFLATEXOPTS) $< $(PDFLATEX) $(PDFLATEXOPTSLAST) $< touch $(PKG).ind $(PKG).gls $(PKG).pdf cleanaux: @rm -f *.aux *.log *.toc *.glo *.gls *.ind *.idx *.ilg *.out *.bbl *.blg *.synctex.gz *.hd cleanpdf: @rm -f $(PKGPDF) # ------------------------------------------------ # 'make install' partial installation targets # ------------------------------------------------ # # The install target itself is defined per-package, in case packages want to install more # files (such as bibtex styles) # install_sty: $(PKGSTY) mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG) cp $(PKGSTY) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG) install_doc: $(PKGPDF) mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG) cp $(PKGPDF) $(PKGREADME) $(DESTDIR)$(PREFIX)/doc/latex/$(PKG) # ------------------------------------------------ # make tdszip # ------------------------------------------------ TDSTMPDIR = $(CURDIR)/_install_tds_zip.make.tmp tdszip: $(PKGTDSZIP) $(PKGTDSZIP): $(PKGSTY) $(PKGPDF) mkdir $(TDSTMPDIR) $(MAKE) install PREFIX=$(TDSTMPDIR) cd $(TDSTMPDIR) && zip -r $(CURDIR)/$(PKGTDSZIP) * rm -rf $(TDSTMPDIR) cleantdszip: @rm -f $(PKGTDSZIP) # ------------------------------------------------ # make dist # ------------------------------------------------ DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp dist: $(PKGZIP) $(PKGZIP): $(PKGTDSZIP) rm -rf $(DISTTMPDIR) mkdir -p $(DISTTMPDIR)/$(PKG) cp $(PKGTDSZIP) $(DISTTMPDIR) cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG) cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKGTDSZIP) $(PKG) rm -rf $(DISTTMPDIR) cleandist: @rm -f $(PKGZIP)