Hello,
An update.
1. The issue with OPENSSL_IMPLEMENT_GLOBAL is gone now.
2. Merged with Roumen Petrov's patch:
http://rt.openssl.org/Ticket/Display.html?id=1552
Except of not postfix engine dlls with eay32.
Best Regards,
Alon Bar-Lev.
---
diff -urNp openssl-SNAP-20070901/Configure
openssl-SNAP-20070901.mingw32-2/Configure
--- openssl-SNAP-20070901/Configure 2007-08-30 12:00:13.000000000 +0300
+++ openssl-SNAP-20070901.mingw32-2/Configure 2007-09-01 19:36:32.000000000
+0300
@@ -481,7 +481,7 @@ my %table=(
"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX
EXPORT_VAR_AS_FN:${no_asm}:win32",
# MinGW
-"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486
-Wall:::MINGW32:-lws2_32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}
EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL
-DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a",
+"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486
-Wall:::MINGW32:-lws2_32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}
EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL
-DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
# UWIN
"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des}
${x86_gcc_opts}:${no_asm}:win32",
@@ -1169,13 +1169,16 @@ if (!$no_shared)
if (!$IsMK1MF)
{
+ # add {no-}static-engine to options to allow mkdef.pl to work without
extra arguments
if ($no_shared)
{
$openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
+ $options.=" static-engine";
}
else
{
$openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
+ $options.=" no-static-engine";
}
}
diff -urNp openssl-SNAP-20070901/engines/ccgost/Makefile
openssl-SNAP-20070901.mingw32-2/engines/ccgost/Makefile
--- openssl-SNAP-20070901/engines/ccgost/Makefile 2007-05-18
19:02:28.000000000 +0300
+++ openssl-SNAP-20070901.mingw32-2/engines/ccgost/Makefile 2007-09-01
19:48:02.000000000 +0300
@@ -44,20 +44,24 @@ install:
if [ -n "$(SHARED_LIBS)" ]; then \
set -e; \
echo installing $(LIBNAME); \
+ l=${LIBNAME}; \
if [ "$(PLATFORM)" != "Cygwin" ]; then \
+ pfx=lib; \
+ sfx="so"; \
case "$(CFLAGS)" in \
*DSO_BEOS*) sfx="so";; \
*DSO_DLFCN*) sfx="so";; \
*DSO_DL*) sfx="sl";; \
+ *DSO_WIN32*) sfx="dll"; pfx=;; \
*) sfx="bad";; \
esac; \
- cp lib$(LIBNAME).$$sfx
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$(LIBNAME).$$sfx.new; \
else \
+ pfx="cyg"; \
sfx="so"; \
- cp cyg$(LIBNAME).dll
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$(LIBNAME).$$sfx.new; \
fi; \
- chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$(LIBNAME).$$sfx.new; \
- mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$(LIBNAME).$$sfx.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$(LIBNAME).$$sfx; \
+ cp $$pfx$$l.$$sfx
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new; \
+ chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new; \
+ mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx; \
fi
links:
diff -urNp openssl-SNAP-20070901/engines/Makefile
openssl-SNAP-20070901.mingw32-2/engines/Makefile
--- openssl-SNAP-20070901/engines/Makefile 2007-05-17 21:01:28.000000000
+0300
+++ openssl-SNAP-20070901.mingw32-2/engines/Makefile 2007-09-01
19:47:39.000000000 +0300
@@ -106,19 +106,21 @@ install:
for l in $(LIBNAMES); do \
( echo installing $$l; \
if [ "$(PLATFORM)" != "Cygwin" ]; then \
+ pfx=lib; \
case "$(CFLAGS)" in \
*DSO_BEOS*) sfx="so";; \
*DSO_DLFCN*) sfx="so";; \
*DSO_DL*) sfx="sl";; \
+ *DSO_WIN32*) sfx="dll"; pfx=;; \
*) sfx="bad";; \
esac; \
- cp lib$$l.$$sfx
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
else \
+ pfx="cyg"; \
sfx="so"; \
- cp cyg$$l.dll
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
fi; \
- chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new; \
- mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/lib$$l.$$sfx ); \
+ cp $$pfx$$l.$$sfx
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new; \
+ chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new; \
+ mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines/$$pfx$$l.$$sfx ); \
done; \
fi
@target=install; $(RECURSIVE_MAKE)
diff -urNp openssl-SNAP-20070901/Makefile.org
openssl-SNAP-20070901.mingw32-2/Makefile.org
--- openssl-SNAP-20070901/Makefile.org 2007-08-29 01:00:18.000000000 +0300
+++ openssl-SNAP-20070901.mingw32-2/Makefile.org 2007-09-01
19:36:32.000000000 +0300
@@ -279,6 +279,8 @@ clean-shared:
( set -x; rm -f lib$$i$(SHLIB_EXT) ); \
if [ "$(PLATFORM)" = "Cygwin" ]; then \
( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a
); \
+ elif [ "$(PLATFORM)" = "mingw" ]; then \
+ ( set -x; rm -f $$i32$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a
); \
fi; \
done
@@ -516,19 +518,37 @@ install_sw:
do \
if [ -f "$$i" -o -f "$$i.a" ]; then \
( echo installing $$i; \
- if [ "$(PLATFORM)" != "Cygwin" ]; then \
+ if [ "$(PLATFORM)" = "Cygwin" ]; then \
+ c=`echo $$i | sed
's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
+ cp $$c
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
+ chmod 755
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
+ mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
cp $$i
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+ chmod 644
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
- else \
- c=`echo $$i | sed
's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
+ elif [ "$(PLATFORM)" = "mingw" ]; then \
+ c=`echo $$i | sed
's/^lib\(.*\)\.dll\.a/\132.dll/'`; \
cp $$c
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
chmod 755
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
cp $$i
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
chmod 644
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+ else \
+ cp $$i
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+ chmod 555
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+ mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
fi ); \
+ if expr $(PLATFORM) : 'mingw' > /dev/null; then
\
+ ( case $$i in \
+ *crypto*) i=libeay32.dll;; \
+ *ssl*) i=ssleay32.dll;; \
+ esac; \
+ echo installing $$i; \
+ cp $$i
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
+ chmod 755
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
+ mv -f
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new
$(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
+ fi; \
fi; \
done; \
( here="`pwd`"; \
diff -urNp openssl-SNAP-20070901/Makefile.shared
openssl-SNAP-20070901.mingw32-2/Makefile.shared
--- openssl-SNAP-20070901/Makefile.shared 2007-08-26 18:00:10.000000000
+0300
+++ openssl-SNAP-20070901.mingw32-2/Makefile.shared 2007-09-01
19:36:32.000000000 +0300
@@ -248,16 +248,21 @@ link_o.cygwin:
INHIBIT_SYMLINKS=yes; \
SHLIB=cyg$(LIBNAME); \
base=-Wl,--enable-auto-image-base; \
+ deffile=; \
if expr $(PLATFORM) : 'mingw' > /dev/null; then \
- SHLIB=$(LIBNAME); base=; \
+ SHLIB=$(LIBNAME); base=; \
+ if test -f $(LIBNAME).def; then \
+ deffile=$(LIBNAME).def; \
+ fi; \
fi; \
SHLIB_SUFFIX=.dll; \
LIBVERSION="$(LIBVERSION)"; \
SHLIB_SOVER=${LIBVERSION:+"-$(LIBVERSION)"}; \
ALLSYMSFLAGS='-Wl,--whole-archive'; \
NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
- SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base
-Wl,-s,-Bsymbolic"; \
+ SHAREDFLAGS="$(CFLAGS) $(SHARED_LDFLAGS) -shared $$base $$deffile
-Wl,-s,-Bsymbolic"; \
$(LINK_SO_O)
+#for mingw target if def-file is in use dll-name should match library-name
link_a.cygwin:
@ $(CALC_VERSIONS); \
INHIBIT_SYMLINKS=yes; \
@@ -265,9 +270,13 @@ link_a.cygwin:
dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; extras=; \
base=-Wl,--enable-auto-image-base; \
if expr $(PLATFORM) : 'mingw' > /dev/null; then \
- SHLIB=$(LIBNAME); SHLIB_SOVER=32; \
+ case $(LIBNAME) in \
+ crypto) SHLIB=libeay;; \
+ ssl) SHLIB=ssleay;; \
+ esac; \
+ SHLIB_SOVER=32; \
extras="$(LIBNAME).def"; \
- $(PERL) util/mkdef.pl 32 $(LIBNAME) > $$extras; \
+ $(PERL) util/mkdef.pl 32 $$SHLIB > $$extras; \
base=; [ $(LIBNAME) = "crypto" ] &&
base=-Wl,--image-base,0x63000000; \
fi; \
dll_name=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
diff -urNp openssl-SNAP-20070901/ms/mingw32.bat
openssl-SNAP-20070901.mingw32-2/ms/mingw32.bat
--- openssl-SNAP-20070901/ms/mingw32.bat 2003-02-22 21:15:49.000000000
+0200
+++ openssl-SNAP-20070901.mingw32-2/ms/mingw32.bat 2007-09-01
19:36:32.000000000 +0300
@@ -79,7 +79,7 @@ mingw32-make -f ms/mingw32a.mak
if errorlevel 1 goto end
echo Generating the DLLs and input libraries
-dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def
ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32
+dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def
ms/libeay32.def out/libcrypto.a -lws2_32 -lgdi32
if errorlevel 1 goto end
dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def
ms/ssleay32.def out/libssl.a out/libeay32.a
if errorlevel 1 goto end
diff -urNp openssl-SNAP-20070901/ms/mw.bat
openssl-SNAP-20070901.mingw32-2/ms/mw.bat
--- openssl-SNAP-20070901/ms/mw.bat 2003-02-22 21:15:49.000000000 +0200
+++ openssl-SNAP-20070901.mingw32-2/ms/mw.bat 2007-09-01 19:36:32.000000000
+0300
@@ -15,7 +15,7 @@ make -f ms/mingw32.mak
if errorlevel 1 goto end
@rem Generate the DLLs and input libraries
-dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def
ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32
+dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def
ms/libeay32.def out/libcrypto.a -lws2_32 -lgdi32
if errorlevel 1 goto end
dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def
ms/ssleay32.def out/libssl.a out/libeay32.a
if errorlevel 1 goto end
diff -urNp openssl-SNAP-20070901/shlib/win32.bat
openssl-SNAP-20070901.mingw32-2/shlib/win32.bat
--- openssl-SNAP-20070901/shlib/win32.bat 1998-12-21 12:52:46.000000000
+0200
+++ openssl-SNAP-20070901.mingw32-2/shlib/win32.bat 2007-09-01
19:36:32.000000000 +0300
@@ -14,5 +14,5 @@ cl /Focrypto.obj -DWIN32 %OPTIONS% -c cr
cl /Fossl.obj -DWIN32 %OPTIONS% -c ssl\ssl.c
cl /Foeay.obj -DWIN32 %OPTIONS% -c apps\eay.c
-cl /Fessleay.exe %OPTIONS% eay.obj ssl.obj crypto.obj
crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj
crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib wsock32.lib
+cl /Fessleay.exe %OPTIONS% eay.obj ssl.obj crypto.obj
crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj
crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib ws2_32.lib
diff -urNp openssl-SNAP-20070901/shlib/win32dll.bat
openssl-SNAP-20070901.mingw32-2/shlib/win32dll.bat
--- openssl-SNAP-20070901/shlib/win32dll.bat 1998-12-21 12:52:46.000000000
+0200
+++ openssl-SNAP-20070901.mingw32-2/shlib/win32dll.bat 2007-09-01
19:36:32.000000000 +0300
@@ -5,9 +5,9 @@ set OPTIONS2=/W3 /WX /Ox /Gf /nologo
set OPTIONS=%OPTIONS1% %OPTIONS2%
-cl /Felibeay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\libeay32.def
crypto\crypto.c crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj
crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib
wsock32.lib
+cl /Felibeay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\libeay32.def
crypto\crypto.c crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj
crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib
ws2_32.lib
cl /Fessleay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\ssleay32.def ssl\ssl.c
libeay32.lib
-cl /Fessleay.exe /MD -DWIN32 %OPTIONS% apps\eay.c ssleay32.lib libeay32.lib
user32.lib wsock32.lib
+cl /Fessleay.exe /MD -DWIN32 %OPTIONS% apps\eay.c ssleay32.lib libeay32.lib
user32.lib ws2_32.lib
diff -urNp openssl-SNAP-20070901/util/mkerr.pl
openssl-SNAP-20070901.mingw32-2/util/mkerr.pl
--- openssl-SNAP-20070901/util/mkerr.pl 2007-04-05 21:01:50.000000000 +0300
+++ openssl-SNAP-20070901.mingw32-2/util/mkerr.pl 2007-09-01
19:36:32.000000000 +0300
@@ -377,6 +377,10 @@ foreach $lib (keys %csrc)
"#ifndef HEADER_${lib}_ERR_H\n",
"#define HEADER_${lib}_ERR_H\n",
"\n",
+"#ifdef __cplusplus\n",
+"extern \"C\" {\n",
+"#endif\n",
+"\n",
"/* BEGIN ERROR CODES */\n";
}
open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n";
diff -urNp openssl-SNAP-20070901/util/pl/BC-32.pl
openssl-SNAP-20070901.mingw32-2/util/pl/BC-32.pl
--- openssl-SNAP-20070901/util/pl/BC-32.pl 2005-09-20 11:00:28.000000000
+0300
+++ openssl-SNAP-20070901.mingw32-2/util/pl/BC-32.pl 2007-09-01
19:36:32.000000000 +0300
@@ -117,7 +117,7 @@ ___
else
{
local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
- $ex.=' wsock32.lib gdi32.lib';
+ $ex.=' ws2_32.lib gdi32.lib';
$ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def
@<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
}
$ret.="\n";
diff -urNp openssl-SNAP-20070901/util/pl/Mingw32.pl
openssl-SNAP-20070901.mingw32-2/util/pl/Mingw32.pl
--- openssl-SNAP-20070901/util/pl/Mingw32.pl 2003-06-26 15:00:14.000000000
+0300
+++ openssl-SNAP-20070901.mingw32-2/util/pl/Mingw32.pl 2007-09-01
19:36:32.000000000 +0300
@@ -55,7 +55,7 @@ $link='${CC}';
$lflags='${CFLAGS}';
$efile='-o ';
$exep='';
-$ex_libs="-lwsock32 -lgdi32";
+$ex_libs="-lws2_32 -lgdi32";
# static library stuff
$mklib='ar r';
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]