diff --git a/configure.in b/configure.in index 9a9650314..44ed292d5 100644 --- a/configure.in +++ b/configure.in @@ -109,6 +109,10 @@ AC_PROG_RANLIB dnl autoconf 2.59 appears not to support AC_PROG_SED AC_CHECK_PROG([SED],[sed],[sed],[/bin/false]) +dnl check for asciidoc and a2x +AC_PATH_PROG([ASCIIDOC], [asciidoc], none) +AC_PATH_PROG([A2X], [a2x], none) + AC_PATH_PROG([SHA1SUM], [sha1sum], none) AC_PATH_PROG([OPENSSL], [openssl], none) diff --git a/doc/Makefile.am b/doc/Makefile.am index f8e17ecd3..2eae7a187 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,12 +1,36 @@ +asciidoc_files = tor-gencert + +html_in = $(asciidoc_files:=.html.in) + +man_in = $(asciidoc_files:=.1.in) EXTRA_DIST = HACKING \ tor-resolve.1 tor-gencert.1 \ + $(html_in) $(man_in) $(asciidoc_files:=.1.txt) \ tor-osx-dmg-creation.txt tor-rpm-creation.txt \ tor-win32-mingw-creation.txt torify.1 -man_MANS = tor.1 tor-resolve.1 tor-gencert.1 torify.1 +nodist_man_MANS = tor.1 tor-resolve.1 tor-gencert.1 torify.1 $(asciidoc_files:=.1) + +doc_DATA = $(asciidoc_files:=.html) + +asciidoc_product = $(nodist_man_MANS) $(doc_DATA) SUBDIRS = design-paper spec DIST_SUBDIRS = design-paper spec +# Generate the html documentation from asciidoc, but don't do +# machine-specific replacements yet +$(html_in) : + $(top_srcdir)/doc/asciidoc-helper.sh html @ASCIIDOC@ @SED@ $@ + +# Generate the manpage from asciidoc, but don't do +# machine-specific replacements yet +$(man_in) : + $(top_srcdir)/doc/asciidoc-helper.sh man @A2X@ @SED@ $@ + +# use ../config.status to swap all machine-specific magic strings +# in the asciidoc with their replacements. +$(asciidoc_product) : + ../config.status --file=$@; diff --git a/doc/asciidoc-helper.sh b/doc/asciidoc-helper.sh new file mode 100755 index 000000000..90a003d49 --- /dev/null +++ b/doc/asciidoc-helper.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +# Copyright (c) The Tor Project, Inc. +# See LICENSE for licensing information +# Run this to generate .html.in or .1.in files from asciidoc files. +# Arguments: +# html|man asciidocpath sedpath outputfile + +set -e + +if [ $# != 4 ]; then + exit 1; +fi + +output=$4 +input=`echo $output | $3 -e 's/html\.in$/1\.txt/g' -e 's/1\.in$/1\.txt/g'` +base=`echo $output | $3 -e 's/\.html\.in$//g' -e 's/\.1\.in$//g'` + +if [ "$1" = "html" ]; then + if [ "$2" != none ]; then + "$2" -d manpage -o $output $input; + else + echo "=================================="; + echo; + echo "The manpage in html form for $base will "; + echo "NOT be available, because asciidoc doesn't appear to be "; + echo "installed!"; + echo; + echo "=================================="; + fi +elif [ "$1" = "man" ]; then + if test "$2" != none; then + if $2 -f manpage $input; then + mv $base.1 $output; + else + echo "=================================="; + echo; + echo "a2x is installed, but some required docbook support files are"; + echo "missing. Please install docbook-xsl and docbook-xml (Debian)"; + echo "or similar."; + echo; + echo "=================================="; + fi; + else + echo "=================================="; + echo; + echo "The manpage for $base will NOT be "; + echo "available, because a2x doesn't appear to be installed!"; + echo; + echo "=================================="; + fi +fi + +touch $output; \