MantisBT - CMake
View Issue Details
0008971CMakeModulespublic2009-05-06 05:042009-10-30 11:35
Mathieu Malaterre 
Mathieu Malaterre 
normalfeaturehave not tried
closedfixed 
 
 
0008971: FindOpenSSL improvement
I believe the FindOpenSSL.cmake script is deficient on Win32 system. It is missing explicit linking to libeay (only ssleay is being linked).

Eg.

http://gdcm.svn.sf.net/viewvc/gdcm/trunk/CMake/FindOpenSSL2.cmake?view=markup [^]

which is compatible with the official binaries OpenSSL from: http://www.slproweb.com/products/Win32OpenSSL.html [^]


Other people have done:

FindOpenSSLInternal.cmake
http://www.koders.com/noncode/fid7F170F9D9B4EA3A3E6B08A69DD1607D866CB74BF.aspx [^]

which add also support for mingw compiler.
No tags attached.
Issue History
2009-05-06 05:04Mathieu MalaterreNew Issue
2009-09-01 05:00Mathieu MalaterreStatusnew => assigned
2009-09-01 05:00Mathieu MalaterreAssigned To => Alex Neundorf
2009-10-30 11:27Mathieu MalaterreAssigned ToAlex Neundorf => Mathieu Malaterre
2009-10-30 11:32Mathieu MalaterreNote Added: 0018297
2009-10-30 11:35Mathieu MalaterreNote Added: 0018298
2009-10-30 11:35Mathieu MalaterreStatusassigned => closed
2009-10-30 11:35Mathieu MalaterreResolutionopen => fixed

Notes
(0018297)
Mathieu Malaterre   
2009-10-30 11:32   
Here is my proposed changes:

$ cvs di FindOpenSSL.cmake
Index: FindOpenSSL.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindOpenSSL.cmake,v
retrieving revision 1.4
diff -u -r1.4 FindOpenSSL.cmake
--- FindOpenSSL.cmake 28 Sep 2009 15:45:38 -0000 1.4
+++ FindOpenSSL.cmake 30 Oct 2009 15:31:58 -0000
@@ -8,6 +8,7 @@
 #=============================================================================
 # Copyright 2006-2009 Kitware, Inc.
 # Copyright 2006 Alexander Neundorf <neundorf@kde.org>
+# Copyright 2009 Mathieu Malaterre <mathieu.malaterre@gmail.com>
 #
 # Distributed under the OSI-approved BSD License (the "License");
 # see accompanying file Copyright.txt for details.
@@ -27,19 +28,32 @@
    SET(LIB_FOUND 1)
 ENDIF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
 
-FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h )
+# http://www.slproweb.com/products/Win32OpenSSL.html [^]
+FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/include"
+)
 
 IF(WIN32 AND MSVC)
    # /MD and /MDd are the standard values - if somone wants to use
    # others, the libnames have to change here too
    # use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
 
- FIND_LIBRARY(SSL_EAY_DEBUG NAMES ssleay32MDd ssl ssleay32)
- FIND_LIBRARY(SSL_EAY_RELEASE NAMES ssleay32MD ssl ssleay32)
+ FIND_LIBRARY(LIB_EAY_DEBUG NAMES libeay32MDd libeay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/VC"
+ )
+ FIND_LIBRARY(LIB_EAY_RELEASE NAMES libeay32MD libeay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/VC"
+ )
+ FIND_LIBRARY(SSL_EAY_DEBUG NAMES ssleay32MDd ssl ssleay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/VC"
+ )
+ FIND_LIBRARY(SSL_EAY_RELEASE NAMES ssleay32MD ssl ssleay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/VC"
+ )
 
    IF(MSVC_IDE)
       IF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
- SET(OPENSSL_LIBRARIES optimized ${SSL_EAY_RELEASE} debug ${SSL_EAY_DEBUG})
+ SET(OPENSSL_LIBRARIES optimized ${SSL_EAY_RELEASE} ${LIB_EAY_RELEASE} debug ${SSL_EAY_DEBUG} ${LIB_EAY_DEBUG})
       ELSE(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
          SET(OPENSSL_LIBRARIES NOTFOUND)
          MESSAGE(STATUS "Could not find the debug and release version of openssl")
@@ -47,15 +61,20 @@
    ELSE(MSVC_IDE)
       STRING(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
       IF(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug)
- SET(OPENSSL_LIBRARIES ${SSL_EAY_DEBUG})
+ SET(OPENSSL_LIBRARIES ${SSL_EAY_DEBUG} ${LIB_EAY_DEBUG})
       ELSE(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug)
- SET(OPENSSL_LIBRARIES ${SSL_EAY_RELEASE})
+ SET(OPENSSL_LIBRARIES ${SSL_EAY_RELEASE} ${LIB_EAY_RELEASE})
       ENDIF(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug)
    ENDIF(MSVC_IDE)
    MARK_AS_ADVANCED(SSL_EAY_DEBUG SSL_EAY_RELEASE)
+ MARK_AS_ADVANCED(LIB_EAY_DEBUG LIB_EAY_RELEASE)
 ELSE(WIN32 AND MSVC)
 
- FIND_LIBRARY(OPENSSL_LIBRARIES NAMES ssl ssleay32 ssleay32MD )
+ FIND_LIBRARY(OPENSSL_SSL_LIBRARIES NAMES ssl ssleay32 ssleay32MD)
+ FIND_LIBRARY(OPENSSL_CRYPTO_LIBRARIES NAMES crypto)
+ MARK_AS_ADVANCED(OPENSSL_CRYPTO_LIBRARIES OPENSSL_SSL_LIBRARIES)
+
+ SET(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES})
 
 ENDIF(WIN32 AND MSVC)
(0018298)
Mathieu Malaterre   
2009-10-30 11:35   
$ cvs ci -m"FIX: BUG: 0008971 FindOpenSSL improvement. Teaches cmake to find openssl on win32. openssl comes with the crypto libs which are the important part of the openssl project." FindOpenSSL.cmake
Committer: Mathieu Malaterre <mathieu.malaterre@kitware.com>
/cvsroot/CMake/CMake/Modules/FindOpenSSL.cmake,v <-- FindOpenSSL.cmake
new revision: 1.5; previous revision: 1.4