diff options
| author | Bob Beck <[email protected]> | 2026-08-11 01:58:23 +0200 |
|---|---|---|
| committer | Tomas Mraz <[email protected]> | 2026-09-01 16:02:42 +0200 |
| commit | ad3d4e4656586471d70726c635b946bbe89944c0 (patch) | |
| tree | 4ffcfc289effb704ae87306c3a7c604e6d9d3017 /Configurations | |
| parent | Stop reloading Pod::Man for every manual page (diff) | |
| download | openssl-ad3d4e4656586471d70726c635b946bbe89944c0.tar.gz openssl-ad3d4e4656586471d70726c635b946bbe89944c0.zip | |
Stop reloading Pod::Html for every manual page
Pod::Html is compiled before the first pod is read, so converting the
manual to HTML started nine hundred perl processes to do about a
second of work.
Convert the whole set in one invocation that loads the module once and
divides the pages between a few forked workers. Nothing depends on an
individual page, since the install recipe takes them as arguments, so
a stamp is enough to order the work, and the per-page rules stay for
building one page by name. The single page option the VMS and Windows
build files use is unchanged, and both paths convert through the same
code.
Reviewed-by: Neil Horman <[email protected]>
Reviewed-by: Andrew Dinh <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Merge-date: Tue Sep 1 14:03:11 2026
Merged-from: https://github.com/openssl/openssl/pull/32243
Diffstat (limited to 'Configurations')
| -rw-r--r-- | Configurations/unix-Makefile.tmpl | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index bb3ca6498b5..6f0c8a602ce 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -274,6 +274,17 @@ HTMLDOCS7={- join(" \\\n" . ' ' x 10, fill_lines(" ", $COLUMNS - 10, @{$unified_info{htmldocs}->{man7}})) -} + +# The pods every HTML page is made from, which is what the whole set is +# converted from in one go. Each page's pod is the first element of its +# generator, the same place generatesrc() below takes it from. +HTMLPODS={- + join(" \\\n" . ' ' x 9, + fill_lines(" ", $COLUMNS - 9, + map { $unified_info{generate}->{$_}->[0] } + map { @{$unified_info{htmldocs}->{$_} // []} } + qw(man1 man3 man5 man7))) -} + MANDOCS1={- join(" \\\n" . ' ' x 9, fill_lines(" ", $COLUMNS - 9, @@ -586,7 +597,18 @@ doc/man/.mandocs.stamp: {- $config{manpage_format} eq "roff" . "\n\t" . '@touch $@' : "\t" . '@touch $@' -} -build_html_docs: $(HTMLDOCS1) $(HTMLDOCS3) $(HTMLDOCS5) $(HTMLDOCS7) ## Create HTML documentation +build_html_docs: doc/html/.htmldocs.stamp ## Create HTML documentation + +# As with the manual pages, Pod::Html is compiled before the first pod is +# read, so the whole set is converted in one invocation rather than in a +# process per page. Nothing depends on an individual page -- the install +# recipe takes them as arguments -- so a stamp is enough to order the work, +# and the per-page rules below stay available for one page by name. +doc/html/.htmldocs.stamp: $(HTMLPODS) + @$(ECHO) "Converting the manual pages to HTML" + @$(PERL) $(SRCDIR)/util/mkpod2html.pl -o doc/html \ + -r "$(SRCDIR)/doc" $(HTMLPODS) + @touch $@ build_generated: $(GENERATED_MANDATORY) build_libs_nodep: $(LIBS) {- join(" ",map { platform->sharedlib_simple($_) // platform->sharedlib_import($_) // platform->sharedlib($_) // () } @{$unified_info{libraries}}) -} @@ -670,6 +692,7 @@ clean: libclean ## Clean the workspace, keep the configuration $(RM) $(HTMLDOCS3) $(RM) $(HTMLDOCS5) $(RM) $(HTMLDOCS7) + $(RM) doc/html/.htmldocs.stamp $(RM) $(MANDOCS1) $(RM) $(MANDOCS3) $(RM) $(MANDOCS5) |
