Configure: allow conditions and variable values to have variable references
authorRichard Levitte <levitte@openssl.org>
Sun, 16 Jun 2019 09:38:30 +0000 (11:38 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 17 Jun 2019 14:08:52 +0000 (16:08 +0200)
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)

Configure

index c3f4f99ba6db11d35f665735f024347cceca452a..c238907bee748d64d2e22939ab47c339273719a0 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -1881,7 +1881,7 @@ if ($builder eq "unified") {
             qr/^\s*IF\[((?:\\.|[^\\\]])*)\]\s*$/
             => sub {
                 if (! @skip || $skip[$#skip] > 0) {
-                    push @skip, !! $1;
+                    push @skip, !! $expand_variables->($1);
                 } else {
                     push @skip, -1;
                 }
@@ -1890,7 +1890,7 @@ if ($builder eq "unified") {
             => sub { die "ELSIF out of scope" if ! @skip;
                      die "ELSIF following ELSE" if abs($skip[$#skip]) == 2;
                      $skip[$#skip] = -1 if $skip[$#skip] != 0;
-                     $skip[$#skip] = !! $1
+                     $skip[$#skip] = !! $expand_variables->($1)
                          if $skip[$#skip] == 0; },
             qr/^\s*ELSE\s*$/
             => sub { die "ELSE out of scope" if ! @skip;
@@ -1902,7 +1902,9 @@ if ($builder eq "unified") {
             qr/^\s*${variable_re}\s*=\s*(.*?)\s*$/
             => sub {
                 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*$/