From f6c29ba3dca0a958b2e090a682357349e4832dd1 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 24 Jul 2010 17:55:47 +0000 Subject: [PATCH] Fix WIN32 build system to correctly link ENGINE DLLs contained in a directory: currently the GOST ENGINE is the only case. --- CHANGES | 4 +++- util/mk1mf.pl | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 3ebb5b28c8..5ee3150c04 100644 --- 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] diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 280e9de1ad..89842e5251 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -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; -- 2.25.1