Refactor config - consolidate and refresh print_table_entry
authorRichard Levitte <levitte@openssl.org>
Mon, 18 May 2015 10:53:38 +0000 (12:53 +0200)
committerRichard Levitte <levitte@openssl.org>
Fri, 22 Jan 2016 22:10:34 +0000 (23:10 +0100)
It's time for print_table_entry to get a bit of refreshment.  The way it
was put together, we needed to maintain the list of known configuration
keys of interest twice, in different shapes.  This is error prone, so
move the list of strings to a common list for all printing cases, and
use simple formatting of lines to do the actual printout based on that
list.

Reviewed-by: Rich Salz <rsalz@openssl.org>
Configure

index 96f88b2..0a6d812 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -646,30 +646,30 @@ while (@tocheckfor) {
 }
 
 if ($target eq "TABLE") {
-       foreach $target (sort keys %table) {
-               print_table_entry($target, "TABLE");
-       }
-       exit 0;
+    foreach (sort keys %table) {
+       print_table_entry($_, "TABLE");
+    }
+    exit 0;
 }
 
 if ($target eq "LIST") {
-       foreach (sort keys %table) {
-               print;
-               print "\n";
-       }
-       exit 0;
+    foreach (sort keys %table) {
+       print $_,"\n" unless $table{$_}->{template};
+    }
+    exit 0;
 }
 
 if ($target eq "HASH") {
-       print "%table = (\n";
-       foreach (sort keys %table) {
-               print_table_entry($_, "HASH");
-       }
-       exit 0;
+    print "%table = (\n";
+    foreach (sort keys %table) {
+       print_table_entry($_, "HASH");
+    }
+    exit 0;
 }
 
+# Backward compatibility?
 if ($target =~ m/^CygWin32(-.*)$/) {
-       $target = "Cygwin".$1;
+    $target = "Cygwin".$1;
 }
 
 foreach (sort (keys %disabled))
@@ -1885,6 +1885,75 @@ sub usage
        exit(1);
        }
 
+# Configuration printer ##############################################
+
+sub print_table_entry
+{
+    my $target = shift;
+    my %target = resolve_config($target);
+    my $type = shift;
+
+    # Don't print the templates
+    return if $target{template};
+
+    my @sequence = (
+       "cc",
+       "cflags",
+       "debug_cflags",
+       "release_cflags",
+       "unistd",
+       "thread_cflag",
+       "sys_id",
+       "lflags",
+       "debug_lflags",
+       "release_lflags",
+       "bn_ops",
+       "cpuid_obj",
+       "bn_obj",
+       "ec_obj",
+       "des_obj",
+       "aes_obj",
+       "bf_obj",
+       "md5_obj",
+       "sha1_obj",
+       "cast_obj",
+       "rc4_obj",
+       "rmd160_obj",
+       "rc5_obj",
+       "wp_obj",
+       "cmll_obj",
+       "modes_obj",
+       "engines_obj",
+       "perlasm_scheme",
+       "dso_scheme",
+       "shared_target",
+       "shared_cflag",
+       "shared_ldflag",
+       "shared_extension",
+       "ranlib",
+       "arflags",
+       "multilib",
+       );
+
+    if ($type eq "TABLE") {
+       print "\n";
+       print "*** $target\n";
+       printf "\$%-12s = %s\n", $_, $target{$_} foreach (@sequence);
+    } elsif ($type eq "HASH") {
+       my $largest =
+           length((sort { length($a) <=> length($b) } @sequence)[-1]);
+       print "    '$target' => {\n";
+       foreach (@sequence) {
+           if ($target{$_}) {
+               print "      '",$_,"'"," " x ($largest - length($_))," => '",$target{$_},"',\n";
+           }
+       }
+       print "    },\n";
+    }
+}
+
+# Utility routines ###################################################
+
 sub which
        {
        my($name)=@_;
@@ -1918,111 +1987,6 @@ sub dofile
        rename("$f.new",$f) || die "unable to rename $f.new\n";
        }
 
-sub print_table_entry
-       {
-       my $target = shift;
-       my %target = resolve_config($target);
-       my $type = shift;
-
-       # Don't print the templates
-       return if $target{template};
-
-       if ($type eq "TABLE") {
-           print <<"EOF"
-
-*** $target
-\$cc           = $target{cc}
-\$cflags       = $target{cflags}
-\$debug_cflags   = $target{debug_cflags}
-\$release_cflags = $target{release_cflags}
-\$unistd       = $target{unistd}
-\$thread_cflag = $target{thread_cflag}
-\$sys_id       = $target{sys_id}
-\$lflags       = $target{lflags}
-\$debug_lflags   = $target{debug_lflags}
-\$release_lflags = $target{release_lflags}
-\$bn_ops       = $target{bn_ops}
-\$cpuid_obj    = $target{cpuid_obj}
-\$bn_obj       = $target{bn_obj}
-\$ec_obj       = $target{ec_obj}
-\$des_obj      = $target{des_obj}
-\$aes_obj      = $target{aes_obj}
-\$bf_obj       = $target{bf_obj}
-\$md5_obj      = $target{md5_obj}
-\$sha1_obj     = $target{sha1_obj}
-\$cast_obj     = $target{cast_obj}
-\$rc4_obj      = $target{rc4_obj}
-\$rmd160_obj   = $target{rmd160_obj}
-\$rc5_obj      = $target{rc5_obj}
-\$wp_obj       = $target{wp_obj}
-\$cmll_obj     = $target{cmll_obj}
-\$modes_obj    = $target{modes_obj}
-\$engines_obj  = $target{engines_obj}
-\$chacha_obj   = $target{chacha_obj}
-\$poly1305_obj = $target{poly1305_obj}
-\$perlasm_scheme = $target{perlasm_scheme}
-\$dso_scheme   = $target{dso_scheme}
-\$shared_target= $target{shared_target}
-\$shared_cflag = $target{shared_cflag}
-\$shared_ldflag = $target{shared_ldflag}
-\$shared_extension = $target{shared_extension}
-\$ranlib       = $target{ranlib}
-\$arflags      = $target{arflags}
-\$multilib     = $target{multilib}
-EOF
-       } elsif ($type eq "HASH") {
-           my @sequence = (
-               "cc",
-               "cflags",
-               "debug_cflags",
-               "release_cflags",
-               "unistd",
-               "thread_cflag",
-               "sys_id",
-               "lflags",
-               "debug_lflags",
-               "release_lflags",
-               "bn_ops",
-               "cpuid_obj",
-               "bn_obj",
-               "ec_obj",
-               "des_obj",
-               "aes_obj",
-               "bf_obj",
-               "md5_obj",
-               "sha1_obj",
-               "cast_obj",
-               "rc4_obj",
-               "rmd160_obj",
-               "rc5_obj",
-               "wp_obj",
-               "cmll_obj",
-               "modes_obj",
-               "engines_obj",
-               "chacha_obj",
-               "poly1305_obj",
-               "perlasm_scheme",
-               "dso_scheme",
-               "shared_target",
-               "shared_cflag",
-               "shared_ldflag",
-               "shared_extension",
-               "ranlib",
-               "arflags",
-               "multilib",
-               );
-           my $largest =
-               length((sort { length($a) <=> length($b) } @sequence)[-1]);
-           print "    '$target' => {\n";
-           foreach (@sequence) {
-               if ($target{$_}) {
-                   print "      '",$_,"'"," " x ($largest - length($_))," => '",$target{$_},"',\n";
-               }
-           }
-           print "    },\n";
-       }
-       }
-
 sub quotify {
     my %processors = (
        perl    => sub { my $x = shift;