summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog33
-rw-r--r--configure.ac9
-rw-r--r--doc/doc.am22
-rw-r--r--m4/groff.m496
4 files changed, 103 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index be7198130..2e789330c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,38 @@
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
+ Handle missing programs required at runtime by grohtml more
+ gracefully. Rename and refactor configuration-time logic to be
+ more understandable.
+
+ * configure.ac:
+ * m4/groff.m4: Rename `GROFF_HTML_PROGRAMS` macro to
+ `GROFF_CHECK_GROHTML_PROGRAMS`. Rename shell variable
+ `make_htmldoc` to `use_grohtml`. Set it explicitly to "no" or
+ "yes" instead of null or not null.
+
+ * configure.ac:
+ * m4/groff.m4:
+ * doc/doc.am: Rename `BUILD_HTML` to `USE_GROHTML`.
+
+ * configure.ac: Call `GROFF_GROHTML_PROGRAM_NOTICE`.
+
+ * doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_HTML`
+ macro and `$(PROCESSEDDOCFILES_HTML)` dependency declaration
+ in Automake `if USE_GROHTML` conditional. This prevents an
+ attempt to build an HTML version of the "pic.ms" document that
+ is doomed to fail (noisily).
+
+ * m4/groff.m4: Refactor grohtml runtime-dependency program
+ check. Split into two macros: one
+ {`GROFF_CHECK_GROHTML_PROGRAMS`} performs the check, the other
+ {`GROFF_GROHTML_PROGRAM_NOTICE`} issues a notice at the end of
+ the configuration process if at least one program was not found.
+ Rename `html_docnote` shell variable to `grohtml_notice`.
+ Tighten wording of notice. Drop unused `make_install_htmldoc`
+ and `make_uninstall_htmldoc` shell variables.
+
+2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
+
* m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add newline at
end of buggy Ghostscript notification, so that the multiple
possible lengthy notices after the configuration report have
diff --git a/configure.ac b/configure.ac
index eea5a8470..de79302a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -163,7 +163,7 @@ GROFF_G
GROFF_TMAC
GROFF_WITH_COMPATIBILITY_WRAPPERS
GROFF_TARGET_PATH_SEPARATOR
-GROFF_HTML_PROGRAMS
+GROFF_CHECK_GROHTML_PROGRAMS
GROFF_PDFDOC_PROGRAMS
GROFF_PNMTOOLS_CAN_BE_QUIET
GROFF_PNMTOPS_NOSETPAGE
@@ -175,8 +175,8 @@ GROFF_GHOSTSCRIPT_VERSION_CHECK
gl_GLIBC21
gl_LOCALCHARSET
-# checks for presence of URW fonts (requires ghostscript, which is
-# checked in GROFF_HTML_PROGRAMS
+# Check for presence of URW fonts (these require Ghostscript, which is
+# checked for by GROFF_CHECK_GROHTML_PROGRAMS).
GROFF_URW_FONTS
AM_CONDITIONAL([BUILD_WINSCRIPTS], [test -n "$make_winscripts"])
@@ -197,7 +197,7 @@ AM_CONDITIONAL([MAKE_DONT_HAVE_RM], [test "$groff_is_rm_defined" = no])
# Some programs have a "g" prefix if an existing groff installation is detected
AM_CONDITIONAL([USEPROGRAMPREFIX], [test "$g" = g])
-AM_CONDITIONAL([BUILD_HTML], [test -n "$make_htmldoc"])
+AM_CONDITIONAL([USE_GROHTML], [test "$use_grohtml" = yes])
AM_CONDITIONAL([BUILD_PDFDOC], [test -n "$make_pdfdoc"])
AM_CONDITIONAL([USE_GROFF_ALLOCATOR], [test "$groff_use_own_allocator" = yes])
AM_CONDITIONAL([HAVE_PDFTOOLS], [test "$groff_have_pdftools" = yes ])
@@ -235,3 +235,4 @@ GROFF_APPRESDIR_CHECK
GROFF_URW_FONTS_CHECK
GROFF_UCHARDET_CHECK
GROFF_GHOSTSCRIPT_VERSION_NOTICE
+GROFF_GROHTML_PROGRAM_NOTICE
diff --git a/doc/doc.am b/doc/doc.am
index c0c29fa63..2a6a08ee9 100644
--- a/doc/doc.am
+++ b/doc/doc.am
@@ -57,8 +57,10 @@ GENERATEDDOCFILES = \
doc/meintro_fr.me \
doc/meref.me
# Files generated in the build tree
+if USE_GROHTML
PROCESSEDDOCFILES_HTML = \
doc/pic.html
+endif
PROCESSEDDOCFILES_PDF = \
doc/automake.pdf \
doc/groff-man-pages.pdf
@@ -83,7 +85,9 @@ PROCESSEDFILES_DEPS_PS = groff troff grops font/devps/stamp
PROCESSEDFILES_DEPS_PDF = groff troff gropdf font/devpdf/stamp
PROCESSEDFILES_DEPS_TXT = groff troff grotty font/devutf8/stamp
+if USE_GROHTML
$(PROCESSEDDOCFILES_HTML): $(PROCESSEDFILES_DEPS_HTML)
+endif
$(PROCESSEDDOCFILES_PS): $(PROCESSEDFILES_DEPS_PS)
$(PROCESSEDDOCFILES_PDF): $(PROCESSEDFILES_DEPS_PDF)
$(PROCESSEDDOCFILES_TXT): $(PROCESSEDFILES_DEPS_TXT)
@@ -105,7 +109,7 @@ doc/automake.pdf: doc/automake.mom pdfmom contrib/mom/om.tmac
# GNU PIC html documentation, installed in $(htmldocdir)
# Other pic*.html files are installed by the local rule
-if BUILD_HTML
+if USE_GROHTML
htmlpicdir = $(htmldocdir)
htmlpic_DATA = $(PROCESSEDDOCFILES_HTML)
HTMLDOCFILESALL = pic*.html
@@ -122,7 +126,7 @@ EXAMPLEFILES = \
doc/grnexmpl.me
# Generated in the build tree
-if BUILD_HTML
+if USE_GROHTML
PROCESSEDEXAMPLEFILES_HTML = doc/webpage.html
else
PROCESSEDEXAMPLEFILES_HTML =
@@ -142,7 +146,7 @@ dist_docexamples_DATA = $(EXAMPLEFILES)
nodist_docexamples_DATA = $(PROCESSEDEXAMPLEFILES)
MOSTLYCLEANFILES += $(PROCESSEDEXAMPLEFILES)
-if BUILD_HTML
+if USE_GROHTML
# webpage.html is generated; webpage*.html files are installed by the
# local rule.
HTMLEXAMPLEFILESALL = webpage*.html
@@ -363,7 +367,7 @@ doc/webpage.html: $(doc_srcdir)/webpage.ms
# We remove groff.css only from an out-of-source build tree.
mostlyclean-local: mostlyclean_doc
mostlyclean_doc:
-if BUILD_HTML
+if USE_GROHTML
if test -d $(doc_builddir); then \
cd $(doc_builddir) \
&& for f in $(HTMLDOCFILESALL); do \
@@ -381,7 +385,7 @@ endif
if test $(top_builddir) != $(top_srcdir); then \
$(RM) $(top_builddir)/doc/groff.css; \
fi
-if BUILD_HTML
+if USE_GROHTML
if test -d $(doc_builddir); then \
cd $(doc_builddir) \
&& for f in $(HTMLEXAMPLEFILESALL); do \
@@ -399,7 +403,7 @@ endif
install-data-hook: install_doc_htmldoc
install_doc_htmldoc:
-if BUILD_HTML
+if USE_GROHTML
cd $(doc_builddir) \
&& for f in `ls $(HTMLDOCFILESALL)`; do \
$(RM) $(DESTDIR)$(htmldocdir)/$$f; \
@@ -425,7 +429,7 @@ install_doc_gnu_eps: $(DOC_GNU_EPS)
done
install_doc_examples: $(DOC_GNU_EPS)
-if BUILD_HTML
+if USE_GROHTML
cd $(doc_builddir) \
&& for f in `ls $(HTMLEXAMPLEFILESALL)`; do \
$(RM) $(DESTDIR)$(exampledir)/$$f; \
@@ -443,7 +447,7 @@ uninstall-hook: \
uninstall_doc_examples uninstall_doc_htmldoc uninstall_mom
uninstall_doc_examples:
$(RM) $(DESTDIR)$(exampledir)/gnu.eps
-if BUILD_HTML
+if USE_GROHTML
-test -d $(DESTDIR)$(docexamplesdir) \
&& cd $(DESTDIR)$(docexamplesdir) \
&& for f in $(HTMLEXAMPLEFILESALL); do \
@@ -459,7 +463,7 @@ if BUILD_HTML
endif
uninstall_doc_htmldoc:
-if BUILD_HTML
+if USE_GROHTML
-test -d $(DESTDIR)$(htmldocdir) \
&& cd $(DESTDIR)$(htmldocdir) \
&& for f in $(HTMLDOCFILESALL); do \
diff --git a/m4/groff.m4 b/m4/groff.m4
index 42779dc91..ec404bdf0 100644
--- a/m4/groff.m4
+++ b/m4/groff.m4
@@ -1,5 +1,5 @@
# Autoconf macros for groff.
-# Copyright (C) 1989-2020 Free Software Foundation, Inc.
+# Copyright (C) 1989-2022 Free Software Foundation, Inc.
#
# This file is part of groff.
#
@@ -135,58 +135,66 @@ AC_DEFUN([GROFF_TEXI2DVI],
groff_have_texi2dvi=yes
fi])
-# The following programs are needed for grohtml.
+# grohtml needs the following programs to produce images from tbl(1)
+# tables and eqn(1) equations.
-AC_DEFUN([GROFF_HTML_PROGRAMS],
- [make_htmldoc=
- make_install_htmldoc=
- make_uninstall_htmldoc=
- AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH])
-
- missing=
- AC_FOREACH([groff_prog],
- [pnmcut pnmcrop pnmtopng psselect pnmtops],
- [AC_CHECK_PROG(groff_prog, groff_prog, [found], [missing])
- if test $[]groff_prog = missing; then
- missing="$missing 'groff_prog'"
- fi;])
+AC_DEFUN([GROFF_CHECK_GROHTML_PROGRAMS], [
+ make_htmldoc=no
+ AC_REQUIRE([GROFF_GHOSTSCRIPT_PATH])
+ missing=
+ AC_FOREACH([groff_prog],
+ [pnmcrop pnmcut pnmtopng pnmtops psselect],
+ [AC_CHECK_PROG(groff_prog, groff_prog, [found], [missing])
+ if test $[]groff_prog = missing
+ then
+ missing="$missing 'groff_prog'"
+ fi;])
- test "$GHOSTSCRIPT" = "missing" && missing="$missing 'gs'"
+ test "$GHOSTSCRIPT" = "missing" && missing="'gs' $missing"
- if test -z "$missing"; then
- make_htmldoc=htmldoc
- make_install_htmldoc=install_htmldoc
- make_uninstall_htmldoc=uninstall_htmldoc
- else
- plural=`set $missing; test $[#] -gt 1 && echo s`
- missing=`set $missing
- missing=""
- while test $[#] -gt 0
- do
- case $[#] in
- 1) missing="$missing$[1]" ;;
- 2) missing="$missing$[1] and " ;;
- *) missing="$missing$[1], " ;;
- esac
- shift
- done
- echo $missing`
-
- docnote=';
- therefore, it will be possible neither to prepare, nor to install,
- groff-generated documentation in HTML format.'
+ if test -z "$missing"
+ then
+ make_htmldoc=yes
+ else
+ plural=`set $missing; test $[#] -gt 1 && echo s`
+ oxford=`set $missing; test $[#] -gt 2 && echo ,`
+ missing=`set $missing
+ missing=""
+ while test $[#] -gt 0
+ do
+ case $[#] in
+ 1) missing="$missing$[1]" ;;
+ 2) missing="$missing$[1]$oxford and " ;;
+ *) missing="$missing$[1], " ;;
+ esac
+ shift
+ done
+ echo $missing`
+ if test $[#] -gt 1
+ then
+ verb=were
+ else
+ verb=was
+ fi
- AC_MSG_WARN([missing program$plural:
+ grohtml_notice="The program$plural $missing $verb not found in \
+\$PATH.
- The program$plural $missing cannot be found in the PATH.
+ Consequently, groff's HTML output driver, 'grohtml', will not work
+ properly. It will not be possible to prepare or install
+ groff-generated documentation in HTML format.
+"
- Consequently, groff's HTML backend (grohtml) will not work properly$docnote
- ])
fi
AC_SUBST([make_htmldoc])
- AC_SUBST([make_install_htmldoc])
- AC_SUBST([make_uninstall_htmldoc])])
+])
+AC_DEFUN([GROFF_GROHTML_PROGRAM_NOTICE], [
+ if test "$make_htmldoc" = no
+ then
+ AC_MSG_NOTICE([$grohtml_notice])
+ fi
+])
# To produce PDF docs, we need both awk and ghostscript.