Build file templates: Use explicit files instead of $< or $? for pods

When generating html or manpages from POD files, we used $< or $? to
get the file name to process.  It turns out, though, that some make
implementations only define $< with implicit rules, so its expansion
remains empty in explicit rules.  $? is a fine replacement, but only
as long as we have one dependency, so it may cause problems in the
future.

The final solution seems to be to use explicit POD file names
instead.  That leaves no doubts.

Fixes #10817

Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/10849)
This commit is contained in:
Richard Levitte 2020-01-15 08:28:46 +01:00
parent 43becc3fe5
commit 98706c5a8c
3 changed files with 12 additions and 8 deletions

View file

@ -781,10 +781,11 @@ reconfigure reconf :
if ($args{src} =~ /\.html$/) { if ($args{src} =~ /\.html$/) {
my $title = basename($args{src}, ".html"); my $title = basename($args{src}, ".html");
my $pod = $args{generator}->[0];
return <<"EOF"; return <<"EOF";
$args{src}: $args{generator}->[0] $args{src}: $pod
pipe pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. - pipe pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. -
--podpath=man1:man3:man5:man7 "--infile=\$<" - --podpath=man1:man3:man5:man7 "--infile=$pod" -
"--title=$title" - "--title=$title" -
| \$(PERL) -pe "s|href=""http://man\\.he\\.net/(man\d/[^""]+)(?:\\.html)?""|href=""../\$1.html|g;" - | \$(PERL) -pe "s|href=""http://man\\.he\\.net/(man\d/[^""]+)(?:\\.html)?""|href=""../\$1.html|g;" -
> \$\@ > \$\@

View file

@ -1184,20 +1184,22 @@ reconfigure reconf:
if ($args{src} =~ /\.html$/) { if ($args{src} =~ /\.html$/) {
my $title = basename($args{src}, ".html"); my $title = basename($args{src}, ".html");
my $pod = $args{generator}->[0];
return <<"EOF"; return <<"EOF";
$args{src}: $args{generator}->[0] $args{src}: $pod
pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\ pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\
--podpath=man1:man3:man5:man7 "--infile=\$<" "--title=$title" \\ --podpath=man1:man3:man5:man7 --infile=$pod "--title=$title" \\
| \$(PERL) -pe 's|href="http://man\\.he\\.net/(man\\d/[^"]+)(?:\\.html)?"|href="../\$1.html|g;' \\ | \$(PERL) -pe 's|href="http://man\\.he\\.net/(man\\d/[^"]+)(?:\\.html)?"|href="../\$1.html|g;' \\
> \$\@ > \$\@
EOF EOF
} elsif ($args{src} =~ /\.(\d)$/) { } elsif ($args{src} =~ /\.(\d)$/) {
my $section = $1; my $section = $1;
my $name = uc basename($args{src}, ".$section"); my $name = uc basename($args{src}, ".$section");
my $pod = $args{generator}->[0];
return <<"EOF"; return <<"EOF";
$args{src}: $args{generator}->[0] $args{src}: $pod
pod2man --name=$name --section=$section --center=OpenSSL \\ pod2man --name=$name --section=$section --center=OpenSSL \\
--release=\$(VERSION) \$< \\ --release=\$(VERSION) $pod \\
> \$\@ > \$\@
EOF EOF
} elsif (platform->isdef($args{src})) { } elsif (platform->isdef($args{src})) {

View file

@ -586,10 +586,11 @@ reconfigure reconf:
if ($args{src} =~ /\.html$/) { if ($args{src} =~ /\.html$/) {
my $title = basename($args{src}, ".html"); my $title = basename($args{src}, ".html");
my $pod = $args{generator}->[0];
return <<"EOF"; return <<"EOF";
$args{src}: $args{generator}->[0] $args{src}: "$pod"
pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\ pod2html "--podroot=\$(SRCDIR)/doc" --htmldir=.. \\
--podpath=man1:man3:man5:man7 "--infile=\$?" "--title=$title" \\ --podpath=man1:man3:man5:man7 "--infile=$pod" "--title=$title" \\
| \$(PERL) -pe ^"s^|href=\\^"http://man\\.he\\.net/^(man\\d/[^^\\^"]+^)^(?:\.html^)?^"^|href=\\^"../\$\$1.html^|g;^" \\ | \$(PERL) -pe ^"s^|href=\\^"http://man\\.he\\.net/^(man\\d/[^^\\^"]+^)^(?:\.html^)?^"^|href=\\^"../\$\$1.html^|g;^" \\
> \$\@ > \$\@
EOF EOF