diff options
author | Richard Levitte <levitte@openssl.org> | 2021-02-22 06:49:24 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2021-02-23 18:24:28 +0100 |
commit | 7b9f8995f44482610d4f3452118e53c2f259511d (patch) | |
tree | fb15435e264b0efd070a18740f4a5547c2508680 /doc/build.info.in | |
parent | 1263154064d2a15253381353cf804e05af18ad1b (diff) | |
download | openssl-new-7b9f8995f44482610d4f3452118e53c2f259511d.tar.gz |
Generate doc/build.info with 'make update' rather than on the fly
doc/build.info was essentially generated on the fly while running
Configure, something that takes a huge amount of time on slower file
systems (such as Windows).
Instead, we generate it with 'make update', saving the user from
having to wait for too long, at the small price for developers to have
to run 'make update' whenever they write a new manual file.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14269)
Diffstat (limited to 'doc/build.info.in')
-rw-r--r-- | doc/build.info.in | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/doc/build.info.in b/doc/build.info.in new file mode 100644 index 0000000000..408c168818 --- /dev/null +++ b/doc/build.info.in @@ -0,0 +1,68 @@ +SUBDIRS = man1 + +{- + use File::Spec::Functions qw(:DEFAULT abs2rel rel2abs); + use File::Basename; + + my $sourcedir = catdir($config{sourcedir}, 'doc'); + + foreach my $section ((1, 3, 5, 7)) { + my @htmlfiles = (); + my @manfiles = (); + my %podfiles = + map { $_ => 1 } glob catfile($sourcedir, "man$section", "*.pod"); + my %podinfiles = + map { $_ => 1 } glob catfile($sourcedir, "man$section", "*.pod.in"); + + foreach (keys %podinfiles) { + (my $p = $_) =~ s|\.in$||i; + $podfiles{$p} = 1; + } + + foreach my $p (sort keys %podfiles) { + my $podfile = abs2rel($p, $sourcedir); + my $podname = basename($podfile, '.pod'); + my $podinfile = $podinfiles{"$p.in"} ? "$podfile.in" : undef; + + my $podname = basename($podfile, ".pod"); + + my $htmlfile = abs2rel(catfile($buildtop, "doc", "html", "man$section", + "$podname.html"), + catdir($buildtop, "doc")); + my $manfile = abs2rel(catfile($buildtop, "doc", "man", "man$section", + "$podname.$section"), + catdir($buildtop, "doc")); + + # The build.info format requires file specs to be in Unix format. + # Especially, since VMS file specs use [ and ], the build.info parser + # will otherwise get terribly confused. + if ($^O eq 'VMS') { + $htmlfile = VMS::Filespec::unixify($htmlfile); + $manfile = VMS::Filespec::unixify($manfile); + $podfile = VMS::Filespec::unixify($podfile); + $podinfile = VMS::Filespec::unixify($podinfile) + if defined $podinfile; + } elsif ($^O eq 'MSWin32') { + $htmlfile =~ s|\\|/|g; + $manfile =~ s|\\|/|g; + $podfile =~ s|\\|/|g; + $podinfile =~ s|\\|/|g + if defined $podinfile; + } + push @htmlfiles, $htmlfile; + push @manfiles, $manfile; + $OUT .= << "_____"; +DEPEND[$htmlfile]=$podfile +GENERATE[$htmlfile]=$podfile +DEPEND[$manfile]=$podfile +GENERATE[$manfile]=$podfile +_____ + $OUT .= << "_____" if $podinfile; +DEPEND[$podfile]{pod}=$podinfile +GENERATE[$podfile]=$podinfile +_____ + } + $OUT .= "HTMLDOCS[man$section]=" . join(" \\\n", @htmlfiles) . "\n"; + $OUT .= "MANDOCS[man$section]=" . join(" \\\n", @manfiles) . "\n"; + } + -} |