diff --git a/Makefile.am b/Makefile.am index 0df658fd..6d52e0f0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -124,6 +124,7 @@ dist-hook: mydist: sh "$(srcdir)/src/liblzma/validate_map.sh" cd "$(srcdir)/po4a" && sh update-po + cd "$(srcdir)/doxygen" && sh update-doxygen VERSION=$(VERSION); \ if test -d "$(srcdir)/.git" && type git > /dev/null 2>&1; then \ SNAPSHOT=`cd "$(srcdir)" && git describe --abbrev=4 | cut -b2-`; \ diff --git a/doxygen/update-doxygen b/doxygen/update-doxygen new file mode 100755 index 00000000..e5f3ab43 --- /dev/null +++ b/doxygen/update-doxygen @@ -0,0 +1,111 @@ +#!/bin/sh +# +############################################################################# +# +# Updates the Doxygen generated documentation files in the source tree. +# If the doxygen command is not installed, it will exit with an error. +# This script can generate Doxygen documentation for all source files or for +# just liblzma API header files. +# +# It is recommended to use this script to update the Doxygen-generated HTML +# files since this will include the package version in the output and, +# in case of liblzma API docs, strip JavaScript files from the output. +# +############################################################################# +# +# Authors: Jia Tan +# Lasse Collin +# +# This file has been put into the public domain. +# You can do whatever you want with this file. +# +############################################################################# + +set -e + +if type doxygen > /dev/null 2>&1; then + : +else + echo "doxygen/update-doxygen: 'doxygen' command not found." >&2 + echo "doxygen/update-doxygen: Skipping Doxygen docs generation." >&2 + exit 1 +fi + +if test ! -f Doxyfile; then + cd `dirname "$0"` || exit 1 + if test ! -f Doxyfile; then + echo "doxygen/update-doxygen: Cannot find Doxyfile" >&2 + exit 1 + fi +fi + +# Get the package version so that it can be included in the generated docs. +PACKAGE_VERSION=`cd .. && sh build-aux/version.sh` || exit 1 + +# If no arguments are specified, default to generating liblzma API header +# documentation only. +case $1 in + '' | liblzma) + # Remove old documentation before re-generating the new. + rm -rf ../doc/liblzma + + # Generate the HTML documentation by preparing the Doxyfile + # in stdin and piping the result to the doxygen command. + # With Doxygen, the last assignment of a value to a tag will + # override any earlier assignment. So, we can use this + # feature to override the tags that need to change between + # "liblzma" and "internal" modes. + ( + cat Doxyfile + echo "PROJECT_NUMBER = $PACKAGE_VERSION" + ) | doxygen - + + # As of Doxygen 1.8.0 - 1.9.6 and the Doxyfile options we use, + # the output is good without any JavaScript. Unfortunately + # Doxygen doesn't have an option to disable JavaScript usage + # completely so we strip it away with the hack below. + # + # Omitting the JavaScript code avoids some license hassle + # as jquery.js is fairly big, it contains more than jQuery + # itself, and doesn't include the actual license text (it + # only refers to the MIT license by name). + echo "Stripping JavaScript from Doxygen output..." + for F in ../doc/liblzma/*.html + do + sed 's/