Remove remaining variables for symlinked/copied headers and tests
[openssl.git] / util / pl / unix.pl
index 1e0902a68a3415591c96d868382a33fde5259cfa..81a6f0b84735e4c4dd75293f37fe57bdcc654c81 100644 (file)
@@ -26,6 +26,7 @@ else
                { $cflags="-O"; }
        }
 $obj='.o';
+$asm_suffix='.s';
 $ofile='-o ';
 
 # EXE linking stuff
@@ -58,7 +59,6 @@ $bf_enc_src="";
          'x86_64-mont' => 'crypto/bn',
          'x86_64-mont5' => 'crypto/bn',
          'x86_64-gf2m' => 'crypto/bn',
-         'modexp512-x86_64' => 'crypto/bn',
          'aes-x86_64' => 'crypto/aes',
          'vpaes-x86_64' => 'crypto/aes',
          'bsaes-x86_64' => 'crypto/aes',
@@ -69,7 +69,16 @@ $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',
+         'aesni-mb-x86_64' => 'crypto/aes',
+         'sha1-mb-x86_64' => 'crypto/sha',
+         'sha256-mb-x86_64' => 'crypto/sha',
+         'ecp_nistz256-x86_64' => 'crypto/ec',
+         'wp-x86_64' => 'crypto/whrlpool',
+         'cmll-x86_64' => 'crypto/camellia',
          );
 
 # If I were feeling more clever, these could probably be extracted
@@ -80,6 +89,9 @@ sub platform_perlasm_compile_target
 
        for $p (keys %perl1)
                {
+# FIXME: export CC so rsaz-avx2 can test for it, since BSD make does
+# not export variables, unlike GNU make. But this also requires fixing
+# the .s.o rule to use CC!
                if ($target eq "\$(OBJ_D)/$p.o")
                        {
                        return << "EOF";
@@ -128,7 +140,7 @@ sub special_compile_target
                {
                return << "EOF";
 \$(TMP_D)/x86_64-gcc.o:        crypto/bn/asm/x86_64-gcc.c
-       \$(CC) \$(CFLAGS) -c -o \$@ crypto/bn/asm/x86_64-gcc.c
+       \$(CC) \$(LIB_CFLAGS) -c -o \$@ crypto/bn/asm/x86_64-gcc.c
 EOF
                }
        return undef;
@@ -188,13 +200,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;
@@ -213,8 +230,8 @@ sub fixrules
   my ($str) = @_;
 
   # Compatible with -j...
-  $str =~ s/^(\s+@?)/$1cd \$(TEST_D) && /;
-  return $str;
+#  $str =~ s/^(\s+@?)/$1cd \$(TEST_D) && /;
+#  return $str;
 
   # Compatible with not -j.
   my @t = split("\n", $str);
@@ -226,11 +243,11 @@ sub fixrules
     if (!$prev)
       {
       if ($t =~ /^@/)
-       {
+        {
         $t =~ s/^@/\@cd \$(TEST_D) && /;
         }
-      elsif ($t !~ /^\s*#/)
-       {
+      elsif ($t !~ /^\s*#/ && $t !~ /^echo/)
+        {
         $t = 'cd $(TEST_D) && ' . $t;
         }
       }
@@ -264,6 +281,7 @@ sub get_tests
   my %deps;
   my %tests;
   my %alltests;
+  my %fakes;
   while (my $line = <M>)
     {
     chomp $line;
@@ -286,7 +304,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 +358,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,9 +404,13 @@ 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'));
+  $copies .= copy_scripts(0, 'test', ('smcont.txt', 'evptests.txt'));
+
 
   my @utils = ( 'shlib_wrap.sh',
                'opensslwrap.sh',
@@ -382,16 +419,26 @@ sub get_tests
 
   my @apps = ( 'CA.sh',
               'openssl.cnf',
+              'server2.pem',
             );
   $copies .= copy_scripts(1, 'apps', @apps);
 
-  $copies .= copy_scripts(1, 'crypto/evp', ('evptests.txt'));
-
   $scripts = "test_scripts: \$(TEST_D)/CA.sh \$(TEST_D)/opensslwrap.sh \$(TEST_D)/openssl.cnf \$(TEST_D)/shlib_wrap.sh ocsp smime\n";
   $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";
   }