aboutsummaryrefslogtreecommitdiff
path: root/cmake/macros
diff options
context:
space:
mode:
authorDerex <derex101@gmail.com>2011-01-06 12:34:30 -0700
committerrunningnak3d <runningnak3d@gmail.com>2011-01-06 12:34:30 -0700
commitd8b326f17ff57388a5e3e6a35e30a7f1cedfe2a7 (patch)
treeefdd6a8a99e244034a81001994c6c8f9b958c31f /cmake/macros
parentbc048ad2168a50d4953d31f8054266fb3335913a (diff)
Core/Buildsystem: Fix linking of SSL under Fedora Core 14
Diffstat (limited to 'cmake/macros')
-rw-r--r--cmake/macros/FindOpenSSL.cmake181
1 files changed, 108 insertions, 73 deletions
diff --git a/cmake/macros/FindOpenSSL.cmake b/cmake/macros/FindOpenSSL.cmake
index a2357af0742..826ae096e89 100644
--- a/cmake/macros/FindOpenSSL.cmake
+++ b/cmake/macros/FindOpenSSL.cmake
@@ -1,88 +1,123 @@
+# - Try to find the OpenSSL encryption library
+# Once done this will define
#
-# Find the OpenSSL client includes and library
-#
+# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
+#
+# Read-Only variables:
+# OPENSSL_FOUND - system has the OpenSSL library
+# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
+# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
+
+#=============================================================================
+# Copyright 2006-2009 Kitware, Inc.
+# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
+# Copyright 2009-2010 Mathieu Malaterre <mathieu.malaterre@gmail.com>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distributed this file outside of CMake, substitute the full
+# License text for the above reference.)
-# This module defines
-# OPENSSL_INCLUDE_DIR, where to find openssl.h
-# OPENSSL_LIBRARIES, the libraries to link against to connect to MySQL
-# OPENSSL_FOUND, if false, you cannot build anything that requires MySQL.
+# http://www.slproweb.com/products/Win32OpenSSL.html
+SET(_OPENSSL_ROOT_HINTS
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
+ )
+SET(_OPENSSL_ROOT_PATHS
+ "C:/OpenSSL/"
+ )
+FIND_PATH(OPENSSL_ROOT_DIR
+ NAMES include/openssl/ssl.h
+ HINTS ${_OPENSSL_ROOT_HINTS}
+ PATHS ${_OPENSSL_ROOT_PATHS}
+)
+MARK_AS_ADVANCED(OPENSSL_ROOT_DIR)
-# also defined, but not for general use are
-# OPENSSL_LIBRARY, where to find the MySQL library.
+# Re-use the previous path:
+FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
+ ${OPENSSL_ROOT_DIR}/include
+)
- set(OPENSSL_FOUND 0)
+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 )
- if(PLATFORM EQUAL 64)
- set(TMP_OPENSSL_INCLUDE_DIR
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/include"
+ # 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
+ ${OPENSSL_ROOT_DIR}/lib/VC
)
- set(TMP_OPENSSL_LIBRARIES
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;InstallLocation]/lib"
+ FIND_LIBRARY(LIB_EAY_RELEASE NAMES libeay32MD libeay32
+ ${OPENSSL_ROOT_DIR}/lib/VC
)
- else()
- set(TMP_OPENSSL_INCLUDE_DIR
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/include"
+ FIND_LIBRARY(SSL_EAY_DEBUG NAMES ssleay32MDd ssleay32 ssl
+ ${OPENSSL_ROOT_DIR}/lib/VC
)
- set(TMP_OPENSSL_LIBRARIES
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;InstallLocation]/lib"
+ FIND_LIBRARY(SSL_EAY_RELEASE NAMES ssleay32MD ssleay32 ssl
+ ${OPENSSL_ROOT_DIR}/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()
- 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
+ ${OPENSSL_ROOT_DIR}/lib/MinGW
+ )
+ FIND_LIBRARY(SSL_EAY NAMES ssleay32
+ ${OPENSSL_ROOT_DIR}/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
+ ${OPENSSL_ROOT_DIR}/lib
+ )
+ FIND_LIBRARY(SSL_EAY NAMES ssleay32
+ ${OPENSSL_ROOT_DIR}/lib
+ )
+ MARK_AS_ADVANCED(SSL_EAY LIB_EAY)
+ set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
+ ENDIF(MSVC)
+ELSE(WIN32 AND NOT CYGWIN)
- find_path(OPENSSL_INCLUDE_DIR
- NAMES
- openssl/ssl.h
- PATHS
- ${TMP_OPENSSL_INCLUDE_DIR}
- /usr/include
- /usr/include/openssl
- /usr/local/include
- /usr/local/include/openssl
- /usr/local/openssl/include
- DOC
- "Specify the directory containing openssl.h."
- )
+ 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_LIBRARIES
- NAMES
- ssleay32
- ssl
- PATHS
- ${TMP_OPENSSL_LIBRARIES}
- /usr/lib
- /usr/lib/ssl
- /usr/local/lib
- /usr/local/lib/ssl
- /usr/local/ssl/lib
- DOC "Specify the OpenSSL library here."
- )
+ SET(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES})
- if( WIN32 )
- find_library(OPENSSL_EXTRA_LIBRARIES
- NAMES
- libeay32
- PATHS
- ${TMP_OPENSSL_LIBRARIES}
- DOC
- "if more libraries are necessary to link in a OpenSSL client, specify them here."
- )
- endif( WIN32 )
+ENDIF(WIN32 AND NOT CYGWIN)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(OpenSSL DEFAULT_MSG
+ OPENSSL_LIBRARIES
+ OPENSSL_INCLUDE_DIR
+)
- if( OPENSSL_LIBRARIES )
- if( OPENSSL_INCLUDE_DIR )
- set( OPENSSL_FOUND 1 )
- message(STATUS "Found OpenSSL library: ${OPENSSL_LIBRARIES}")
- message(STATUS "Found OpenSSL headers: ${OPENSSL_INCLUDE_DIR}")
- else ( OPENSSL_INCLUDE_DIR )
- message(FATAL_ERROR "Could not find OpenSSL headers! Please install the development-headers")
- endif( OPENSSL_INCLUDE_DIR )
- else( OPENSSL_LIBRARIES )
- message(FATAL_ERROR "Could not find OpenSSL libraries! Please install the library before continuing")
- endif( OPENSSL_LIBRARIES )
+MARK_AS_ADVANCED(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
- mark_as_advanced( OPENSSL_FOUND OPENSSL_LIBRARIES OPENSSL_EXTRA_LIBRARIES OPENSSL_INCLUDE_DIR )