diff --git a/WHATSNEW.txt b/WHATSNEW.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/WHATSNEW.txt diff --git a/makefile b/makefile new file mode 100644 index 0000000..8e8dafd --- /dev/null +++ b/makefile @@ -0,0 +1,160 @@ +# Build a release of 'trm' using 'make' +# Requires a modern 'make' like GNU. + +# Uncomment One Of The Following For Early Releases + +#EARLY = -Alpha +#EARLY = -Beta +#EARLY = -RC1 +VERSION = $(shell cat version)${EARLY} + + +##### +# Definitions Relevant To This Program +##### + +PROGNAME = trm +PROGMAIN = trm.sh + +PROGFILES = ${PROGMAIN} +PROGDOCS = ${PROGMAIN}.ps + +DOCS = ${PROGNAME}.1.gz \ + ${PROGNAME}.html \ + ${PROGNAME}.pdf \ + ${PROGNAME}.ps \ + ${PROGNAME}.rst \ + ${PROGNAME}.txt \ + +SUPPORT = ${PROGNAME}-license.txt \ + CHANGELOG.txt \ + WHATSNEW.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 + + +##### +# Pattern Rules +##### + +### +# Document Production +### + +# 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. + +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 2>/dev/null | head -n 1) +2MAN = $(shell which rst2man.py rst2man 2>/dev/null | head -n 1) + +# TeX/LaTeX Processing + +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 + @git log --pretty=format:"%h%x20%an%x20%ad%x20%s" ${PROGMAIN} >CHANGELOG.txt + +WHATSNEW.txt: FORCE + @printf "%s\n%s\n\n" ${HEADER1} ${HEADER2} | cat - $@ >${TMPFILE} + @mv ${TMPFILE} $@ + @emacs -nw $@ + @git add $@ + +docs: ${DOCS} ${PROGDOCS} ${SUPPORT} + @chmod 644 ${DOCS} ${PROGDOCS} + @chmod 644 *.gz *.txt + +fixrev: FORCE + @sed -i "s/^GITID.*/GITID=\'$(shell git log --pretty=format:"%h%x20%an%x20%ad"\' | head -n1)/" ${PROGNAME}.sh + @sed -i "s/^VERSION.*/VERSION=\'${VERSION}'/" ${PROGNAME}.sh + @sed -i "s/Id:.*/Id: \'$(shell git log --pretty=format:"%h%x20%an%x20%ad"\' | head -n1)/" ${PROGNAME}.rst + @git add ${PROGNAME}.py ${PROGNAME}.rst + +release: docs fixrev ${PROGFILES} + @git commit -m${HEADER1} + @git push + @mkdir -p ${DIR}/Docs + -@mkdir -p ${RELEASES} 2>&1 >/dev/null + @cp -pv ${DOCS} ${PROGDOCS} ${DIR}/Docs + @cp -pv ${SUPPORT} ${PROGFILES} ${DIR}/ + @tar -czvf ${TARBALL} --exclude CVS ${DIR} + @rm -rf ${DIR} + @mv ${DIR}.tar.gz ${RELEASES} + + +##### +# Housekeeping +##### + +clean: FORCE + @rm -rf ${PROGNAME}.txt CHANGELOG.txt *~ *.1 *.1.gz *.aux *.core *.dvi *.gz *html *.latex *.log *.out *.pdf *.ps tmpfile *.toc + +version: FORCE + @echo ${VERSION}