Link fips utils against fipscanister.lib only except for dso builds.

Add --with-fipslibdir option to Configure.
This commit is contained in:
Dr. Stephen Henson
2007-07-20 22:23:11 +00:00
parent 0712210f03
commit 100868d1cf
4 changed files with 63 additions and 16 deletions

View File

@@ -4,6 +4,13 @@
Changes between 0.9.8e and 0.9.8f-fips [xx XXX xxxx]
*) Add option --with-fipslibdir to specify location of fipscanister.lib
and friends. When combined with fips build option fipscanister.lib is
not built but linked from the supplied directory. Always link fips
utilities against fiscanister.lib only except in fipsdso builds.
[Steve Henson]
*) Add SSE2 instruction support to WIN32 build. These will be compiled
by default and used if an appopriate CPU is detected. Some older versions
of NASM or MASM which don't support SSE2 will need to be updated.

View File

@@ -792,6 +792,14 @@ PROCESS_ARGS:
{
$withargs{"zlib-include"}="-I$1";
}
elsif (/^--with-fipslibdir=(.*)$/)
{
$fipslibdir="$1/";
}
elsif (/^--with-baseaddr=(.*)$/)
{
$baseaddr="$1";
}
else
{
print STDERR $usage;

View File

@@ -354,7 +354,11 @@ for (;;)
}
if ($key eq "FIPSLIBDIR")
{ $fipslibdir=$val;}
{
$fipslibdir=$val;
$fipslibdir =~ s/\/$//;
$fipslibdir =~ s/\//$o/g;
}
if ($key eq "BASEADDR")
{ $baseaddr=$val;}
@@ -403,14 +407,14 @@ if ($fips)
if ($fipscanisterbuild)
{
$fips_canister_path = "\$(LIB_D)${o}fipscanister.o" if $fips_canister_path eq "";
$fips_canister_path = "\$(LIB_D)${o}fipscanister.lib" if $fips_canister_path eq "";
$fips_premain_c_path = "\$(LIB_D)${o}fips_premain.c";
}
else
{
if ($fips_canister_path eq "")
{
$fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.o";
$fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.lib";
}
if ($fips_premain_c_path eq "")
@@ -463,7 +467,7 @@ if ($fips)
close IN;
}
fips_check_files($fipslibdir,
"fipscanister.o", "fipscanister.o.sha1",
"fipscanister.lib", "fipscanister.lib.sha1",
"fips_premain.c", "fips_premain.c.sha1");
}
}
@@ -876,17 +880,32 @@ foreach (split(/\s+/,$test))
{
my $t_libs;
$t=&bname($_);
if ($fipsdso && /fips-1.0/)
my $ltype;
# Check to see if test program is FIPS
if (/fips-1.0/)
{
$t_libs = "\$(L_FIPS)";
# If fipsdso link to libosslfips.dll
# otherwise perform static link to
# $(O_FIPSCANISTER)
if ($fipsdso)
{
$t_libs = "\$(L_FIPS)";
$ltype = 0;
}
else
{
$t_libs = "\$(O_FIPSCANISTER)";
$ltype = 2;
}
}
else
{
$t_libs = "\$(L_LIBS)";
$ltype = 0;
}
$tt="\$(OBJ_D)${o}$t${obj}";
$rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)");
$rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)", $ltype);
}
$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp);
@@ -940,13 +959,29 @@ if ($fips)
if ($fips)
{
$rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", "\$(OBJ_D)${o}fips_start$obj", "\$(FIPSOBJ)", "\$(OBJ_D)${o}fips_end$obj", "\$(FIPS_SHA1_EXE)", "") if $fipscanisterbuild;
if ($fipscanisterbuild)
{
$rules.= &do_rlink_rule("\$(O_FIPSCANISTER)",
"\$(OBJ_D)${o}fips_start$obj",
"\$(FIPSOBJ)",
"\$(OBJ_D)${o}fips_end$obj",
"\$(FIPS_SHA1_EXE)", "");
$rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
"\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj \$(SHA1_ASM_OBJ)",
"","", 1);
}
else
{
$rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
"\$(OBJ_D)${o}fips_standalone_sha1$obj \$(O_FIPSCANISTER)",
"","", 1);
}
$rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1);
$rules.=&do_link_rule("\$(FIPS_SHA1_EXE)","\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj \$(SHA1_ASM_OBJ)","","", 1);
}
$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)",0);
$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)", ($fips && !$shlib) ? 2 : 0);
print $defs;

View File

@@ -5,8 +5,6 @@
$ssl= "ssleay32";
my $mwex =" \$(FIPSLIB_D)${o}_chkstk.o \$(FIPSLIB_D)${o}_udivdi3.o \$(FIPSLIB_D)${o}_umoddi3.o";
if ($fips && !$shlib)
{
$crypto="libeayfips32";
@@ -291,7 +289,6 @@ sub do_lib_rule
# $ret.="\t\$(RM) \$(O_$Name)\n";
$ex =' ';
$ret.="$target: $objs\n";
$ex.= $mwex if $fips && !$fipscanisterbuild && $target =~ /O_CRYPTO/;
$ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
}
else
@@ -374,13 +371,13 @@ sub do_link_rule
$file =~ s/\//$o/g if $o ne '/';
$n=&bname($targer);
$ret.="$target: $files $dep_libs\n";
if ($standalone)
if ($standalone == 1)
{
$ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t";
$ret.= "$mwex advapi32.lib " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild);
$ret.="$files $libs\n<<\n";
}
elsif ($fips && !$shlib)
elsif ($standalone == 2)
{
$ret.="\tSET FIPS_LINK=\$(LINK)\n";
$ret.="\tSET FIPS_CC=\$(CC)\n";