"crypto/bf",
"crypto/cast",
"crypto/aes",
+"crypto/camellia",
+"crypto/seed",
+"crypto/modes",
+"crypto/cmac",
"crypto/bn",
"crypto/rsa",
"crypto/dsa",
"crypto/dso",
"crypto/dh",
"crypto/ec",
-"crypto/ecdh",
-"crypto/ecdsa",
"crypto/buffer",
"crypto/bio",
"crypto/stack",
"crypto/pem",
"crypto/x509",
"crypto/x509v3",
+"crypto/cms",
"crypto/conf",
"crypto/txt_db",
"crypto/pkcs7",
"crypto/engine",
"crypto/ocsp",
"crypto/ui",
-"crypto/krb5",
-"crypto/store",
-"crypto/pqueue",
+#"crypto/store",
+"crypto/whrlpool",
+"crypto/ts",
+"crypto/srp",
+"crypto/ct",
+"crypto/async",
+"crypto/chacha",
+"crypto/poly1305",
+"crypto/kdf",
"ssl",
"apps",
"engines",
"tools"
);
+%top;
+
+my $fipscanisteronly = 0;
+
foreach (@dirs) {
+ next if ($fipscanisteronly && !(-d $_));
&files_dir ($_, "Makefile");
}
while (<IN>)
{
- chop;
+ s|\R$||;
s/#.*//;
- if (/^(\S+)\s*=\s*(.*)$/)
+ if (/^([^\s=]+)\s*=\s*(.*)$/)
{
$o="";
($s,$b)=($1,$2);
{
if ($b =~ /\\$/)
{
- chop($b);
+ $b=$`;
$o.=$b." ";
- $b=<IN>;
- chop($b);
+ $b = "" unless defined($b = <IN>);
+ $b =~ s{\R$}{};
}
else
{
$o =~ s/\s+$//;
$o =~ s/\s+/ /g;
- $o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g;
- $sym{$s}=$o;
+ $o =~ s/\$[({]([^)}]+)[)}]/$top{$1} or $sym{$1}/ge;
+ $sym{$s}=($top{$s} or $o);
}
}
{
print "$_=$sym{$_}\n";
}
+if ($dir eq "." && defined($sym{"BUILDENV"}))
+ {
+ foreach (split(' ',$sym{"BUILDENV"}))
+ {
+ /^(.+)=/;
+ $top{$1}=$sym{$1};
+ }
+ }
+
print "RELATIVE_DIRECTORY=\n";
close (IN);
+if ($dir eq "." && $sym{FIPSCANISTERONLY} eq "y")
+ {
+ $fipscanisteronly = 1;
+ }
}