Make -DOPENSSL_FIPSSYMS work under WIN32: run perl script when
authorDr. Stephen Henson <steve@openssl.org>
Wed, 23 Feb 2011 15:03:43 +0000 (15:03 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 23 Feb 2011 15:03:43 +0000 (15:03 +0000)
WIN32 assembly language files are created, add norunasm option
to just translate and not run the assembler.

util/fipsas.pl
util/mk1mf.pl

index c6964e1..49cf564 100644 (file)
@@ -9,6 +9,14 @@ my @ARGS = @ARGV;
 my $top = shift @ARGS;
 my $target = shift @ARGS;
 
+my $runasm = 1;
+
+if ($ARGS[0] eq "norunasm")
+       {
+       $runasm = 0;
+       shift @ARGS;
+       }
+
 # HACK to disable operation if no OPENSSL_FIPSSYMS option.
 # will go away when tested more fully.
 
@@ -16,12 +24,13 @@ my $enabled = 0;
 
 foreach (@ARGS) { $enabled = 1 if /-DOPENSSL_FIPSSYMS/ ; }
 
-if ($enabled == 0)
+if ($enabled == 0 && $runasm)
        {
        system @ARGS;
        exit $?
        }
 
+
 # Open symbol rename file.
 open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h";
 
@@ -53,18 +62,32 @@ while (<IN>)
 {
        while (($from, $to) = each %edits)
                {
-               s/(\b)$from(\b)/$1$to$2/g;
+               s/(\b_*)$from(\b)/$1$to$2/g;
                }
        print OUT $_;
 }
-# run assembler
-system @ARGS;
 
-my $rv = $?;
+close OUT;
+
+if ($runasm)
+       {
+       # run assembler
+       system @ARGS;
+
+       my $rv = $?;
+
+       # restore target
+       unlink $target;
+       rename "tmptarg.s", $target;
+
+       die "Error executing assembler!" if $rv != 0;
+       }
+else
+       {
+       # Don't care about target
+       unlink "tmptarg.s";
+       }
+
 
-# restore target
-unlink $target;
-rename "tmptarg.s", $target;
 
-die "Error executing assembler!" if $rv != 0;
 
index 7ace933..cb104f8 100755 (executable)
@@ -1163,10 +1163,14 @@ sub perlasm_compile_target
        {
        my($target,$source,$bname)=@_;
        my($ret);
-
        $bname =~ s/(.*)\.[^\.]$/$1/;
        $ret ="\$(TMP_D)$o$bname.asm: $source\n";
-       $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n\n";
+       $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n";
+       if ($cflags =~ /-DOPENSSL_FIPSSYMS/)
+               {
+               $ret .= "\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n";
+               }
+       $ret .= "\n";
        $ret.="$target: \$(TMP_D)$o$bname.asm\n";
        $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
        return($ret);