+2003-03-14 Richard Dawe <rich@phekda.freeserve.co.uk>
+ Alexandre Duret-Lutz <adl@gnu.org>
+
+ * automake.in (output_texinfo_build_rules, handle_texinfo_helper,
+ initialize_per_input): Add infrastructure for generating HTML
+ documentation from texinfo source.
+ * lib/am/texinfos.am: Add rules for building HTML documentation
+ from texinfo source.
+ * lib/am/texibuild.am: Likewise.
+ * automake.texi (Texinfo): Document rules for building
+ HTML documentation from texinfo source.
+ * tests/txinfo21.test: New file.
+ * tests/Makefile.am (TESTS): Add txinfo21.test.
+ * tests/defs.in: Handle required=makeinfo-html.
+
2003-04-14 Alexandre Duret-Lutz <adl@gnu.org>
* automake.in (%silent_variable_override): New variable.
DVIS = automake.dvi
PDFS = automake.pdf
PSS = automake.ps
+HTMLS = automake.html
TEXINFOS = automake.texi
TEXI2DVI = texi2dvi
TEXI2PDF = $(TEXI2DVI) --pdf --batch
DVIPS = dvips
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
+ ps-recursive html-recursive install-info-recursive \
+ uninstall-info-recursive all-recursive install-data-recursive \
+ install-exec-recursive installdirs-recursive install-recursive \
+ uninstall-recursive check-recursive installcheck-recursive
ETAGS = etags
ETAGSFLAGS =
CTAGS = ctags
all: all-recursive
.SUFFIXES:
-.SUFFIXES: .dvi .info .pdf .ps .texi
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2PDF) $<
+
+.texi.html:
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) --html -I $(srcdir) \
+ -o $@ $<
automake.info: automake.texi version.texi
automake.dvi: automake.texi version.texi
automake.pdf: automake.texi version.texi
+automake.html: automake.texi version.texi
version.texi: stamp-vti
stamp-vti: automake.texi $(top_srcdir)/configure
@(dir=.; test -f ./automake.texi || dir=$(srcdir); \
done
mostlyclean-aminfo:
- -rm -f automake.aux automake.cm automake.cp automake.cps automake.cv \
+ -rm -rf automake.aux automake.cm automake.cp automake.cps automake.cv \
automake.fn automake.ky automake.kys automake.log automake.op \
automake.ov automake.pg automake.pgs automake.tmp \
automake.toc automake.tp automake.tps automake.tr automake.vr \
- automake.vrs automake.dvi automake.pdf automake.ps
+ automake.vrs automake.dvi automake.pdf automake.ps \
+ automake.html
maintainer-clean-aminfo:
@list='$(INFO_DEPS)'; for i in $$list; do \
dvi-am: $(DVIS)
+html: html-recursive
+
+html-am: $(HTMLS)
+
info: info-recursive
info-am: $(INFO_DEPS)
dist-all dist-bzip2 dist-gzip dist-info distcheck distclean \
distclean-generic distclean-recursive distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am \
- dvi-recursive info info-am info-recursive install install-am \
- install-binSCRIPTS install-data install-data-am \
- install-data-recursive install-exec install-exec-am \
- install-exec-recursive install-info install-info-am \
- install-info-recursive install-man install-recursive \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am installdirs-recursive maintainer-clean \
- maintainer-clean-aminfo maintainer-clean-generic \
- maintainer-clean-recursive maintainer-clean-vti mostlyclean \
- mostlyclean-aminfo mostlyclean-generic mostlyclean-recursive \
- mostlyclean-vti pdf pdf-am pdf-recursive ps ps-am ps-recursive \
- tags tags-recursive uninstall uninstall-am uninstall-binSCRIPTS \
- uninstall-info-am uninstall-info-recursive uninstall-recursive
+ dvi-recursive html html-am html-recursive info info-am \
+ info-recursive install install-am install-binSCRIPTS \
+ install-data install-data-am install-data-recursive \
+ install-exec install-exec-am install-exec-recursive \
+ install-info install-info-am install-info-recursive install-man \
+ install-recursive install-strip installcheck installcheck-am \
+ installdirs installdirs-am installdirs-recursive \
+ maintainer-clean maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-recursive \
+ maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+ mostlyclean-generic mostlyclean-recursive mostlyclean-vti pdf \
+ pdf-am pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+ uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am \
+ uninstall-info-recursive uninstall-recursive
install-exec-hook:
versions of Automake, because AC_PROG_CC defines this variable since
Autoconf 2.54.)
-* Texinfo rules back up and restore info files when makeinfo fails.
-
* AR's `cru' flags are now set in a global ARFLAGS variable instead
of being hard-coded in each $(AR) invocation, so they can be
substituted from configure.ac. This has been requested by people
* New warning option: -Woverride. This will warn about any user
target or variable definitions which override Automake definitions.
+
+* Texinfo rules back up and restore info files when makeinfo fails.
+
+* Texinfo rules now support the `html' target.
+ Running this requires Texinfo 4.0 or greater.
+
+ `html' is a new recursive target, so if your package mixes
+ hand-crafted `Makefile.in's with Automake-generated `Makefile.in's,
+ you should adjust the former to support (or ignore) this target so
+ that `make html' recurses successfully. If you had a custom `html'
+ rule in your `Makefile.am', it's better to rename it as `html-local',
+ otherwise your rule will override Automake's new rule (you can check
+ that by running `automake -Woverride') and that will stop the recursion
+ to subdirectories.
+
+ Last but not least, this `html' rule is declared PHONY, even when
+ overridden. Fortunately, it appears that few packages use a
+ non-PHONY `html' rule.
+
\f
New in 1.7:
* Autoconf 2.54 is required.
'ps-am' => [],
'info' => [],
'info-am' => [],
+ 'html' => [],
+ 'html-am' => [],
# Installing/uninstalling.
'install-data-am' => [],
MAKEINFOFLAGS => $makeinfoflags,
DEPS => "@deps",
DIRSTAMP => $dirstamp);
- return ($dirstamp, "$dpfx.dvi", "$dpfx.pdf", "$dpfx.ps");
+ return ($dirstamp, "$dpfx.dvi", "$dpfx.pdf", "$dpfx.ps", "$dpfx.html");
}
my @texis = &variable_value_as_list_recursive ('info_TEXINFOS', 'all');
- my (@info_deps_list, @dvis_list, @pdfs_list, @pss_list, @texi_deps);
+ my (@info_deps_list, @texi_deps);
+ my (@dvis_list, @pdfs_list, @pss_list, @htmls_list);
my %versions;
my $done = 0;
my @texi_cleans;
push (@dvis_list, $infobase . '.dvi');
push (@pdfs_list, $infobase . '.pdf');
push (@pss_list, $infobase . '.ps');
+ push (@htmls_list, $infobase . '.html');
# If a vers*.texi file is needed, emit the rule.
if ($vtexi)
&define_variable ("DVIS", "@dvis_list", INTERNAL);
&define_variable ("PDFS", "@pdfs_list", INTERNAL);
&define_variable ("PSS", "@pss_list", INTERNAL);
+ &define_variable ("HTMLS", "@htmls_list", INTERNAL);
# This next isn't strictly needed now -- the places that look here
# could easily be changed to look in info_TEXINFOS. But this is
# probably better, in case noinst_TEXINFOS is ever supported.
@vindex info_TEXINFOS
Automake generates rules to build @file{.info}, @file{.dvi}, @file{.ps},
-and @file{.pdf} files from your Texinfo sources. The @file{.info} files
-are built by @code{make all} and installed by @code{make install}
-(unless you use @code{no-installinfo}, see below). The other files can
-be built on request by @code{make dvi}, @code{make ps}, and @code{make
-pdf}.
+@file{.pdf} and @file{.html} files from your Texinfo sources.
+The @file{.info} files are built by @code{make all} and installed
+by @code{make install} (unless you use @code{no-installinfo}, see below).
+The other files can be built on request by @code{make dvi}, @code{make ps},
+@code{make pdf} and @code{make html}.
@cindex Texinfo flag, VERSION
@cindex Texinfo flag, UPDATED
@trindex ps-local
@trindex pdf
@trindex pdf-local
+@trindex html
+@trindex html-local
@trindex check
@trindex check-local
@trindex install
@trindex installcheck-local
The targets that support a local version are @code{all}, @code{info},
-@code{dvi}, @code{ps}, @code{pdf}, @code{check}, @code{install-data},
-@code{install-exec}, @code{uninstall}, @code{installdirs},
-@code{installcheck} and the various @code{clean} targets
+@code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
+@code{install-data}, @code{install-exec}, @code{uninstall},
+@code{installdirs}, @code{installcheck} and the various @code{clean} targets
(@code{mostlyclean}, @code{clean}, @code{distclean}, and
@code{maintainer-clean}). Note that there are no
@code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
+ ps-recursive html-recursive install-info-recursive \
+ uninstall-info-recursive all-recursive install-data-recursive \
+ install-exec-recursive installdirs-recursive install-recursive \
+ uninstall-recursive check-recursive installcheck-recursive
am__installdirs = $(DESTDIR)$(perllibdir)
dist_perllibDATA_INSTALL = $(INSTALL_DATA)
DATA = $(dist_perllib_DATA)
dvi-am:
+html: html-recursive
+
info: info-recursive
info-am:
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
clean-generic clean-recursive ctags ctags-recursive distclean \
distclean-generic distclean-recursive distclean-tags distdir \
- dvi dvi-am dvi-recursive info info-am info-recursive install \
- install-am install-data install-data-am install-data-recursive \
- install-dist_perllibDATA install-exec install-exec-am \
- install-exec-recursive install-info install-info-am \
- install-info-recursive install-man install-recursive \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am installdirs-recursive maintainer-clean \
- maintainer-clean-generic maintainer-clean-recursive mostlyclean \
- mostlyclean-generic mostlyclean-recursive pdf pdf-am \
- pdf-recursive ps ps-am ps-recursive tags tags-recursive \
- uninstall uninstall-am uninstall-dist_perllibDATA \
- uninstall-info-am uninstall-info-recursive uninstall-recursive
+ dvi dvi-am dvi-recursive html html-am html-recursive info \
+ info-am info-recursive install install-am install-data \
+ install-data-am install-data-recursive install-dist_perllibDATA \
+ install-exec install-exec-am install-exec-recursive \
+ install-info install-info-am install-info-recursive install-man \
+ install-recursive install-strip installcheck installcheck-am \
+ installdirs installdirs-am installdirs-recursive \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
+ ps-recursive tags tags-recursive uninstall uninstall-am \
+ uninstall-dist_perllibDATA uninstall-info-am \
+ uninstall-info-recursive uninstall-recursive
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
dvi-am:
+html: html-am
+
info: info-am
info-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-TESTS check-am clean clean-generic \
- distclean distclean-generic distdir dvi dvi-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
- uninstall-info-am
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-exec install-exec-am install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
+ ps-recursive html-recursive install-info-recursive \
+ uninstall-info-recursive all-recursive install-data-recursive \
+ install-exec-recursive installdirs-recursive install-recursive \
+ uninstall-recursive check-recursive installcheck-recursive
am__installdirs = $(DESTDIR)$(pkgvdatadir) $(DESTDIR)$(scriptdir)
dist_pkgvdataDATA_INSTALL = $(INSTALL_DATA)
dist_scriptDATA_INSTALL = $(INSTALL_DATA)
dvi-am:
+html: html-recursive
+
info: info-recursive
info-am:
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
clean-generic clean-recursive ctags ctags-recursive distclean \
distclean-generic distclean-recursive distclean-tags distdir \
- dvi dvi-am dvi-recursive info info-am info-recursive install \
- install-am install-data install-data-am install-data-recursive \
+ dvi dvi-am dvi-recursive html html-am html-recursive info \
+ info-am info-recursive install install-am install-data \
+ install-data-am install-data-recursive \
install-dist_pkgvdataDATA install-dist_scriptDATA install-exec \
install-exec-am install-exec-recursive install-info \
install-info-am install-info-recursive install-man \
dvi-am:
+html: html-am
+
info: info-am
info-am:
uninstall-am: uninstall-dist_amDATA uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am info info-am install \
- install-am install-data install-data-am install-dist_amDATA \
- install-exec install-exec-am install-info install-info-am \
- install-man install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am uninstall-dist_amDATA uninstall-info-am
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_amDATA install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-dist_amDATA \
+ uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
?GENERIC? $(TEXI2PDF) %SOURCE%
?!GENERIC? $(TEXI2PDF) -o $@ `test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+?GENERIC?%SOURCE_SUFFIX%.html:
+?!GENERIC?%DEST_PREFIX%.html: %SOURCE% %DEPS% %DIRSTAMP%
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) --html %MAKEINFOFLAGS% \
+?GENERIC? -o $@ %SOURCE%
+?!GENERIC? -o $@ `test -f '%SOURCE%' || echo '$(srcdir)/'`%SOURCE%
+
## If we are using the generic rules, we need separate dependencies.
## (Don't wonder about %DIRSTAMP% here, this is used only by non-generic
## rules.)
if %?GENERIC%
%DEST_PREFIX%.dvi: %SOURCE_REAL% %DEPS%
%DEST_PREFIX%.pdf: %SOURCE_REAL% %DEPS%
+%DEST_PREFIX%.html: %SOURCE_REAL% %DEPS%
endif %?GENERIC%
$(DVIPS) -o $@ $<
endif %?LOCAL-TEXIS%
-.PHONY: info info-am dvi dvi-am pdf pdf-am
+.PHONY: info info-am dvi dvi-am pdf pdf-am html html-am
if %?SUBDIRS%
RECURSIVE_TARGETS += info-recursive dvi-recursive pdf-recursive ps-recursive
+RECURSIVE_TARGETS += html-recursive
.PHONY info: info-recursive
.PHONY dvi: dvi-recursive
.PHONY pdf: pdf-recursive
.PHONY ps: ps-recursive
+.PHONY html: html-recursive
else !%?SUBDIRS%
info: info-am
dvi: dvi-am
pdf: pdf-am
ps: ps-am
+html: html-am
endif !%?SUBDIRS%
if %?LOCAL-TEXIS%
dvi-am: $(DVIS)
pdf-am: $(PDFS)
ps-am: $(PSS)
+html-am: $(HTMLS)
else ! %?LOCAL-TEXIS%
info-am:
dvi-am:
pdf-am:
ps-am:
+html-am:
endif ! %?LOCAL-TEXIS%
.PHONY: mostlyclean-aminfo
mostlyclean-am: mostlyclean-aminfo
mostlyclean-aminfo:
- -rm -f %TEXICLEAN%
+## Use `-rf', not just `-f', because %TEXICLEAN% also contains
+## any directory created by `makeinfo --html'.
+ -rm -rf %TEXICLEAN%
.PHONY: maintainer-clean-aminfo
maintainer-clean-am: maintainer-clean-aminfo
dvi-am:
+html: html-am
+
info: info-am
info-am:
uninstall-nodist_m4dataDATA
.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am info info-am install \
- install-am install-data install-data-am install-dist_m4dataDATA \
- install-exec install-exec-am install-info install-info-am \
- install-man install-nodist_m4dataDATA install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_m4dataDATA install-exec install-exec-am \
+ install-info install-info-am install-man \
+ install-nodist_m4dataDATA install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am uninstall uninstall-am \
uninstall-dist_m4dataDATA uninstall-info-am \
txinfo18.test \
txinfo19.test \
txinfo20.test \
+txinfo21.test \
transform.test \
unused.test \
vars.test \
txinfo18.test \
txinfo19.test \
txinfo20.test \
+txinfo21.test \
transform.test \
unused.test \
vars.test \
dvi-am:
+html: html-am
+
info: info-am
info-am:
.PHONY: all all-am check check-TESTS check-am clean clean-generic \
distclean distclean-generic distclean-local distdir dvi dvi-am \
- info info-am install install-am install-data install-data-am \
- install-exec install-exec-am install-info install-info-am \
- install-man install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
- uninstall-am uninstall-info-am
+ html html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
distclean-local:
echo "$me: running makedepend -f-"
( makedepend -f- ) || exit 77
;;
+ makeinfo-html)
+ # Make sure makeinfo understands --html.
+ echo "$me: running makeinfo --html --version"
+ ( makeinfo --html --version ) || exit 77
+ ;;
non-root)
# Skip this test case if the user is root.
# We try to append to a read-only file to detect this.
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2003 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Automake is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Test support for building HTML documentation.
+
+required='makeinfo-html tex'
+. ./defs || exit 1
+
+set -e
+
+cat >>configure.in <<EOF
+AC_CONFIG_FILES([rec/Makefile])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+SUBDIRS = rec
+info_TEXINFOS = main.texi sub/main.texi
+END
+
+cat > main.texi << 'END'
+\input texinfo
+@setfilename main.info
+@settitle main
+@node Top
+Hello walls.
+@bye
+END
+
+mkdir sub
+mkdir rec
+cp main.texi sub/main.texi
+cp main.texi rec/main.texi
+
+cat > rec/Makefile.am << 'END'
+info_TEXINFOS = main.texi
+END
+
+$ACLOCAL
+$AUTOMAKE --add-missing
+$AUTOCONF
+
+./configure
+
+$MAKE
+
+# Test production of split-per-node HTML.
+$MAKE html
+test -d main.html
+test -d sub/main.html
+test -d rec/main.html
+$MAKE clean
+test ! -d main.html
+test ! -d sub/main.html
+test ! -d rec/main.html
+
+# Test production of a single HTML file.
+MAKEINFOFLAGS=--no-split $MAKE -e html
+test -f main.html
+test -f sub/main.html
+test -f rec/main.html
+$MAKE clean
+test ! -f main.html
+test ! -f sub/main.html
+test ! -f rec/main.html