PR: 2786
[mirror-openssl.git] / util / fipsdist.pl
blobb191fbe41e0b0d6abb85777c80ec0e2bb5790bc3
2 # FIPS distribution filter.
3 # Takes tarball listing and removes unnecessary files and directories.
7 my $objs = "";
8 foreach (split / /, "FIPS_EX_OBJ AES_ENC BN_ASM DES_ENC SHA1_ASM_OBJ MODES_ASM_OBJ")
10 $objs .= " $ENV{$_}";
13 my $noec2m = 0;
16 my @objlist = split / /, $objs;
18 foreach (@objlist) { $tarobjs{"$1.c"} = 1 if /([^\/]+).o$/};
20 $tarobjs{"ncbc_enc.c"} = 1;
21 $tarobjs{"mem_clr.c"} = 1;
22 $tarobjs{"ppccap.c"} = 1;
23 $tarobjs{"sparcv9cap.c"} = 1;
24 $tarobjs{"armcap.c"} = 1;
26 foreach (split / /, $ENV{LINKDIRS} ) { $cdirs{$_} = 1 };
28 $cdirs{perlasm} = 1;
30 $noec2m = 1 if (exists $ENV{NOEC2M});
32 if ($noec2m)
34 delete $tarobjs{"bn_gf2m.c"};
35 delete $tarobjs{"ec2_mult.c"};
36 delete $tarobjs{"ec2_smpl.c"};
39 my %keep =
41 "Makefile.fips" => 1,
42 "Makefile.shared" => 1,
43 "README.FIPS" => 1,
44 "README.ECC" => 1,
45 "e_os.h" => 1,
46 "e_os2.h" => 1,
47 "Configure" => 1,
48 "config" => 1,
51 while (<STDIN>)
53 chomp;
54 # Keep top level files in list
55 if (!/\// && -f $_)
57 next unless exists $keep{$_};
59 else
61 next unless (/^(fips\/|crypto|util|test|include|ms)/);
63 if (/^crypto\/([^\/]+)/)
65 # Skip unused directories under crypto/
66 next if -d "crypto/$1" && !exists $cdirs{$1};
67 # Skip GF2m assembly language perl scripts
68 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)$/)
73 # If C source file must be on list.
74 next if !/(\w+\.c)$/ || !exists $tarobjs{$1};
77 if (/^test\//)
79 next unless /Makefile/ || /dummytest.c/;
81 print "$_\n";
83 exit 1;