FindOpenSSL: Optionally search only for static libraries

Add an OPENSSL_USE_STATIC_LIBS option to enable it.  Adjust
CMAKE_FIND_LIBRARY_SUFFIXES to only look for .a and .lib files.  Also
adjust the search paths on Windows for installer locations of static
libraries.
This commit is contained in:
Thijs Wenker 2015-09-01 14:56:36 +02:00 committed by Brad King
parent 72c11e5902
commit 369a8cde37
2 changed files with 35 additions and 5 deletions

View File

@ -0,0 +1,5 @@
FindOpenSSL-static-libs
-----------------------
* The :module:`FindOpenSSL` module learned a new ``OPENSSL_USE_STATIC_LIBS``
option to search only for static libraries.

View File

@ -36,6 +36,7 @@
# ^^^^^
#
# Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
# Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
@ -57,6 +58,16 @@ if (UNIX)
pkg_check_modules(_OPENSSL QUIET openssl)
endif ()
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
if(OPENSSL_USE_STATIC_LIBS)
set(_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
endif()
endif()
if (WIN32)
# http://www.slproweb.com/products/Win32OpenSSL.html
set(_OPENSSL_ROOT_HINTS
@ -113,12 +124,21 @@ if(WIN32 AND NOT CYGWIN)
# 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
# enable OPENSSL_USE_STATIC_LIBS to use the static libs located in lib/VC/static
set(_OPENSSL_PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
if(OPENSSL_USE_STATIC_LIBS)
set(_OPENSSL_PATH_SUFFIXES
"lib"
"VC/static"
"lib/VC/static"
)
else()
set(_OPENSSL_PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
endif ()
find_library(LIB_EAY_DEBUG
NAMES
@ -414,3 +434,8 @@ if(OPENSSL_FOUND)
endif()
endif()
endif()
# Restore the original find library ordering
if(OPENSSL_USE_STATIC_LIBS)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
endif()