'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',
'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
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";
{
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;
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;
my %deps;
my %tests;
my %alltests;
+ my %fakes;
while (my $line = <M>)
{
chomp $line;
|| $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 (;;)
{
$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;
'testrsa.pem',
'testsid.pem',
'testss',
+ 'testssl',
+ 'testsslproxy',
+ 'serverinfo.pem',
);
my $copies = copy_scripts(1, 'test', @copies);
$copies .= copy_scripts(0, 'test', ('smcont.txt'));
my @apps = ( 'CA.sh',
'openssl.cnf',
+ 'server2.pem',
);
$copies .= copy_scripts(1, 'apps', @apps);
$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";
}