Newer
Older
tbku / makefile
  1. # Build a release of 'tbku' using 'make'
  2. # $Id: makefile,v 1.107 2013/04/01 22:34:19 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. Imaging-FreeBSD-With-tbku.txt Imaging-SUSE-Linux-With-tbku.txt \
  34.  
  35.  
  36. #####
  37. # Nothing Should Need To Change Below This Line
  38. #####
  39.  
  40.  
  41. DIR = ${PROGNAME}-${VERSION}
  42. HEADER1 = "WHATSNEW For '${PROGNAME}' ${VERSION} (`date`)"
  43. HEADER2 = "----------------------------------------------------------------------"
  44. RELEASES = "Releases"
  45. TARBALL = ${DIR}.tar.gz
  46. TMPFILE = tmpfile
  47. VERSION = $(shell cvs log ${PROGMAIN} | grep ^head\: | cut -f2 -d " ")${EARLY}
  48.  
  49.  
  50. #####
  51. # Pattern Rules
  52. #####
  53.  
  54. ###
  55. # Document Production
  56. ###
  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. 2HTML = $(shell which rst2html.py rst2html 2>/dev/null | head -n 1)
  65. 2LATEX = $(shell which rst2latex.py rst2latex 2>/dev/null | head -n 1) --stylesheet=parskip
  66. 2ODT = $(shell which rst2odt.py rst2odt 2>/dev/null | head -n 1)
  67. 2MAN = $(shell which rst2man.py rst2man 2>/dev/null | head -n 1)
  68.  
  69. # TeX/LaTeX Processing
  70.  
  71. DVIPS = dvips
  72. PDFLATEX = pdflatex
  73. LATEX = latex
  74.  
  75. %.dvi : %.latex
  76. ${LATEX} $*.latex
  77.  
  78. %.html : %.rst
  79. ${2HTML} <$*.rst >$*.html
  80.  
  81. %.latex : %.rst
  82. ${2LATEX} $*.rst >$*.latex
  83.  
  84. %.1 : %.rst
  85. ${2MAN} <$*.rst >$*.1
  86.  
  87. %.1.gz: %.1
  88. @gzip -c <$*.1 >$*.1.gz
  89.  
  90. %.odt : %.rst
  91. ${2ODT} <$*.rst >$*.odt
  92.  
  93. %.pdf : %.latex
  94. ${PDFLATEX} $*.latex
  95. ${PDFLATEX} $*.latex
  96. ${PDFLATEX} $*.latex
  97.  
  98. %.ps : %.dvi
  99. ${DVIPS} $*.dvi
  100.  
  101. %.txt: %.1
  102. @groff -man -Tascii $< | col -xb >$@
  103.  
  104. ###
  105. # Pretty Print Programs & Scripts
  106. ###
  107.  
  108. %.pl.ps: %.pl
  109. @enscript -Eperl --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  110.  
  111. %.py.ps: %.py
  112. @enscript -Epython --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  113.  
  114. %.sh.ps: %.sh
  115. @enscript -Esh --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $<
  116.  
  117.  
  118. #####
  119. # Actual Build Rules
  120. #####
  121.  
  122. FORCE:
  123.  
  124. CHANGELOG.txt: FORCE
  125. @cvs log ${PROGMAIN} >CHANGELOG.txt
  126.  
  127. WHATSNEW.txt: FORCE
  128. @printf "%s\n%s\n\n" ${HEADER1} ${HEADER2} | cat - $@ >${TMPFILE}
  129. @mv ${TMPFILE} $@
  130. @emacs -nw $@
  131. @cvs commit -m${HEADER1} $@
  132.  
  133. docs: ${DOCS} ${PROGDOCS}
  134. @chmod 644 ${DOCS} ${PROGDOCS}
  135. @chmod 644 *.gz *.txt
  136.  
  137. release: docs WHATSNEW.txt ${PROGFILES}
  138. @mkdir ${DIR}
  139. -@mkdir ${RELEASES} 2>&1 >/dev/null
  140. @cp -pv WHATSNEW.txt ${PROGFILES} ${DOCS} ${PROGDOCS} ${DIR}
  141. @tar -czvf ${TARBALL} --exclude CVS ${DIR}
  142. @rm -rf ${DIR}
  143. @mv ${DIR}.tar.gz ${RELEASES}
  144.  
  145. #####
  146. # Housekeeping
  147. #####
  148.  
  149. clean:
  150. @rm -rf *~ *.1 *.1.gz *.aux *.core *.dvi *.latex *.log *.out tmpfile *.toc
  151.  
  152. version:
  153. @echo ${VERSION}
  154.  
  155. scrub: clean
  156. @rm -rf ${DIR} ${PROGFILES} ${DOCS} ${PROGDOCS} ${TARBALL} ${TMPFILE}
  157.  
  158. init: scrub
  159. cvs update
  160.  
  161.