aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Hahn <sebastian@torproject.org>2010-01-18 22:15:38 +0100
committerSebastian Hahn <sebastian@torproject.org>2010-01-27 12:13:05 +0100
commit9fe1c000b0b1a91acf605ef71a538da7b7218fe9 (patch)
tree717008dd8a0d06d0c850e0bcbb3e981a297c72f0
parent3efadcd0d5373cc38986cdf93d03a1d99ec8aee0 (diff)
downloadtor-9fe1c000b0b1a91acf605ef71a538da7b7218fe9.tar
tor-9fe1c000b0b1a91acf605ef71a538da7b7218fe9.tar.gz
Allow generating documentation from asciidoc in the Makefile
-rw-r--r--configure.in4
-rw-r--r--doc/Makefile.am26
-rwxr-xr-xdoc/asciidoc-helper.sh54
3 files changed, 83 insertions, 1 deletions
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; \