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

CHANGES
util/mk1mf.pl

diff --git a/CHANGES b/CHANGES
index 3ebb5b28c8fb8dd45fa188c5ff20ddd9b3d6d64e..5ee3150c04baf255e761f015b269337892c91517 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -24,7 +24,9 @@
 
  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  [01 Jun 2010]
 
index 280e9de1ad180d85067fe15728799b83abec72ff..89842e525114b089daf190ed8861f359468df023 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;