Don't go into dotted directories when copying Makefile.in to Makefile
[openssl.git] / Configure
index 6a2ca8a4e1b14b8e47468c74603624731d9f11a3..4dca9a9e1dbe9de267195af451f73c2ddee3a597 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -884,7 +884,7 @@ if (!$no_dso && $target{dso_scheme} ne "")
        $config{cflags} = "$dso_cflags $config{cflags}";
        }
 
-my $thread_cflags;
+my $thread_cflags = "";
 my @thread_defines;
 if ($target{thread_cflag} ne "(unknown)" && !$no_threads)
        {
@@ -902,21 +902,13 @@ if ($target{thread_cflag} eq "(unknown)" && $threads)
                print "provide any system-specific compiler options\n";
                exit(1);
                }
-       $thread_cflags="-DOPENSSL_THREADS $config{cflags}" ;
+       $thread_cflags="-DOPENSSL_THREADS" ;
        push @thread_defines, "OPENSSL_THREADS";
        }
 else
        {
-       $thread_cflags="-DOPENSSL_THREADS $target{thread_cflag} $config{cflags}";
+       $thread_cflags="-DOPENSSL_THREADS $target{thread_cflag}";
        push @thread_defines, "OPENSSL_THREADS";
-#      my $def;
-#      foreach $def (split ' ',$target{thread_cflag})
-#              {
-#              if ($def =~ s/^-D// && $def !~ /^_/)
-#                      {
-#                      push @thread_defines, "$def";
-#                      }
-#              }
        }
 
 $config{ex_libs}="$libs$config{ex_libs}" if ($libs ne "");
@@ -924,12 +916,11 @@ $config{ex_libs}="$libs$config{ex_libs}" if ($libs ne "");
 if ($no_asm)
        {
        $config{cflags}=~s/-D[BL]_ENDIAN//              if ($config{fips});
-       $thread_cflags=~s/-D[BL]_ENDIAN//       if ($config{fips});
        }
 
 if ($threads)
        {
-       $config{cflags}=$thread_cflags;
+       $config{cflags} = "$thread_cflags $config{cflags}" if $thread_cflags;
        push @{$config{openssl_thread_defines}}, @thread_defines;
        }
 
@@ -1125,17 +1116,21 @@ my $def_int="unsigned int";
 $config{rc4_int}               =$def_int;
 ($config{b64l},$config{b64},$config{b32})=(0,0,1);
 
+my $count = 0;
 foreach (sort split(/\s+/,$target{bn_ops})) {
-    $config{bn_ll}=1                           if /BN_LLONG/;
-    $config{rc4_int}="unsigned char"           if /RC4_CHAR/;
-    ($config{b64l},$config{b64},$config{b32},$config{b16},$config{b8})
-       =(0,1,0,0,0)                            if /SIXTY_FOUR_BIT/;
-    ($config{b64l},$config{b64},$config{b32},$config{b16},$config{b8})
-       =(1,0,0,0,0)                            if /SIXTY_FOUR_BIT_LONG/;
-    ($config{b64l},$config{b64},$config{b32},$config{b16},$config{b8})
-       =(0,0,1,0,0)                            if /THIRTY_TWO_BIT/;
-    $config{export_var_as_fn}=1                        if /EXPORT_VAR_AS_FN/;
+    $count++ if /SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT/;
+    $config{export_var_as_fn}=1                 if $_ eq 'EXPORT_VAR_AS_FN';
+    $config{bn_ll}=1                           if $_ eq 'BN_LLONG';
+    $config{rc4_int}="unsigned char"           if $_ eq 'RC4_CHAR';
+    ($config{b64l},$config{b64},$config{b32})
+       =(0,1,0)                                if $_ eq 'SIXTY_FOUR_BIT';
+    ($config{b64l},$config{b64},$config{b32})
+       =(1,0,0)                                if $_ eq 'SIXTY_FOUR_BIT_LONG';
+    ($config{b64l},$config{b64},$config{b32})
+       =(0,0,1)                                if $_ eq 'THIRTY_TWO_BIT';
 }
+die "Exactly one of SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT can be set in bn_ops\n"
+    if $count > 1;
 
 
 # Hack cflags for better warnings (dev option) #######################
@@ -1302,23 +1297,30 @@ foreach my $alg ( 'bn' ) {
 # Copy all Makefile.in to Makefile (except top-level)
 use File::Find;
 use IO::File;
-find(sub {
-        return if ($_ ne "Makefile.in" || $File::Find::dir eq ".");
-        my $in = IO::File->new($_, "r") or
-            die sprintf "Error reading Makefile.in in %s: !$\n",
+find(
+    {
+        preprocess => sub {
+            grep(!/^\./, @_);
+        },
+        wanted => sub {
+            return if ($_ ne "Makefile.in" || $File::Find::dir eq ".");
+            my $in = IO::File->new($_, "r") or
+                die sprintf "Error reading Makefile.in in %s: !$\n",
                 $File::Find::dir;
-        my $out = IO::File->new("Makefile", "w") or
-            die sprintf "Error writing Makefile in %s: !$\n",
+            my $out = IO::File->new("Makefile", "w") or
+                die sprintf "Error writing Makefile in %s: !$\n",
                 $File::Find::dir;
-        print $out "# Generated from $_, do not edit\n";
-        while (my $line = <$in>) { print $out $line }
-        $in->close() or
-            die sprintf "Error reading Makefile.in in %s: !$\n",
+            print $out "# Generated from $_, do not edit\n";
+            while (my $line = <$in>) { print $out $line }
+            $in->close() or
+                die sprintf "Error reading Makefile.in in %s: !$\n",
                 $File::Find::dir;
-        $out->close() or
-            die sprintf "Error writing Makefile in %s: !$\n",
+            $out->close() or
+                die sprintf "Error writing Makefile in %s: !$\n",
                 $File::Find::dir;
-    }, ".");
+        },
+    },
+    ".");
 
 my %builders = (
     unixmake => sub {