summaryrefslogtreecommitdiff
path: root/doc/doc.am
diff options
context:
space:
mode:
authorG. Branden Robinson <g.branden.robinson@gmail.com>2022-05-02 01:13:48 +1000
committerG. Branden Robinson <g.branden.robinson@gmail.com>2022-05-02 08:35:12 -0500
commit3a58ef2712d1bcf123dbf925d3f371823533e71a (patch)
tree20e034d8fec8c44116777dcf8edf0865c173acd9 /doc/doc.am
parent4de4ca940930ccc67c60db85eabda68d1ef873ff (diff)
downloadgroff-git-3a58ef2712d1bcf123dbf925d3f371823533e71a.tar.gz
[build]: Rationalize in-tree document deps.
[build]: Reduce and rationalize in-tree document dependencies. This eliminates spurious rebuilds of numerous documents (including the 380+-page groff-man-pages collections). It also fixes missing dependencies when using the build's groff to generate PostScript documents. * .gitignore: Drop old name of devpdf stamp file. * doc/.gitignore: Drop now-unused "example.stamp" file. * doc/doc.am (PROCESSEDDOCFILES_HTML, PROCESSEDDOCFILES_PDF, PROCESSEDDOCFILES_TXT): Add new macros grouping targets by the format/output driver used to produce them, to better organize dependencies for their generation. (PROCESSEDDOCFILES): Redefine as simply the expansions of the foregeoing. (PROCESSEDFILES_DEPS_HTML, PROCESSEDFILES_DEPS_HTML, PROCESSEDFILES_DEPS_PDF, PROCESSEDFILES_DEPS_TXT): Add new macros defining prerequisites for production of the corresponding output document formats. ($(PROCESSEDDOCFILES_HTML), $(PROCESSEDDOCFILES_PDF), $(PROCESSEDDOCFILES_PS), $(PROCESSEDDOCFILES_TXT)): Declare the dependencies using expansions of the foregoing macros. (MOSTLYCLEANFILES): Drop "doc/automake.pdf", now part of `PROCESSEDDOCFILES_PDF`. (doc/automake.pdf): Drop dependencies already supplied by `PROCESSEDFILES_DEPS_PDF`. (HTMLDOCFILES): Drop macro. "doc/pic.html" is now in the expansion of `PROCESSEDDOCFILES_HTML`. (htmlpic_DATA): Redefine as expansion of `PROCESSEDDOCFILES_HTML` instead of `HTMLDOCFILES`. (PROCESSEDEXAMPLEFILES_HTML) [BUILD_HTML]: Define as "doc/webpage.html", otherwise as empty. (PROCESSEDEXAMPLEFILES_PS): Contain "doc/webpage.ps" and "doc/grnexampl.ps". (PROCESSEDEXAMPLEFILES): Redefine as expansions of `PROCESSEDEXAMPLEFILES_HTML` and `PROCESSEDEXAMPLEFILES_PS`. ($(PROCESSEDEXAMPLEFILES_HTML), $(PROCESSEDEXAMPLEFILES_PS)): Declare dependencies using `PROCESSEDFILES_DEPS_HTML` and `PROCESSEDFILES_DEPS_PS`, respectively. (nodist_docexamples_DATA): Redefine macro as expansions of now-split macros `PROCESSEDEXAMPLEFILES_HTML` and `PROCESSEDEXAMPLEFILES_PS`. (HTMLEXAMPLEFILES): Drop macro. "doc/webpage.html" is now in the expansion of `PROCESSEDDOCFILES_HTML`. (nodist_htmlexamples_DATA): Drop macro, no longer needed. ($(PROCESSEDDOCFILES_PS)): Relocated and redefined above. ($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES)): Drop overbroad dependency declarations in favor of the above. (MOSTLYCLEANFILES, doc/examples.stamp): Drop generation and removal of unnecessary stamp file. (doc/pic.html, doc/webpage.html): Add explicit dependency on required preprocessors. Drop redundant and spurious dependencies. * font/devhtml/devhtml.am (MOSTLYCLEANFILES, font/devhtml/stamp): Generate and remove stamp file to enable reliable target dependencies for build-time generation of HTML documents by groff. * font/devpdf/devpdf.am (MOSTLYCLEANFILES, font/devpdf/stamp): Rename stamp file from "font/devpdf/build_font_files". (font/devpdf/stamp): Drop unnecessary dependency on "afmtodit". * font/devps/devps.am (MOSTLYCLEANFILES, font/devps/stamp): Generate and remove stamp file to enable reliable target dependencies for build-time generation of PostScript documents by groff. * font/devutf8/devutf8.am (MOSTLYCLEANFILES, font/devutf8/stamp): Generate and remove stamp file to enable reliable target dependencies for build-time generation of UTF-8-encoded text documents by groff. * contrib/hdtbl/hdtbl.am (HDTBLPROCESSEDEXAMPLEFILES): Add dependency on devps stamp file since the files' target rule generates PostScript with groff. * contrib/mom/mom.am ($(MOMPROCESSEDEXAMPLEFILES)): Depend on new name for devpdf stamp file. * contrib/sboxes/sboxes.am ($(sboxes_builddir)/msboxes.pdf): Depend on new name for devpdf stamp file. Fixes <https://savannah.gnu.org/bugs/?62084>; thanks to Sergei Trofimovich for the report. Also fixes <https://savannah.gnu.org/bugs/?62297>; thanks to Bjarni Ingi Gislason for the report. Tested with the following script. #!/bin/sh set -e test -d build cd build for file in \ contrib/hdtbl/examples/chess_board.ps \ contrib/hdtbl/examples/col_rowspan_colors.ps \ contrib/hdtbl/examples/color_boxes.ps \ contrib/hdtbl/examples/color_nested_tables.ps \ contrib/hdtbl/examples/color_table_cells.ps \ contrib/hdtbl/examples/color_transitions.ps \ contrib/hdtbl/examples/fonts_n.ps \ contrib/hdtbl/examples/fonts_x.ps \ contrib/hdtbl/examples/mixed_pickles.ps \ contrib/hdtbl/examples/rainbow.ps \ contrib/hdtbl/examples/short_reference.ps \ contrib/mom/examples/copyright-chapter.pdf \ contrib/mom/examples/copyright-default.pdf \ contrib/mom/examples/letter.pdf \ contrib/mom/examples/mom-pdf.pdf \ contrib/mom/examples/mon_premier_doc.pdf \ contrib/mom/examples/sample_docs.pdf \ contrib/mom/examples/slide-demo.pdf \ contrib/mom/examples/typesetting.pdf \ contrib/sboxes/msboxes.pdf \ doc/automake.pdf \ doc/grnexmpl.ps \ doc/groff-man-pages.pdf \ doc/groff-man-pages.utf8.txt \ doc/meintro.ps \ doc/meintro_fr.ps \ doc/meref.ps \ doc/ms.ps \ doc/pic.html \ doc/pic.ps \ doc/webpage.ps do make -j clean make -j "$file" done
Diffstat (limited to 'doc/doc.am')
-rw-r--r--doc/doc.am78
1 files changed, 42 insertions, 36 deletions
diff --git a/doc/doc.am b/doc/doc.am
index 8f064c1bf..d017774f0 100644
--- a/doc/doc.am
+++ b/doc/doc.am
@@ -58,15 +58,36 @@ GENERATEDDOCFILES = \
doc/meintro_fr.me \
doc/meref.me
# Files generated in the build tree
+PROCESSEDDOCFILES_HTML = \
+ doc/pic.html
+PROCESSEDDOCFILES_PDF = \
+ doc/automake.pdf \
+ doc/groff-man-pages.pdf
PROCESSEDDOCFILES_PS = \
doc/meref.ps \
doc/meintro.ps \
doc/meintro_fr.ps \
doc/ms.ps \
doc/pic.ps
-PROCESSEDDOCFILES = $(PROCESSEDDOCFILES_PS) \
- doc/groff-man-pages.pdf \
+PROCESSEDDOCFILES_TXT = \
doc/groff-man-pages.utf8.txt
+PROCESSEDDOCFILES = \
+ $(PROCESSEDDOCFILES_HTML) \
+ $(PROCESSEDDOCFILES_PS) \
+ $(PROCESSEDDOCFILES_PDF) \
+ $(PROCESSEDDOCFILES_TXT)
+
+# Declare minimal dependencies for documents by output driver.
+PROCESSEDFILES_DEPS_HTML = pre-grohtml groff troff post-grohtml \
+ font/devhtml/stamp font/devps/stamp
+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
+
+$(PROCESSEDDOCFILES_HTML): $(PROCESSEDFILES_DEPS_HTML)
+$(PROCESSEDDOCFILES_PS): $(PROCESSEDFILES_DEPS_PS)
+$(PROCESSEDDOCFILES_PDF): $(PROCESSEDFILES_DEPS_PDF)
+$(PROCESSEDDOCFILES_TXT): $(PROCESSEDFILES_DEPS_TXT)
otherdocdir = $(docdir)
dist_otherdoc_DATA = $(DOCFILES_INST) $(GENERATEDDOCFILES)
@@ -80,19 +101,14 @@ EXTRA_DIST += doc/automake.mom
if BUILD_PDFDOC
docpdfdocdir = $(pdfdocdir)
nodist_docpdfdoc_DATA = doc/automake.pdf
-MOSTLYCLEANFILES += doc/automake.pdf
endif
-doc/automake.pdf: doc/automake.mom \
- groff troff gropdf pdfmom font/devpdf/build_font_files \
- contrib/mom/om.tmac
+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
-HTMLDOCFILES = \
- doc/pic.html
htmlpicdir = $(htmldocdir)
-htmlpic_DATA = $(HTMLDOCFILES)
+htmlpic_DATA = $(PROCESSEDDOCFILES_HTML)
HTMLDOCFILESALL = pic*.html
HTMLDOCIMAGEFILES = pic*
endif
@@ -107,9 +123,21 @@ EXAMPLEFILES = \
doc/grnexmpl.me
# Generated in the build tree
-PROCESSEDEXAMPLEFILES = \
+if BUILD_HTML
+PROCESSEDEXAMPLEFILES_HTML = doc/webpage.html
+else
+PROCESSEDEXAMPLEFILES_HTML =
+endif
+PROCESSEDEXAMPLEFILES_PS = \
doc/webpage.ps \
doc/grnexmpl.ps
+PROCESSEDEXAMPLEFILES = \
+ $(PROCESSEDEXAMPLEFILES_HTML) \
+ $(PROCESSEDEXAMPLEFILES_PS)
+
+$(PROCESSEDEXAMPLEFILES_HTML): $(PROCESSEDFILES_DEPS_HTML)
+$(PROCESSEDEXAMPLEFILES_PS): $(PROCESSEDFILES_DEPS_PS)
+
docexamplesdir = $(exampledir)
dist_docexamples_DATA = $(EXAMPLEFILES)
nodist_docexamples_DATA = $(PROCESSEDEXAMPLEFILES)
@@ -118,11 +146,9 @@ MOSTLYCLEANFILES += $(PROCESSEDEXAMPLEFILES)
if BUILD_HTML
# webpage.html is generated; webpage*.html files are installed by the
# local rule.
-HTMLEXAMPLEFILES = doc/webpage.html
HTMLEXAMPLEFILESALL = webpage*.html
HTMLEXAMPLEIMAGEFILES = webpage*
htmlexamplesdir = $(exampledir)
-nodist_htmlexamples_DATA = $(HTMLEXAMPLEFILES)
endif
# Locate image subdirectory for HTML documents relative to an
@@ -235,9 +261,6 @@ doc/grnexmpl.ps: $(doc_srcdir)/grnexmpl.me $(doc_srcdir)/grnexmpl.g \
$(GROFF_V)$(MKDIR_P) `dirname $@` \
&& $(DOC_GROFF) -Tps -ge -me $(doc_srcdir)/grnexmpl.me >$@
-$(PROCESSEDDOCFILES_PS): \
- $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA)
-
# Generating *.me from *.me.in is, surprisingly, a challenge.
# 1. A pattern rule ("%.me: %.me.in") is not portable to NetBSD or
# OpenBSD make.
@@ -318,35 +341,18 @@ doc/webpage.ps: $(doc_srcdir)/webpage.ms
# $(GROFF_V)$(MKDIR_P) `dirname $@` \
# && $(DOC_GROFF) -Tps -ms $< >$@
-$(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES): \
- $(bin_PROGRAMS) \
- $(prefixexecbin_PROGRAMS) \
- $(dist_tmac_DATA) $(nodist_tmac_DATA)
-
-MOSTLYCLEANFILES += doc/examples.stamp
-doc/examples.stamp: doc/groff.css
- $(AM_V_at)$(MKDIR_P) $(doc_builddir)
- $(AM_V_at)test -f $(doc_builddir)/groff.css || \
- cp $(doc_srcdir)/groff.css $(doc_builddir)
- $(AM_V_at)echo timestamp > $@
-
+doc/pic.html: eqn pic tbl
doc/pic.html: tmac/www.tmac
-doc/pic.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
-doc/pic.html: doc/examples.stamp
-doc/pic.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA)
-doc/pic.html: $(devhtmlfont_DATA)
doc/pic.html: $(doc_srcdir)/pic.ms
$(GROFF_V)$(MKDIR_P) $(doc_builddir) \
&& cd $(doc_builddir) \
&& $(DOC_GROFF) -pet -P-Ipic -P-Dimg -P-jpic -Thtml -ms \
$(doc_srcdir)/pic.ms > pic.html
+doc/webpage.html: tbl
doc/webpage.html: tmac/www.tmac
-doc/webpage.html: $(bin_PROGRAMS) $(prefixexecbin_PROGRAMS)
-doc/webpage.html: doc/examples.stamp
-doc/webpage.html: $(dist_devpsfont_DATA) $(nodist_devpsfont_DATA)
-doc/webpage.html: $(devhtmlfont_DATA)
-doc/webpage.html: $(DOC_GNU_EPS) $(doc_srcdir)/groff.css
+doc/webpage.html: $(DOC_GNU_EPS)
+doc/webpage.html: $(doc_srcdir)/groff.css
doc/webpage.html: $(doc_srcdir)/webpage.ms
$(GROFF_V)$(MKDIR_P) $(doc_builddir) \
&& cd $(doc_builddir) \