Add doc/build.info to build the documentation
authorRichard Levitte <levitte@openssl.org>
Wed, 31 Aug 2016 20:56:02 +0000 (22:56 +0200)
committerRichard Levitte <levitte@openssl.org>
Fri, 29 Nov 2019 08:51:17 +0000 (09:51 +0100)
This build.info is entirely generated when configuring

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6236)

.gitignore
build.info
doc/build.info [new file with mode: 0644]

index eb95e48..0d02ecd 100644 (file)
@@ -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
index a050ae9..a28ddbe 100644 (file)
@@ -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 (file)
index 0000000..47728fe
--- /dev/null
@@ -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";
+ }
+ -}