Add quotes as CC can contain spaces.
[openssl.git] / util / fipsas.pl
1
2 # FIPS assembly language preprocessor
3 # Renames all symbols in the file to
4 # their modified fips versions.
5
6
7 my @ARGS = @ARGV;
8
9 my $top = shift @ARGS;
10 my $target = shift @ARGS;
11 my $tmptarg = $target;
12
13 $tmptarg =~ s/\.[^\\\/\.]+$/.tmp/;
14
15 my $runasm = 1;
16
17 if ($ARGS[0] eq "norunasm")
18         {
19         $runasm = 0;
20         shift @ARGS;
21         }
22
23 my $enabled = 0;
24
25 $enabled = 1 if $ENV{FIPSCANISTERINTERNAL} eq "y";
26
27 if ($enabled == 0 && $runasm)
28         {
29         system @ARGS;
30         exit $?
31         }
32
33
34 # Open symbol rename file.
35 open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h";
36
37 # Skip to assembler symbols
38 while (<IN>)
39         {
40         last if (/assembler/)
41         }
42
43 # Store all renames.
44 while (<IN>)
45         {
46         if (/^#define\s+(\w+)\s+(\w+)\b/)
47                 {
48                 $edits{$1} = $2;
49                 }
50         }
51
52 my ($from, $to);
53
54 #delete any temp file lying around
55
56 unlink $tmptarg;
57
58 #rename target temporarily
59 rename($target, $tmptarg) || die "Can't rename $target";
60
61 #edit target
62 open(IN,$tmptarg) || die "Can't open temporary file";
63 open(OUT, ">$target") || die "Can't open output file $target";
64
65 while (<IN>)
66 {
67         while (($from, $to) = each %edits)
68                 {
69                 s/(\b_*)$from(\b)/$1$to$2/g;
70                 }
71         print OUT $_;
72 }
73
74 close OUT;
75
76 if ($runasm)
77         {
78         # run assembler
79         system @ARGS;
80
81         my $rv = $?;
82
83         # restore target
84         unlink $target;
85         rename $tmptarg, $target;
86
87         die "Error executing assembler!" if $rv != 0;
88         }
89 else
90         {
91         # Don't care about target
92         unlink $tmptarg;
93         }