Expanded boundary support for VC++ build.
authorDr. Stephen Henson <steve@openssl.org>
Thu, 18 Jan 2007 18:44:41 +0000 (18:44 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 18 Jan 2007 18:44:41 +0000 (18:44 +0000)
util/mk1mf.pl
util/pl/VC-32.pl

index e7042918559d719852677043ed5d68d7da28b611..0f94082bb5f75ea9a3d9c9136d2499ae94c3386b 100755 (executable)
@@ -279,7 +279,8 @@ $ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
 
 
 %shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
-                 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
+                 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO",
+                 "FIPS" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
 
 if ($msdos)
        {
@@ -362,6 +363,12 @@ for (;;)
        if ($key eq "LIBOBJ")
                { $libobj=&var_add($dir,$val); }
 
+       if ($key eq "FIPS_EX_OBJ")
+               { 
+               $val =~ s|\.\./crypto/||g;
+               $fips_ex_obj=&var_add("crypto",$val);
+               }
+
        if ($key eq "FIPSLIBDIR")
                { $fipslibdir=$val;}
 
@@ -373,6 +380,41 @@ for (;;)
        }
 close(IN);
 
+
+if ($fips)
+       {
+        
+       foreach (split " ", $fips_ex_obj)
+               {
+               $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/);
+               }
+
+       # $fips_exclude_obj{"bn_asm"} = 1;
+
+       my @ltmp = split " ", $lib_obj{"CRYPTO"};
+
+
+       $lib_obj{"CRYPTO"} = "";
+
+       foreach(@ltmp)
+               {
+               if (/\/bn_asm$/)
+                       {
+                       $lib_obj{"FIPS"} .= "$_ ";
+                       }
+               elsif (!/\/([^\/]*)$/ || !exists $fips_exclude_obj{$1})
+                       {
+                       $lib_obj{"CRYPTO"} .= "$_ ";
+                       }
+               }
+
+       if ($fipscanisterbuild)
+               {
+               $lib_obj{"FIPS"} .= $fips_ex_obj;
+               }
+
+       }
+
 if ($fipscanisterbuild)
        {
        $fips_canister_path = "\$(LIB_D)${o}fipscanister.o";
@@ -1147,7 +1189,6 @@ sub read_options
                }
        elsif (/^--fipscanisterbuild$/)
                {
-               print STDERR "FIPS CANISTER BUILD\n";
                $fipscanisterbuild=1;
                }
        elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
index 1ba2f846568d2ac7110e5984444e624d8506d56c..0b99f7204635c13e2ae3e729acf7ed01c726d10b 100644 (file)
@@ -4,6 +4,8 @@
 
 $ssl=  "ssleay32";
 
+my $mwex =" \$(FIPSLIB_D)${o}_chkstk.o \$(FIPSLIB_D)${o}_udivdi3.o \$(FIPSLIB_D)${o}_umoddi3.o";
+
 if ($fips && !$shlib)
        {
        $crypto="libeayfips32";
@@ -136,7 +138,7 @@ sub do_lib_rule
 #              $ret.="\t\$(RM) \$(O_$Name)\n";
                $ret.="$target: $objs\n";
                $ex =' advapi32.lib';
-               $ex.=" \$(FIPSLIB_D)${o}_chkstk.o" if $fips && !$fipscanisterbuild && $target =~ /O_CRYPTO/;
+               $ex.= $mwex if $fips && !$fipscanisterbuild && $target =~ /O_CRYPTO/;
                $ret.="\t\$(MKLIB) $lfile$target @<<\n  $objs $ex\n<<\n";
                }
        else
@@ -146,7 +148,7 @@ sub do_lib_rule
                $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/;
                if ($fips && $target =~ /O_CRYPTO/)
                        {
-                       $ex.=" \$(FIPSLIB_D)${o}_chkstk.o" unless $fipscanisterbuild;
+                       $ex.= $mwex unless $fipscanisterbuild;
                        $ret.="$target: $objs \$(PREMAIN_DSO_EXE)\n";
                        $ret.="\tSET FIPS_LINK=\$(LINK)\n";
                        $ret.="\tSET FIPS_CC=\$(CC)\n";
@@ -179,7 +181,7 @@ sub do_link_rule
        if ($standalone)
                {
                $ret.="  \$(LINK) \$(LFLAGS) $efile$target @<<\n\t";
-               $ret.="\$(FIPSLIB_D)${o}_chkstk.o " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild);
+               $ret.= "$mwex advapi32.lib " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild);
                $ret.="$files $libs\n<<\n";
                }
        elsif ($fips && !$shlib)