Newer
Older
reStructuredText / makefile
  1. # Produce Various Output Formats From A Restructured Text Source Document
  2.  
  3.  
  4. #####
  5. # Setup The Project Here
  6. #####
  7.  
  8. # PROJECT = NAMEOFPROJECT
  9. # This is setup in the makefile that includes us
  10.  
  11. # List all the output files
  12.  
  13. 1: ${PROJECT}.1
  14.  
  15. beamer: ${PROJECT}.beamer
  16.  
  17. doc: ${PROJECT}.doc
  18.  
  19. dvi: ${PROJECT}.dvi
  20.  
  21. html: ${PROJECT}.html
  22.  
  23. latex: ${PROJECT}.latex
  24.  
  25. odt: ${PROJECT}.odt
  26.  
  27. pdf: ${PROJECT}.pdf
  28.  
  29. ps: ${PROJECT}.ps
  30.  
  31. txt: ${PROJECT}.txt
  32.  
  33.  
  34. #####
  35. # Things That May Have To Be Changed, Depending On System
  36. #####
  37.  
  38.  
  39. ########################################################################
  40. # Nothing Below This Line Should Need To Be Changed #
  41. ########################################################################
  42.  
  43.  
  44. #####
  45. # Revision Support
  46. #####
  47.  
  48. DATE = $(shell date)
  49. REVISION = $(shell git log --pretty=format:"%h%x20%an%x20%ad%x20%s" -1 | cut -f1 -d" ")
  50.  
  51.  
  52. ###
  53. # Document Production
  54. ###
  55.  
  56. # RST Filter And Needed Program Locations
  57.  
  58. # Some Docutils installations keep the ".py" suffix for the various
  59. # frontend programs, and some do not. It's even possible there are
  60. # links from one to the other. Since the project can be checked out
  61. # on any platform, we have to check for this every time we run the
  62. # 'make'. This is irritating.
  63.  
  64. 2BEAMER = $(shell which rst2beamer.py rst2beamer | tr '\012' ' ' | awk '{print $$1}') --theme=Warsaw --stylesheet=parskip
  65. 2DOC = soffice --headless --convert-to doc
  66. 2HTML = $(shell which rst2html.py rst2html | tr '\012' ' ' | awk '{print $$1}') --no-compact-lists
  67. 2LATEX = $(shell which rst2latex.py rst2latex | tr '\012' ' ' | awk '{print $$1}') --stylesheet=parskip --latex-preamble="\usepackage{fullpage}"
  68. 2ODT = $(shell which rst2odt.py rst2odt | tr '\012' ' ' | awk '{print $$1}')
  69. 2MAN = $(shell which rst2man.py rst2man | tr '\012' ' ' | awk '{print $$1}')
  70.  
  71. DVIPS = dvips
  72. PDFLATEX = pdflatex
  73. LATEX = latex
  74. NROFF = nroff -c -man
  75.  
  76. # File Types
  77.  
  78. CLEAN = \~ .aux .beamer .log .nav .out .snm .toc .vrb
  79. DOCFILES = .1 .doc .dvi .html .latex .odt .pdf .ps .txt
  80.  
  81. # Conversion Rules
  82.  
  83. %.beamer : %.rst
  84. ${2BEAMER} $*.rst >$*.beamer
  85. ${PDFLATEX} $*.beamer
  86.  
  87. %.doc : %.odt
  88. ${2DOC} $*.odt
  89.  
  90. %.dvi : %.latex
  91. ${LATEX} $*.latex
  92. ${LATEX} $*.latex
  93.  
  94. %.html : %.rst
  95. ${2HTML} <$*.rst >$*.html
  96.  
  97. %.latex : %.rst
  98. ${2LATEX} $*.rst >$*.latex
  99.  
  100. %.1 : %.rst
  101. ${2MAN} <$*.rst >$*.1
  102.  
  103. %.odt : %.rst
  104. ${2ODT} <$*.rst >$*.odt
  105.  
  106. %.pdf : %.latex
  107. ${PDFLATEX} $*.latex
  108.  
  109. %.ps : %.dvi
  110. ${DVIPS} $*.dvi
  111.  
  112. %.txt : %.1
  113. ${NROFF} $*.1 >$*.txt
  114.  
  115.  
  116. #####
  117. # Packaging
  118. #####
  119.  
  120. all: 1 doc dvi html latex odt pdf ps
  121.  
  122. pkg: all clean
  123. tar -czvf ${PROJECT}-docs.tar.gz ${PROJECT}.*
  124.  
  125. release:
  126. sed "s/__DATE__/${DATE}/" <${PROJECT}.rst >tmp.rst
  127. sed "s/__REVISION__/${REVISION}/" <tmp.rst >${PROJECT}.rst
  128. make html pdf
  129. pdfshrink.sh ${PROJECT}.pdf
  130. rm tmp.rst
  131. git checkout ${PROJECT}.rst
  132.  
  133.  
  134. #####
  135. # Cleanup stanzas
  136. #####
  137.  
  138. clean:
  139. -@for type in ${CLEAN};\
  140. do\
  141. rm -v *$$type;\
  142. done
  143.  
  144. scrub: clean
  145. -@for type in ${DOCFILES};\
  146. do\
  147. rm -v *$$type;\
  148. done