Newer
Older
tbku / makefile
  1. # Build a release of 'tbku' using 'make'
  2. # $Id: makefile,v 1.106 2013/04/01 22:27:04 tundra Exp $
  3. # Requires a modern 'make' like GNU.
  4.  
  5. # Uncomment One Of The Following For Early Releases
  6.  
  7. #EARLY = Alpha
  8. #EARLY = Beta
  9. #EARLY = RC1
  10.  
  11. #####
  12. # Definitions Relevant To This Program
  13. #####
  14.  
  15. PROGNAME = tbku
  16. PROGMAIN = tbku
  17.  
  18. PROGFILES = ${PROGMAIN} # setup.py # Uncomment this if desired for python modules
  19. PROGDOCS = ${PROGMAIN}.ps
  20.  
  21. DOCS = tbku-license.txt \
  22. ${PROGNAME}.1.gz \
  23. ${PROGNAME}.html \
  24. ${PROGNAME}.pdf \
  25. ${PROGNAME}.ps \
  26. ${PROGNAME}.rst \
  27. ${PROGNAME}.txt \
  28. CHANGELOG.txt \
  29. Makefile \
  30. Imaging-FreeBSD-With-tbku.html Imaging-SUSE-Linux-With-tbku.html \
  31. Imaging-FreeBSD-With-tbku.pdf Imaging-SUSE-Linux-With-tbku.pdf \
  32. Imaging-FreeBSD-With-tbku.ps Imaging-SUSE-Linux-With-tbku.ps \
  33.  
  34.  
  35. #####
  36. # Nothing Should Need To Change Below This Line
  37. #####
  38.  
  39.  
  40. DIR = ${PROGNAME}-${VERSION}
  41. HEADER1 = "WHATSNEW For '${PROGNAME}' ${VERSION} (`date`)"
  42. HEADER2 = "----------------------------------------------------------------------"
  43. RELEASES = "Releases"
  44. TARBALL = ${DIR}.tar.gz
  45. TMPFILE = tmpfile
  46. VERSION = $(shell cvs log ${PROGMAIN} | grep ^head\: | cut -f2 -d " ")${EARLY}
  47.  
  48.  
  49. #####
  50. # Pattern Rules
  51. #####
  52.  
  53. ###
  54. # Document Production
  55. ###
  56.  
  57. # Some Docutils installations keep the ".py" suffix for the various
  58. # frontend programs, and some do not. It's even possible there are
  59. # links from one to the other. Since the project can be checked out
  60. # on any platform, we have to check for this every time we run the
  61. # 'make'. This is irritating.
  62.  
  63. 2HTML = $(shell which rst2html.py rst2html 2>/dev/null | head -n 1)
  64. 2LATEX = $(shell which rst2latex.py rst2latex 2>/dev/null | head -n 1) --stylesheet=parskip
  65. 2ODT = $(shell which rst2odt.py rst2odt 2>/dev/null | head -n 1)
  66. 2MAN = $(shell which rst2man.py rst2man 2>/dev/null | head -n 1)
  67.  
  68. # TeX/LaTeX Processing
  69.  
  70. DVIPS = dvips
  71. PDFLATEX = pdflatex
  72. LATEX = latex
  73.  
  74. %.dvi : %.latex
  75. ${LATEX} $*.latex
  76.  
  77. %.html : %.rst
  78. ${2HTML} <$*.rst >$*.html
  79.  
  80. %.latex : %.rst
  81. ${2LATEX} $*.rst >$*.latex
  82.  
  83. %.1 : %.rst
  84. ${2MAN} <$*.rst >$*.1
  85.  
  86. %.1.gz: %.1
  87. @gzip -c <$*.1 >$*.1.gz
  88.  
  89. %.odt : %.rst
  90. ${2ODT} <$*.rst >$*.odt
  91.  
  92. %.pdf : %.latex
  93. ${PDFLATEX} $*.latex
  94. ${PDFLATEX} $*.latex
  95. ${PDFLATEX} $*.latex
  96.  
  97. %.ps : %.dvi
  98. ${DVIPS} $*.dvi
  99.  
  100. %.txt: %.1
  101. @groff -man -Tascii $< | col -xb >$@
  102.  
  103. ###
  104. # Pretty Print Programs & Scripts
  105. ###
  106.  
  107. %.pl.ps: %.pl
  108. @enscript -Eperl --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  109.  
  110. %.py.ps: %.py
  111. @enscript -Epython --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  112.  
  113. %.sh.ps: %.sh
  114. @enscript -Esh --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  115.  
  116.  
  117. #####
  118. # Actual Build Rules
  119. #####
  120.  
  121. FORCE:
  122.  
  123. CHANGELOG.txt: FORCE
  124. @cvs log ${PROGMAIN} >CHANGELOG.txt
  125.  
  126. WHATSNEW.txt: FORCE
  127. @printf "%s\n%s\n\n" ${HEADER1} ${HEADER2} | cat - $@ >${TMPFILE}
  128. @mv ${TMPFILE} $@
  129. @emacs -nw $@
  130. @cvs commit -m${HEADER1} $@
  131.  
  132. docs: ${DOCS} ${PROGDOCS}
  133. @chmod 644 ${DOCS} ${PROGDOCS}
  134. @chmod 644 *.gz *.txt
  135.  
  136. release: docs WHATSNEW.txt ${PROGFILES}
  137. @mkdir ${DIR}
  138. -@mkdir ${RELEASES} 2>&1 >/dev/null
  139. @cp -pv WHATSNEW.txt ${PROGFILES} ${DOCS} ${PROGDOCS} ${DIR}
  140. @tar -czvf ${TARBALL} --exclude CVS ${DIR}
  141. @rm -rf ${DIR}
  142. @mv ${DIR}.tar.gz ${RELEASES}
  143.  
  144. #####
  145. # Housekeeping
  146. #####
  147.  
  148. clean:
  149. @rm -rf *~ *.1 *.1.gz *.aux *.core *.dvi *.latex *.log *.out tmpfile *.toc
  150.  
  151. version:
  152. @echo ${VERSION}
  153.  
  154. scrub: clean
  155. @rm -rf ${DIR} ${PROGFILES} ${DOCS} ${PROGDOCS} ${TARBALL} ${TMPFILE}
  156.  
  157. init: scrub
  158. cvs update
  159.  
  160.