Make CROSS_COMPILE another supported "make variable" in Configure
authorRichard Levitte <levitte@openssl.org>
Fri, 2 Feb 2018 11:27:29 +0000 (12:27 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 22 Feb 2018 13:57:40 +0000 (14:57 +0100)
No more special casing for that one, and this means it gets displayed
by 'perl configdata.pm --make-variables' among all the others.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5247)

Configure

index 32ba3558cdbadc7435158ce9e1ddc8d4599e2e6d..5ca4f8fcc5ff0c93838b952925238a1785a6b066 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -287,7 +287,6 @@ $config{prefix}="";
 $config{openssldir}="";
 $config{processor}="";
 $config{libdir}="";
-$config{cross_compile_prefix}="";
 my $auto_threads=1;    # enable threads automatically? true by default
 my $default_ranlib;
 
@@ -537,6 +536,7 @@ my %user = (
     CPPFLAGS    => [],  # -D, -I, -Wp,
     CPPDEFINES  => [],  # Alternative for -D
     CPPINCLUDES => [],  # Alternative for -I
+    CROSS_COMPILE => undef,
     HASHBANGPERL=> undef,
     LD          => undef,
     LDFLAGS     => [],  # -L, -Wl,
@@ -548,6 +548,9 @@ my %user = (
     RCFLAGS     => [],
     RM          => undef,
    );
+# Info about what "make variables" may be prefixed with the cross compiler
+# prefix.  This should NEVER mention any such variable with a list for value.
+my @user_crossable = qw ( AR AS CC CXX CPP LD MT RANLIB RC );
 # The same but for flags given as Configure options.  These are *additional*
 # input, as opposed to the VAR=string option that override the corresponding
 # config target attributes
@@ -569,6 +572,7 @@ my %user_to_target = (
     # If not given here, the value is the lc of the key
     CPPDEFINES  => 'defines',
     CPPINCLUDES => 'includes',
+    CROSS_COMPILE => 'cross_compile_prefix',
     LDFLAGS     => 'lflags',
     LDLIBS      => 'ex_libs',
    );
@@ -784,7 +788,7 @@ while (@argvcopy)
                         }
                elsif (/^--cross-compile-prefix=(.*)$/)
                        {
-                       $config{cross_compile_prefix}=$1;
+                       $user{CROSS_COMPILE}=$1;
                        }
                elsif (/^--config=(.*)$/)
                        {
@@ -1039,10 +1043,6 @@ $target{dso_extension}=$target{shared_extension_simple};
 ($target{shared_import_extension}=$target{shared_extension_simple}.".a")
     if ($config{target} =~ /^(?:Cygwin|mingw)/);
 
-
-$config{cross_compile_prefix} = env('CROSS_COMPILE')
-    if $config{cross_compile_prefix} eq "";
-
 # Allow overriding the names of some tools.  USE WITH CARE
 # Note: only Unix cares about HASHBANGPERL...  that explains
 # the default string.
@@ -2326,6 +2326,7 @@ foreach my $what (sort keys %disabled_info) {
     print OUT "    },\n";
 }
 print OUT ");\n";
+print OUT 'my @user_crossable = qw( ', join (' ', @user_crossable), " );\n";
 print OUT << 'EOF';
 # If run directly, we can give some answers, and even reconfigure
 unless (caller) {
@@ -2437,13 +2438,16 @@ _____
     }
     if ($dump || $makevars) {
         print "\nMakevars:\n\n";
-        foreach (sort keys %makevars) {
-            print '    ',$_,' ' x (16 - length $_),'= ',
-                (ref $config{$makevars{$_}} eq 'ARRAY'
-                 ? join(' ', @{$config{$makevars{$_}}})
-                 : $config{$makevars{$_}}),
+        foreach my $var (sort keys %makevars) {
+            my $prefix = '';
+            $prefix = $config{cross_compile_prefix}
+                if grep { $var eq $_ } @user_crossable;
+            print '    ',$var,' ' x (16 - length $var),'= ',
+                (ref $config{$makevars{$var}} eq 'ARRAY'
+                 ? join(' ', @{$config{$makevars{$var}}})
+                 : $prefix.$config{$makevars{$var}}),
                 "\n"
-                if defined $config{$makevars{$_}};
+                if defined $config{$makevars{$var}};
         }
 
         my @buildfile = ($config{builddir}, $config{build_file});