Add the Configure option --classic, to fall back on classic build schemes

Reviewed-by: Matt Caswell <matt@openssl.org>
diff --git a/Configure b/Configure
index 0e2a599..cfd8be0 100755
--- a/Configure
+++ b/Configure
@@ -448,6 +448,8 @@
 $config{options}="";
 $config{build_type} = "release";
 
+my $classic = 0;
+
 my @argvcopy=@ARGV;
 
 if (grep /^reconf(igure)?$/, @argvcopy) {
@@ -631,7 +633,11 @@
 		}
 	elsif (/^[-+]/)
 		{
-		if (/^--prefix=(.*)$/)
+		if (/^--classic$/)
+			{
+			$classic=1;
+			}
+		elsif (/^--prefix=(.*)$/)
 			{
 			$config{prefix}=$1;
 			die "Directory given with --prefix MUST be absolute\n"
@@ -886,6 +892,22 @@
 $target{build_scheme} = [ $target{build_scheme} ]
     if ref($target{build_scheme}) ne "ARRAY";
 
+###### TO BE REMOVED WHEN CLASSIC BUILD IS REMOVED
+######
+###### If the user has chosen --classic, we give it to them.
+###### If they try that with an out-of-source config, we complain.
+if ($target{build_scheme}->[0] eq "unified" && $classic) {
+    die "Can't perform a classic build out of source tree\n"
+        if $srcdir ne $blddir;
+
+    $target{build_scheme} = { unix    => [ "unixmake" ],
+                              windows => [ "mk1mf", $target{build_scheme}->[2] ],
+                              VMS     => undef } -> {$target{build_scheme}->[1]};
+
+    die "Classic mode unavailable on this platform\n"
+        unless defined($target{build_scheme});
+}
+
 my ($builder, $builder_platform, @builder_opts) =
     @{$target{build_scheme}};