75 lines
1.4 KiB
Perl
75 lines
1.4 KiB
Perl
|
|
# FIPS distribution filter.
|
|
# Takes tarball listing and removes unnecessary files and directories.
|
|
#
|
|
|
|
|
|
my $objs = "";
|
|
foreach (split / /, "FIPS_EX_OBJ AES_ENC BN_ASM DES_ENC SHA1_ASM_OBJ MODES_ASM_OBJ")
|
|
{
|
|
$objs .= " $ENV{$_}";
|
|
}
|
|
|
|
|
|
my @objlist = split / /, $objs;
|
|
|
|
foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};
|
|
|
|
$tarobjs{"ncbc_enc.c"} = 1;
|
|
$tarobjs{"mem_clr.c"} = 1;
|
|
$tarobjs{"ppccap.c"} = 1;
|
|
|
|
foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };
|
|
|
|
$cdirs{perlasm} = 1;
|
|
|
|
if (exists $ENV{NOEC2M})
|
|
{
|
|
delete $tarobjs{"bn_gf2m.c"};
|
|
delete $tarobjs{"ec2_mult.c"};
|
|
delete $tarobjs{"ec2_smpl.c"};
|
|
delete $tarobjs{"armv4-gf2m.pl"};
|
|
delete $tarobjs{"x86-gf2m.pl"};
|
|
}
|
|
|
|
my %keep =
|
|
(
|
|
"Makefile.fips" => 1,
|
|
"Makefile.shared" => 1,
|
|
"README.FIPS" => 1,
|
|
"e_os.h" => 1,
|
|
"e_os2.h" => 1,
|
|
"Configure" => 1,
|
|
"config" => 1,
|
|
);
|
|
|
|
while (<STDIN>)
|
|
{
|
|
chomp;
|
|
# Keep top level files in list
|
|
if (!/\// && -f $_)
|
|
{
|
|
next unless exists $keep{$_};
|
|
}
|
|
else
|
|
{
|
|
next unless (/^(fips\/|crypto|util|test|include|ms)/);
|
|
}
|
|
if (/^crypto\/([^\/]+)/)
|
|
{
|
|
# Skip unused directories under crypto/
|
|
next if -d "crypto/$1" && !exists $cdirs{$1};
|
|
# Keep assembly language dir, Makefile or certain extensions
|
|
if (!/\/asm\// && !/\/Makefile$/ && !/\.(in|pl|h|S)$/)
|
|
{
|
|
# If C source file must be on list.
|
|
next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
|
|
}
|
|
}
|
|
if (/^test\//)
|
|
{
|
|
next unless /Makefile/ || /dummytest.c/;
|
|
}
|
|
print "$_\n";
|
|
}
|
|
exit 1;
|