summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-08-31 22:56:02 +0200
committerRichard Levitte <levitte@openssl.org>2019-11-29 09:51:17 +0100
commitdf8f116ecd6e25577eb1e47a213df17d64e87b4a (patch)
tree1fe7208240c541e738eb67a167bb6b74e6ff8c5b
parent829f86bb7b52e58c2db333b8e2eb7ad990724746 (diff)
Add doc/build.info to build the documentation
This build.info is entirely generated when configuring Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6236)
-rw-r--r--.gitignore4
-rw-r--r--build.info2
-rw-r--r--doc/build.info66
3 files changed, 71 insertions, 1 deletions
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";
+ }
+ -}