Configure: allow conditions and variable values to have variable references

This will allow building variables on other variables, and to have
conditions based on variable contents.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9166)
This commit is contained in:
Richard Levitte 2019-06-16 11:38:30 +02:00
parent 26de4ec68f
commit 0ee7b9fe7f

View file

@ -1881,7 +1881,7 @@ if ($builder eq "unified") {
qr/^\s*IF\[((?:\\.|[^\\\]])*)\]\s*$/ qr/^\s*IF\[((?:\\.|[^\\\]])*)\]\s*$/
=> sub { => sub {
if (! @skip || $skip[$#skip] > 0) { if (! @skip || $skip[$#skip] > 0) {
push @skip, !! $1; push @skip, !! $expand_variables->($1);
} else { } else {
push @skip, -1; push @skip, -1;
} }
@ -1890,7 +1890,7 @@ if ($builder eq "unified") {
=> sub { die "ELSIF out of scope" if ! @skip; => sub { die "ELSIF out of scope" if ! @skip;
die "ELSIF following ELSE" if abs($skip[$#skip]) == 2; die "ELSIF following ELSE" if abs($skip[$#skip]) == 2;
$skip[$#skip] = -1 if $skip[$#skip] != 0; $skip[$#skip] = -1 if $skip[$#skip] != 0;
$skip[$#skip] = !! $1 $skip[$#skip] = !! $expand_variables->($1)
if $skip[$#skip] == 0; }, if $skip[$#skip] == 0; },
qr/^\s*ELSE\s*$/ qr/^\s*ELSE\s*$/
=> sub { die "ELSE out of scope" if ! @skip; => sub { die "ELSE out of scope" if ! @skip;
@ -1902,7 +1902,9 @@ if ($builder eq "unified") {
qr/^\s*${variable_re}\s*=\s*(.*?)\s*$/ qr/^\s*${variable_re}\s*=\s*(.*?)\s*$/
=> sub { => sub {
if (!@skip || $skip[$#skip] > 0) { if (!@skip || $skip[$#skip] > 0) {
$variables{$1} = $2; my $n = $1;
my $v = $2;
$variables{$n} = $expand_variables->($v);
} }
}, },
qr/^\s*SUBDIRS\s*=\s*(.*)\s*$/ qr/^\s*SUBDIRS\s*=\s*(.*)\s*$/