Fix WIN32 build system to correctly link ENGINE DLLs contained in a
authorDr. Stephen Henson <steve@openssl.org>
Sat, 24 Jul 2010 17:52:43 +0000 (17:52 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Sat, 24 Jul 2010 17:52:43 +0000 (17:52 +0000)
directory: currently the GOST ENGINE is the only case.

CHANGES
util/mk1mf.pl

diff --git a/CHANGES b/CHANGES
index 7005f1c..745fb8c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
        Add command line options to s_client/s_server.
      [Steve Henson]
 
+ Changes between 1.0.0a and 1.0.0b  [xx XXX xxxx]
+
+
+  *) Fix WIN32 build system to correctly link an ENGINE directory into
+     a DLL. 
+     [Steve Henson]
+
  Changes between 1.0.0 and 1.0.0a  [xx XXX xxxx]
   
   *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover 
index 280e9de..89842e5 100755 (executable)
@@ -13,6 +13,7 @@ $banner="\t\@echo Building OpenSSL";
 
 my $no_static_engine = 1;
 my $engines = "";
+my $otherlibs = "";
 local $zlib_opt = 0;   # 0 = no zlib, 1 = static, 2 = dynamic
 local $zlib_lib = "";
 local $perl_asm = 0;   # 1 to autobuild asm files from perl scripts
@@ -356,6 +357,12 @@ for (;;)
                $lib=$val;
                $lib =~ s/^.*\/([^\/]+)$/$1/;
                }
+       if ($key eq "LIBNAME" && $no_static_engine)
+               {
+               $lib=$val;
+               $lib =~ s/^.*\/([^\/]+)$/$1/;
+               $otherlibs .= " $lib";
+               }
 
        if ($key eq "EXHEADER")
                { $exheader.=&var_add($dir,$val, 1); }
@@ -658,7 +665,7 @@ foreach (split(/\s+/,$test))
        $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
        }
 
-$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp);
+$defs.=&do_defs("E_SHLIB",$engines . $otherlibs,"\$(ENG_D)",$shlibp);
 
 foreach (split(/\s+/,$engines))
        {
@@ -671,6 +678,14 @@ foreach (split(/\s+/,$engines))
 $rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
 $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
 
+foreach (split(/\s+/,$otherlibs))
+       {
+       my $uc = $_;
+       $uc =~ tr /a-z/A-Z/;    
+       $rules.= &do_lib_rule("\$(${uc}OBJ)","\$(ENG_D)$o$_$shlibp", "", $shlib, "");
+
+       }
+
 $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
 
 print $defs;