Make it possible to add env var assignments as Configure options
authorRichard Levitte <levitte@openssl.org>
Wed, 29 Nov 2017 12:16:53 +0000 (13:16 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 7 Dec 2017 23:36:21 +0000 (00:36 +0100)
In other words, make the following possible:

    ./config CC=clang

or

    ./Configure CC=clang linux-x86_64

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4818)

Configure

index 6f2aee38cae08102ce7a2df7595ba21f387114ab..9624af4820bc2b429ed7c8d00b1d06e0cfbbfda2 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -538,6 +538,14 @@ my @seed_sources = ();
 while (@argvcopy)
        {
        $_ = shift @argvcopy;
 while (@argvcopy)
        {
        $_ = shift @argvcopy;
+
+       # Support env variable assignments among the options
+       if (m|^(\w+)=(.+)?$|)
+               {
+               $config{perlenv}->{$1} = $2;
+               next;
+               }
+
        # VMS is a case insensitive environment, and depending on settings
        # out of our control, we may receive options uppercased.  Let's
        # downcase at least the part before any equal sign.
        # VMS is a case insensitive environment, and depending on settings
        # out of our control, we may receive options uppercased.  Let's
        # downcase at least the part before any equal sign.
@@ -2529,8 +2537,12 @@ sub env
 {
     my $name = shift;
 
 {
     my $name = shift;
 
-    return $config{perlenv}->{$name} if exists $config{perlenv}->{$name};
-    $config{perlenv}->{$name} = $ENV{$name};
+    # Note that if $ENV{$name} doesn't exist or is undefined,
+    # $config{perlenv}->{$name} will be created with the value
+    # undef.  This is intentional.
+
+    $config{perlenv}->{$name} = $ENV{$name}
+        if ! exists $config{perlenv}->{$name};
     return $config{perlenv}->{$name};
 }
 
     return $config{perlenv}->{$name};
 }