From df8f116ecd6e25577eb1e47a213df17d64e87b4a Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 31 Aug 2016 22:56:02 +0200 Subject: [PATCH] Add doc/build.info to build the documentation This build.info is entirely generated when configuring Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/6236) --- .gitignore | 4 +++ build.info | 2 +- doc/build.info | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 doc/build.info diff --git a/.gitignore b/.gitignore index eb95e48bfe..0d02ecdf8f 100644 --- a/.gitignore +++ b/.gitignore @@ -157,6 +157,10 @@ doc/man1/openssl-x509.pod /test/fips_test_suite.c /test/shatest.c +# Generated docs directories +/doc/html +/doc/man + ##### Generic patterns # Auto generated assembly language source files *.s diff --git a/build.info b/build.info index a050ae9530..a28ddbe739 100644 --- a/build.info +++ b/build.info @@ -1,6 +1,6 @@ # Note that some of these directories are filtered in Configure. Look for # %skipdir there for further explanations. -SUBDIRS=crypto ssl apps test util tools fuzz engines providers doc/man1 +SUBDIRS=crypto ssl apps test util tools fuzz engines providers doc LIBS=libcrypto libssl INCLUDE[libcrypto]=. include diff --git a/doc/build.info b/doc/build.info new file mode 100644 index 0000000000..47728fed56 --- /dev/null +++ b/doc/build.info @@ -0,0 +1,66 @@ +SUBDIRS = man1 + +{- + use File::Spec::Functions qw(:DEFAULT abs2rel rel2abs); + use File::Basename; + + 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]=$podinfile ../configdata.pm +GENERATE[$podfile]=$podinfile +_____ + } + $OUT .= "HTMLDOCS[man$section]=" . join(" \\\n", @htmlfiles) . "\n"; + $OUT .= "MANDOCS[man$section]=" . join(" \\\n", @manfiles) . "\n"; + } + -} -- 2.34.1