summaryrefslogtreecommitdiffstats
path: root/Modules/FindOpenSSL.cmake
diff options
context:
space:
mode:
authorMathieu Malaterre <mathieu.malaterre@gmail.com>2009-11-19 09:02:36 (GMT)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>2009-11-19 09:02:36 (GMT)
commit7c9e5ba37fba0e059642e0cf5ced61b15af20623 (patch)
tree417102a61c69d5e34399b34b2a471243ceb25a3c /Modules/FindOpenSSL.cmake
parent59334dc8a435f4212237a54c078033b16141f1f2 (diff)
downloadCMake-7c9e5ba37fba0e059642e0cf5ced61b15af20623.zip
CMake-7c9e5ba37fba0e059642e0cf5ced61b15af20623.tar.gz
CMake-7c9e5ba37fba0e059642e0cf5ced61b15af20623.tar.bz2
Fix FindOpenSSL on mingw. This has been reported to be working by ctrlaltca libero.it on cmake mailing list.
Diffstat (limited to 'Modules/FindOpenSSL.cmake')
-rw-r--r--Modules/FindOpenSSL.cmake133
1 files changed, 70 insertions, 63 deletions
diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake
index 95b23e1..b056020 100644
--- a/Modules/FindOpenSSL.cmake
+++ b/Modules/FindOpenSSL.cmake
@@ -20,79 +20,86 @@
# (To distributed this file outside of CMake, substitute the full
# License text for the above reference.)
-IF(OPENSSL_LIBRARIES)
- SET(OpenSSL_FIND_QUIETLY TRUE)
-ENDIF(OPENSSL_LIBRARIES)
-
-IF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
- SET(LIB_FOUND 1)
-ENDIF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
-
# 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(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(WIN32 AND NOT CYGWIN)
+ # MINGW should go here too
+ IF(MSVC)
+ # /MD and /MDd are the standard values - if someone 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
+ # TODO: handle /MT and static lib
+ # In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
+ # * MD for dynamic-release
+ # * MDd for dynamic-debug
+ # * MT for static-release
+ # * MTd for static-debug
- IF(MSVC_IDE)
- IF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
- 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")
- ENDIF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
- 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} ${LIB_EAY_DEBUG})
- ELSE(CMAKE_BUILD_TYPE_TOLOWER MATCHES debug)
- 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)
+ # Implementation details:
+ # We are using the libraries located in the VC subdir instead of the parent directory eventhough :
+ # libeay32MD.lib is identical to ../libeay32.lib, and
+ # ssleay32MD.lib is identical to ../ssleay32.lib
+ 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 ssleay32 ssl
+ 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 ssleay32 ssl
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/VC"
+ )
+ if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
+ set( OPENSSL_LIBRARIES
+ optimized ${SSL_EAY_RELEASE} ${LIB_EAY_RELEASE}
+ debug ${SSL_EAY_DEBUG} ${LIB_EAY_DEBUG}
+ )
+ else()
+ set( OPENSSL_LIBRARIES ${SSL_EAY_RELEASE} ${LIB_EAY_RELEASE} )
+ endif()
+ MARK_AS_ADVANCED(SSL_EAY_DEBUG SSL_EAY_RELEASE)
+ MARK_AS_ADVANCED(LIB_EAY_DEBUG LIB_EAY_RELEASE)
+ ELSEIF(MINGW)
+ # same player, for MingW
+ FIND_LIBRARY(LIB_EAY NAMES libeay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/MinGW"
+ )
+ FIND_LIBRARY(SSL_EAY NAMES ssleay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib/MinGW"
+ )
+ MARK_AS_ADVANCED(SSL_EAY LIB_EAY)
+ set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
+ ELSE(MSVC)
+ # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
+ FIND_LIBRARY(LIB_EAY NAMES libeay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib"
+ )
+ FIND_LIBRARY(SSL_EAY NAMES ssleay32
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]/lib"
+ )
+ MARK_AS_ADVANCED(SSL_EAY LIB_EAY)
+ set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
+ ENDIF(MSVC)
+ELSE(WIN32 AND NOT CYGWIN)
- 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)
+ 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})
+ SET(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES})
-ENDIF(WIN32 AND MSVC)
+ENDIF(WIN32 AND NOT CYGWIN)
-IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
- SET(OPENSSL_FOUND TRUE)
-ELSE(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
- SET(OPENSSL_FOUND FALSE)
-ENDIF (OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
-
-IF (OPENSSL_FOUND)
- IF (NOT OpenSSL_FIND_QUIETLY)
- MESSAGE(STATUS "Found OpenSSL: ${OPENSSL_LIBRARIES}")
- ENDIF (NOT OpenSSL_FIND_QUIETLY)
-ELSE (OPENSSL_FOUND)
- IF (OpenSSL_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could NOT find OpenSSL")
- ENDIF (OpenSSL_FIND_REQUIRED)
-ENDIF (OPENSSL_FOUND)
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(OpenSSL DEFAULT_MSG
+ OPENSSL_LIBRARIES
+ OPENSSL_INCLUDE_DIR
+)
MARK_AS_ADVANCED(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)