Support new rsaz asm stuff.
[openssl.git] / util / pl / unix.pl
index 1e0902a68a3415591c96d868382a33fde5259cfa..a15418705b4e75b637d4b96be9e89193861eba03 100644 (file)
@@ -26,6 +26,7 @@ else
                { $cflags="-O"; }
        }
 $obj='.o';
+$asm_suffix='.s';
 $ofile='-o ';
 
 # EXE linking stuff
@@ -69,7 +70,10 @@ $bf_enc_src="";
          'rc4-x86_64' => 'crypto/rc4',
          'rc4-md5-x86_64' => 'crypto/rc4',
          'ghash-x86_64' => 'crypto/modes',
-          'aesni-gcm-x86_64' => 'crypto/modes',
+         'aesni-gcm-x86_64' => 'crypto/modes',
+         'aesni-sha256-x86_64' => 'crypto/aes',
+          'rsaz-x86_64' => 'crypto/bn',
+          'rsaz-avx2' => 'crypto/bn',
          );
 
 # If I were feeling more clever, these could probably be extracted
@@ -188,13 +192,18 @@ sub fixtests
 
 sub fixdeps
   {
-  my ($str) = @_;
+  my ($str, $fakes) = @_;
 
   my @t = split(/\s+/, $str);
   $str = '';
   foreach my $t (@t)
     {
     $str .= ' ' if $str ne '';
+    if (exists($fakes->{$t}))
+      {
+      $str .= $fakes->{$t};
+      next;
+      }
     if ($t =~ /^[^\/]+$/)
       {
       $str .= '$(TEST_D)/' . $t;
@@ -264,6 +273,7 @@ sub get_tests
   my %deps;
   my %tests;
   my %alltests;
+  my %fakes;
   while (my $line = <M>)
     {
     chomp $line;
@@ -286,7 +296,22 @@ sub get_tests
        || $line =~ /^(?<t>test_(ss|gen) .*):(?<d>.*)/)
       {
       my $t = $+{t};
-      $deps{$t} = $+{d};
+      my $d = $+{d};
+      # If there are multiple targets stupid FreeBSD make runs the
+      # rules once for each dependency that matches one of the
+      # targets. Running the same rule twice concurrently causes
+      # breakage, so replace with a fake target.
+      if ($t =~ /\s/)
+        {
+       ++$fake;
+       my @targets = split /\s+/, $t;
+       $t = "_fake$fake";
+       foreach my $f (@targets)
+         {
+         $fakes{$f} = $t;
+         }
+       }
+      $deps{$t} = $d;
       $deps{$t} =~ s/#.*$//;
       for (;;)
        {
@@ -325,7 +350,7 @@ sub get_tests
     $d =~ s/\.\.\/apps/\$(BIN_D)/g;
     $d =~ s/\.\.\/util/\$(TEST_D)/g;
     $d = fixtests($d, \%tests);
-    $d = fixdeps($d);
+    $d = fixdeps($d, \%fakes);
 
     my $r = $targets{$t};
     $r =~ s/\.\.\/apps/..\/\$(BIN_D)/g;
@@ -371,6 +396,9 @@ sub get_tests
                 'testrsa.pem',
                 'testsid.pem',
                 'testss',
+                'testssl',
+                'testsslproxy',
+                'serverinfo.pem',
               );
   my $copies = copy_scripts(1, 'test', @copies);
   $copies .= copy_scripts(0, 'test', ('smcont.txt'));
@@ -382,6 +410,7 @@ sub get_tests
 
   my @apps = ( 'CA.sh',
               'openssl.cnf',
+              'server2.pem',
             );
   $copies .= copy_scripts(1, 'apps', @apps);
 
@@ -391,7 +420,18 @@ sub get_tests
   $scripts .= "\nocsp:\n\tcp -R test/ocsp-tests \$(TEST_D)\n";
   $scripts .= "\smime:\n\tcp -R test/smime-certs \$(TEST_D)\n";
 
-  my $all = 'test: ' . join(' ', keys %alltests);
+  my $all = 'test:';
+  foreach my $t (keys %alltests)
+    {
+    if (exists($fakes{$t}))
+      {
+      $all .= " $fakes{$t}";
+      }
+    else
+      {
+      $all .= " $t";
+      }
+    }
 
   return "$scripts\n$copies\n$tests\n$all\n\n$each";
   }