浏览代码

Merge topic 'FindOpenSSL-static-libs'

369a8cde FindOpenSSL: Optionally search only for static libraries
Brad King 10 年之前
父节点
当前提交
20b7e79d21
共有 2 个文件被更改,包括 35 次插入5 次删除
  1. 5 0
      Help/release/dev/FindOpenSSL-static-libs.rst
  2. 30 5
      Modules/FindOpenSSL.cmake

+ 5 - 0
Help/release/dev/FindOpenSSL-static-libs.rst

@@ -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.

+ 30 - 5
Modules/FindOpenSSL.cmake

@@ -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()