From 3a58ef2712d1bcf123dbf925d3f371823533e71a Mon Sep 17 00:00:00 2001 From: "G. Branden Robinson" Date: Mon, 2 May 2022 01:13:48 +1000 Subject: [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 ; thanks to Sergei Trofimovich for the report. Also fixes ; 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 --- doc/doc.am | 78 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 42 insertions(+), 36 deletions(-) (limited to 'doc/doc.am') 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) \ -- cgit v1.2.1