# Build a release of 'mkproject' using 'make' # Requires a modern 'make' like GNU. # # Copyright (c) 2012 TundraWare Inc., Des Plaines, IL 60018 USA # All Rights Reserved. For Terms Of Use See: mkproject-license.txt # # For Program Updates See: http://www.tundraware.com/Software/mkproject # # $Id: makefile,v 1.101 2012/06/02 14:35:34 tundra Exp $ CVSID='$Id: makefile,v 1.101 2012/06/02 14:35:34 tundra Exp $' # Uncomment One Of The Following For Early Releases #EARLY = Alpha #EARLY = Beta #EARLY = RC1 ##### # Definitions Relevant To This Program ##### PROGNAME = mkproject TYPE = sh PROGMAIN = mkproject.sh PROGFILES = ${PROGMAIN} .mkprojectrc PROGDOCS = ${PROGMAIN}.ps SUPPDIRS = ./common ./pl ./py ./sh PROGSUPP = $(shell find ${SUPPDIRS} | grep -v CVS) DOCS = ${PROGNAME}.1.gz \ ${PROGNAME}.html \ ${PROGNAME}.pdf \ ${PROGNAME}.ps \ ${PROGNAME}.rst \ ${PROGNAME}.txt \ CHANGELOG.txt \ WHATSNEW.txt \ mkproject-license.txt \ ##### # Nothing Should Need To Change Below This Line ##### DIR = ${PROGNAME}-${VERSION} HEADER1 = "WHATSNEW For '${PROGNAME}' ${VERSION} (`date`)" HEADER2 = "----------------------------------------------------------------------" RELEASES = "Releases" TARBALL = ${DIR}.tar.gz TMPFILE = tmpfile VERSION = $(shell cvs log ${PROGMAIN} | grep head | cut -f2 -d " ")${EARLY} ##### # Pattern Rules ##### ### # Document Production ### 2HTML = rst2html 2LATEX = rst2latex --stylesheet=parskip 2ODT = rst2odt 2MAN = rst2man DVIPS = dvips PDFLATEX = pdflatex LATEX = latex %.dvi : %.latex ${LATEX} $*.latex %.html : %.rst ${2HTML} <$*.rst >$*.html %.latex : %.rst ${2LATEX} $*.rst >$*.latex %.1 : %.rst ${2MAN} <$*.rst >$*.1 %.1.gz: %.1 @gzip -c <$*.1 >$*.1.gz %.odt : %.rst ${2ODT} <$*.rst >$*.odt %.pdf : %.latex ${PDFLATEX} $*.latex ${PDFLATEX} $*.latex ${PDFLATEX} $*.latex %.ps : %.dvi ${DVIPS} $*.dvi %.txt: %.1 @groff -man -Tascii $< | col -xb >$@ ### # Pretty Print Programs & Scripts ### %.pl.ps: %.pl @enscript -Eperl --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $< %.py.ps: %.py @enscript -Epython --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $< %.sh.ps: %.sh @enscript -Esh --color -fCourier8 -i2 -L77 -C --mark-wrapped-lines=arrow -p$@ $< ##### # Actual Build Rules ##### FORCE: CHANGELOG.txt: FORCE @cvs log ${PROGMAIN} >CHANGELOG.txt WHATSNEW.txt: FORCE @printf "%s\n%s\n\n" ${HEADER1} ${HEADER2} | cat - $@ >${TMPFILE} @mv ${TMPFILE} $@ @emacs -nw $@ @cvs commit -m${HEADER1} $@ docs: ${DOCS} ${PROGDOCS} @chmod 644 ${DOCS} ${PROGDOCS} @chmod 644 *.gz *.txt @flip -u *txt release: docs ${PROGFILES} ${PROGSUPP} @mkdir ${DIR} -@mkdir ${RELEASES} 2>&1 >/dev/null @cp -pvR ${PROGFILES} ${SUPPDIRS} ${DOCS} ${PROGDOCS} ${DIR} @tar -czvf ${TARBALL} --exclude CVS ${DIR} @rm -rf ${DIR} @mv ${DIR}.tar.gz ${RELEASES} ##### # Housekeeping ##### clean: @rm -rf *~ *.1 *.1.gz *.aux *.core *.dvi *.latex *.log *.out tmpfile *.toc version: @echo ${VERSION} scrub: clean @rm -rf ${DIR} ${PROGFILES} ${DOCS} ${PROGDOCS} ${TARBALL} ${TMPFILE} init: scrub cvs update