On 2006.10.23 at 13:35:39 +0400, Victor B. Wagner wrote:

> I've tested current CVS state of OpenSSL with mingw32-cross compiler
> and found out following:
> 
> 1. Everything compiles without error
> 2. make rehash is omitted during build
> 
> When testing on real Win32 platform with MSYS installed
> 
> 1. make rehash is omitted again, but shouldn't.
> 2. attempt to start very first test (destest.exe) causes dialog window
> to popup saying "Application cannot start becouse crypto32.dll is not
> found". Just renaming created dlls solves the problem.
> This is quite explainable, because build creates
> crypto-0.9.8.dll, but def file contains section
> 
> LIBRARY    crypto32
> 
> So, we have either to create crypto32.dll and ssl32 dll instead of
> crypto-0.9.8.dll and ssl-0.9.8.dll, or modify mkdef.pl so it would put
> real dll names into the LIBRARY section of .def file.
> Note that if dll name contain hyphen or dots, it should be quoted and
> include extension.
> 
> I.e. section should look like
> 
> LIBRARY   "crypto-0.9.8.dll"
> 
> Probably, if we are going to maintain binary compatibility with MSVC
> build, changing dll name to crypto32.dll and ssl32.dll is better.

Now, I'm developed a patch which solves this problem. With this patch
current CVS state of OpenSSL compiles cleanly with either cross-compiler
and native Mingw32 compiler and make test runs.

Rationale of the patch - make names of created DLLs same that
it is written in the .def file by util/mkdef.pl


Index: Makefile.shared
===================================================================
RCS file: /cvs-openssl/openssl/Makefile.shared,v
retrieving revision 1.59
diff -u -r1.59 Makefile.shared
--- Makefile.shared     23 Oct 2006 07:30:18 -0000      1.59
+++ Makefile.shared     23 Oct 2006 11:00:18 -0000
@@ -260,14 +260,15 @@
 link_a.cygwin:
        @ $(CALC_VERSIONS); \
        INHIBIT_SYMLINKS=yes; \
+       SHLIB_SOVER=-$(LIBVERSION); \
        SHLIB=cyg$(LIBNAME); def=; \
        if expr $(PLATFORM) : 'mingw' > /dev/null; then \
                SHLIB=$(LIBNAME); \
                def="$(LIBNAME).def"; \
+               SHLIB_SOVER=32; \
                $(PERL) util/mkdef.pl 32 $(LIBNAME) > $$def; \
        fi; \
        SHLIB_SUFFIX=.dll; \
-       SHLIB_SOVER=-$(LIBVERSION); \
        ALLSYMSFLAGS='-Wl,--whole-archive'; \
        NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
        base=;  [ $(LIBNAME) = "crypto" ] && base=-Wl,--image-base,0x63000000; \
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to