util/perl/OpenSSL/config.pm, Configure: move check of target with compiler
authorRichard Levitte <levitte@openssl.org>
Mon, 2 Mar 2020 23:06:52 +0000 (00:06 +0100)
committerRichard Levitte <levitte@openssl.org>
Sun, 28 Jun 2020 16:34:35 +0000 (18:34 +0200)
Previously, ./config would check if "$target-$CC", then "$target"
exists and choose the one that does.  This is now moved to Configure.

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11230)

Configure
util/perl/OpenSSL/config.pm

index a0b9c22b6d08d33097852ce657d1150515a94570..a56e085adbda2d5acb7b5f3312639d238659a3af 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -1166,7 +1166,24 @@ if ($d) {
     }
 }
 
-&usage if !$table{$target} || $table{$target}->{template};
+if ($target) {
+    # It's possible that we have different config targets for specific
+    # toolchains, so we try to detect them, and go for the plain config
+    # target if not.
+    my $found;
+    foreach ( ( "$target-$user{CC}", "$target", undef ) ) {
+        $found=$_ if $table{$_} && !$table{$_}->{template};
+        last if $found;
+    }
+    $target = $found;
+} else {
+    # If we don't have a config target now, we try the C compiler as we
+    # fallback
+    my $cc = $user{CC} // 'cc';
+    $target = $cc if $table{$cc} && !$table{$cc}->{template};
+}
+
+&usage unless $target;
 
 $config{target} = $target;
 my %target = resolve_config($target);
index 62fc5ce312569c413e0ee778cf37176f2f8a78d2..5e0372ac2e548f0544570149aa7ed0153ef05604 100755 (executable)
@@ -867,24 +867,6 @@ EOF
     return $OUT;
 }
 
-# Append $CC to the target if that's in the Config list.
-sub check_target_exists {
-    my $OUT = shift;
-    my %table;
-
-    open T, "$PERL $WHERE/Configure LIST|" or die "Can't get LIST, $!";
-    while ( <T> ) {
-        chop;
-        $table{$_} = 1;
-    }
-    close T;
-    return "$OUT-$CC" if defined $table{"$OUT-$CC"};
-    return "$OUT" if defined $table{$OUT};
-    print "This system ($OUT) is not supported. See INSTALL for details.\n";
-    exit 1;
-}
-
-
 ###
 ###   MAIN PROCESSING
 ###