- # Produce Various Output Formats From A Restructured Text Source Document
- #####
- # Setup The Project Here
- #####
- # PROJECT = NAMEOFPROJECT
- # This is setup in the makefile that includes us
- # List all the output files
- 1: ${PROJECT}.1
- beamer: ${PROJECT}.beamer
- doc: ${PROJECT}.doc
- dvi: ${PROJECT}.dvi
- html: ${PROJECT}.html
- latex: ${PROJECT}.latex
- odt: ${PROJECT}.odt
- pdf: ${PROJECT}.pdf
- ps: ${PROJECT}.ps
- txt: ${PROJECT}.txt
- #####
- # Things That May Have To Be Changed, Depending On System
- #####
- ########################################################################
- # Nothing Below This Line Should Need To Be Changed #
- ########################################################################
- #####
- # Revision Support
- #####
- DATE = $(shell date)
- REVISION = $(shell git log --pretty=format:"%h%x20%an%x20%ad%x20%s" -1 | cut -f1 -d" ")
- ###
- # Document Production
- ###
- # RST Filter And Needed Program Locations
- # Some Docutils installations keep the ".py" suffix for the various
- # frontend programs, and some do not. It's even possible there are
- # links from one to the other. Since the project can be checked out
- # on any platform, we have to check for this every time we run the
- # 'make'. This is irritating.
- 2BEAMER = $(shell which rst2beamer.py rst2beamer | tr '\012' ' ' | awk '{print $$1}') --theme=Warsaw --stylesheet=parskip
- 2DOC = soffice --headless --convert-to doc
- 2HTML = $(shell which rst2html.py rst2html | tr '\012' ' ' | awk '{print $$1}') --no-compact-lists
- 2LATEX = $(shell which rst2latex.py rst2latex | tr '\012' ' ' | awk '{print $$1}') --stylesheet=parskip --latex-preamble="\usepackage{fullpage}"
- 2ODT = $(shell which rst2odt.py rst2odt | tr '\012' ' ' | awk '{print $$1}')
- 2MAN = $(shell which rst2man.py rst2man | tr '\012' ' ' | awk '{print $$1}')
- DVIPS = dvips
- PDFLATEX = pdflatex
- LATEX = latex
- NROFF = nroff -c -man
- # File Types
- CLEAN = \~ .aux .beamer .log .nav .out .snm .toc .vrb
- DOCFILES = .1 .doc .dvi .html .latex .odt .pdf .ps .txt
- # Conversion Rules
- %.beamer : %.rst
- ${2BEAMER} $*.rst >$*.beamer
- ${PDFLATEX} $*.beamer
- %.doc : %.odt
- ${2DOC} $*.odt
- %.dvi : %.latex
- ${LATEX} $*.latex
- ${LATEX} $*.latex
- %.html : %.rst
- ${2HTML} <$*.rst >$*.html
- %.latex : %.rst
- ${2LATEX} $*.rst >$*.latex
- %.1 : %.rst
- ${2MAN} <$*.rst >$*.1
- %.odt : %.rst
- ${2ODT} <$*.rst >$*.odt
- %.pdf : %.latex
- ${PDFLATEX} $*.latex
- %.ps : %.dvi
- ${DVIPS} $*.dvi
- %.txt : %.1
- ${NROFF} $*.1 >$*.txt
- #####
- # Packaging
- #####
- all: 1 doc dvi html latex odt pdf ps
- pkg: all clean
- tar -czvf ${PROJECT}-docs.tar.gz ${PROJECT}.*
- release:
- sed "s/__DATE__/${DATE}/" <${PROJECT}.rst >tmp.rst
- sed "s/__REVISION__/${REVISION}/" <tmp.rst >${PROJECT}.rst
- make html pdf
- pdfshrink.sh ${PROJECT}.pdf
- rm tmp.rst
- git checkout ${PROJECT}.rst
- #####
- # Cleanup stanzas
- #####
- clean:
- -@for type in ${CLEAN};\
- do\
- rm -v *$$type;\
- done
- scrub: clean
- -@for type in ${DOCFILES};\
- do\
- rm -v *$$type;\
- done