Configure: try to make sure every config target name is unique
authorRichard Levitte <levitte@openssl.org>
Tue, 9 Jan 2018 18:51:19 +0000 (19:51 +0100)
committerRichard Levitte <levitte@openssl.org>
Tue, 9 Jan 2018 19:48:37 +0000 (20:48 +0100)
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5047)

(cherry picked from commit 225f980d22dfe66aa3945c21609042c32284e61c)

Configurations/README
Configure

index eecf1ea72e5238f961c569f2d0d73f551cc015a3..6e13645491f7c59d8ab53fb3a06e77033fc28e4e 100644 (file)
@@ -18,10 +18,14 @@ configuration in diverse ways:
 Configurations of OpenSSL target platforms
 ==========================================
 
-Target configurations are a collection of facts that we know about
+Configuration targets are a collection of facts that we know about
 different platforms and their capabilities.  We organise them in a
 hash table, where each entry represent a specific target.
 
+Note that configuration target names must be unique across all config
+files.  The Configure script does check that a config file doesn't
+have config targets that shadow config targets from other files.
+
 In each table entry, the following keys are significant:
 
         inherit_from    => Other targets to inherit values from.
index 44aecc78597f252be75aea8edbc677ae4a2f8acf..ecbebcce77e65a51719badbf03d21273fa5146cc 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -2271,6 +2271,17 @@ sub read_config {
        eval $content;
        warn $@ if $@;
     }
+    my %preexisting = ();
+    foreach (sort keys %targets) {
+        $preexisting{$_} = 1 if $table{$_};
+    }
+    die <<"EOF",
+The following config targets from $fname
+shadow pre-existing config targets with the same name:
+EOF
+        map { "  $_\n" } sort keys %preexisting
+        if %preexisting;
+
 
     # For each target, check that it's configured with a hash table.
     foreach (keys %targets) {