Correct the request of debug builds
authorRichard Levitte <levitte@openssl.org>
Tue, 17 Mar 2015 15:30:54 +0000 (16:30 +0100)
committerRichard Levitte <levitte@openssl.org>
Tue, 17 Mar 2015 16:01:31 +0000 (17:01 +0100)
./config would translate -d into having the target get a 'debug-'
prefix, and then run './Configure LIST' to find out if such a
debugging target exists or not.

With the recent changes, the separate 'debug-foo' targets are
disappearing, and we're giving the normal targets debugging
capabilities instead.  Unfortunately, './config' wasn't changed to
match this new behavior.

This change introduces the arguments '--debug' and '--release' - the
latter just for orthogonality - to ./Configure, and ./config now
treats -d by adding '--debug' to the options for ./Configure.

Reviewed-by: Matt Caswell <matt@openssl.org>
Configure
config

index 705f4c6..4a34b4e 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -946,6 +946,7 @@ my $options;
 my $symlink;
 my $make_depend=0;
 my %withargs=();
+my $build_prefix = "release_";
 
 my @argvcopy=@ARGV;
 my $argvstring="";
@@ -1020,10 +1021,18 @@ PROCESS_ARGS:
                        {
                        exit(&test_sanity());
                        }
-               elsif (/^--strict-warnings/)
+               elsif (/^--strict-warnings$/)
                        {
                        $strict_warnings = 1;
                        }
+               elsif (/^--debug$/)
+                       {
+                       $build_prefix = "debug_";
+                       }
+               elsif (/^--release$/)
+                       {
+                       $build_prefix = "release_";
+                       }
                elsif (/^reconfigure/ || /^reconf/)
                        {
                        if (open(IN,"<$Makefile"))
@@ -1234,10 +1243,10 @@ if ($target =~ m/^CygWin32(-.*)$/) {
 
 print "Configuring for $target\n";
 
+# Support for legacy targets having a name starting with 'debug-'
 my ($d, $t) = $target =~ m/^(debug-)?(.*)$/;
-my $debug_prefix = "release_";
 if ($d) {
-    $debug_prefix = "debug_";
+    $build_prefix = "debug_";
 
     # If we do not find debug-foo in the table, the target is set to foo,
     # but only if the foo target has a noon-empty debug_cflags or debug_lflags
@@ -1248,7 +1257,11 @@ if ($d) {
     }
 }
 
-&usage if (!defined($table{$target}) || $table{$target}->{template});
+&usage if (!defined($table{$target})
+          || $table{$target}->{template}
+          || ($build_prefix eq "debug_"
+              && !($table{$target}->{debug_cflags}
+                   || $table{$target}->{debug_lflags})));
 
 if ($fips)
        {
@@ -1359,10 +1372,10 @@ my $cc = $ENV{CC} || $table{$t}->{cc};
 # Do it in such a way that no spurious space is appended (hence the grep).
 my $cflags = join(" ",
                  grep { $_ } ($table{$t}->{cflags},
-                              $table{$t}->{$debug_prefix."cflags"}));
+                              $table{$t}->{$build_prefix."cflags"}));
 my $lflags = join(" ",
                  grep { $_ } ($table{$t}->{lflags},
-                              $table{$t}->{$debug_prefix."lflags"}));
+                              $table{$t}->{$build_prefix."lflags"}));
 
 my $unistd = $table{$t}->{unistd};
 my $thread_cflag = $table{$t}->{thread_cflag};
diff --git a/config b/config
index 8644211..44c48c1 100755 (executable)
--- a/config
+++ b/config
@@ -29,7 +29,7 @@ EXE=""
 for i
 do
 case "$i" in 
--d*) PREFIX="debug-";;
+-d*) options=$options" --debug";;
 -t*) TEST="true";;
 -h*) TEST="true"; cat <<EOF
 Usage: config [options]