fipsdist.pl 1.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12

# 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{$_}";
	}

13 14
my $noec2m = 0;

15 16 17 18 19 20

my @objlist = split / /, $objs;

foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};

$tarobjs{"ncbc_enc.c"} = 1;
21
$tarobjs{"mem_clr.c"} = 1;
22
$tarobjs{"ppccap.c"} = 1;
D
Dr. Stephen Henson 已提交
23
$tarobjs{"sparcv9cap.c"} = 1;
24
$tarobjs{"armcap.c"} = 1;
25 26 27 28 29

foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };

$cdirs{perlasm} = 1;

30 31 32
$noec2m = 1 if (exists $ENV{NOEC2M});

if ($noec2m)
33 34 35 36 37 38
	{
	delete $tarobjs{"bn_gf2m.c"};
	delete $tarobjs{"ec2_mult.c"};
	delete $tarobjs{"ec2_smpl.c"};
	}

39 40 41 42 43
my %keep = 
	(
	"Makefile.fips" => 1,
	"Makefile.shared" => 1,
	"README.FIPS" => 1,
44
	"README.ECC" => 1,
45 46 47 48 49 50
	"e_os.h" => 1,
	"e_os2.h" => 1,
	"Configure" => 1,
	"config" => 1,
	);

51 52 53
while (<STDIN>)
	{
	chomp;
54 55 56 57 58 59 60 61 62
	# Keep top level files in list
	if (!/\// && -f $_)
		{
		next unless exists $keep{$_};
		}
	else
		{
		next unless (/^(fips\/|crypto|util|test|include|ms)/);
		}
63 64 65 66
	if (/^crypto\/([^\/]+)/)
		{
		# Skip unused directories under crypto/
		next if -d "crypto/$1" && !exists $cdirs{$1};
67 68
		# Skip GF2m assembly language perl scripts
		next if $noec2m && /gf2m\.pl/;
69
		next if /vpaes-\w*\.pl/;
70
		# Keep assembly language dir, Makefile or certain extensions
71
		if (!/\/asm\// && !/\/Makefile$/ && !/\.(in|pl|h|S)$/)
72 73 74 75 76
			{
			# If C source file must be on list.
			next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
			}
		}
77 78 79 80
	if (/^test\//)
		{
		next unless /Makefile/ || /dummytest.c/;
		}
81 82 83
	print "$_\n";
	}
exit 1;