]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: rework NSS and SSL
authorMatt Benjamin <mbenjamin@redhat.com>
Mon, 20 Jun 2016 21:21:53 +0000 (17:21 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Wed, 29 Jun 2016 16:36:46 +0000 (12:36 -0400)
The cmake build should select NSS or CryptoPP consistently with
current autoconf logic, as used in our RHEL builds (-DWITH_NSS),
and the SSL linkage must match (for NSS, -lssl3).

With this change, there is no direct linkage with libssl when NSS
is selected (I still see indirect linkage via libcurl, in turn
via libssh2, looking into that).

With guidance from upstream and downstream, NSS builds are now
selected by default.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
CMakeLists.txt
src/CMakeLists.txt

index e66e7bce082e887ce37e020004a67c95d99b0fb0..7da12959b0b41722b57fab4f9a569cb3c69ff411 100644 (file)
@@ -177,16 +177,6 @@ set(HAVE_OPENLDAP ${OPENLDAP_FOUND})
 message(STATUS "${OPENLDAP_LIBS}")
 endif(${WITH_OPENLDAP})
 
-option(WITH_OPENSSL "OPENSSL is here" ON)
-if(${WITH_OPENSSL})
-find_package(OpenSSL REQUIRED)
-set(HAVE_OPENSSL ON)
-#message(STATUS "${OPENSSL_LIBRARIES}")
-else(${WITH_OPENSSL})
-set(HAVE_OPENSSL OFF)
-set(OPENSSL_LIBRARIES)
-endif(${WITH_OPENSSL})
-
 option(WITH_FUSE "Fuse is here" ON)
 if(${WITH_FUSE})
 find_package(fuse)
@@ -286,18 +276,30 @@ find_package(libuuid REQUIRED)
 find_package(libcurl REQUIRED)
 
 # nss or cryptopp?
-#  (dropped cryptopp support for now, feel free to add it back -sage)
-find_package(NSS REQUIRED)
-if(NSS_FOUND)
-       set(USE_NSS 1)
-       find_package(NSPR)
-       if(NSPR_FOUND)
-               set(CRYPTO_LIBS ${NSS_LIBRARIES} ${NSPR_LIBRARIES})
-               #MESSAGE(STATUS "${CRYPTO_LIBS}")
-               #MESSAGE(STATUS "${NSS_INCLUDE_DIR} ${NSPR_INCLUDE_DIR}")
-       endif(NSPR_FOUND)
-endif(NSS_FOUND)
-
+option(WITH_NSS "Use NSS crypto and SSL implementations" ON)
+if (${WITH_NSS})
+  find_package(NSS REQUIRED)
+    set(USE_NSS 1)
+    find_package(NSPR REQUIRED)
+    set(CRYPTO_LIBS ${NSS_LIBRARIES} ${NSPR_LIBRARIES})
+else ()
+  find_package(cryptopp REQUIRED)
+    set(CRYPTO_LIBS ${CRYPTOPP_LIBRARIES})
+    set(USE_CRYPTOPP 1)
+endif (${WITH_NSS})
+
+option(WITH_SSL "SSL build selected" ON)
+if (${USE_NSS})
+  #nss
+  set(SSL_LIBRARIES ${NSS_LIBRARIES})
+  message(STATUS "SSL with NSS selected (Libs: ${SSL_LIBRARIES})")
+else (${USE_NSS})
+  #openssl
+  find_package(OpenSSL REQUIRED)
+  set(HAVE_OPENSSL ON)
+  set(SSL_LIBRARIES ${OPENSSL_LIBRARIES})
+  message(STATUS "SSL with OpenSSL selected (Libs: ${SSL_LIBRARIES})")
+endif(${USE_NSS})
 
 option(WITH_XIO "Enable XIO messaging" OFF)
 if(WITH_XIO)
index 6a9e65af3697a2e0d03d014008394ee926751be7..48cdf981fb5b2e560e520ff0117e3edb8b0ae42d 100644 (file)
@@ -1417,13 +1417,13 @@ if(${WITH_RADOSGW})
   add_library(civetweb_common_objs OBJECT ${civetweb_common_files})
   target_include_directories(civetweb_common_objs PUBLIC
        "${CMAKE_SOURCE_DIR}/src/civetweb/include")
-  if(HAVE_OPENSSL)
-  set_property(TARGET civetweb_common_objs
-              APPEND PROPERTY COMPILE_DEFINITIONS NO_SSL_DL=1)
-  target_include_directories(civetweb_common_objs PUBLIC
-       "${OPENSSL_INCLUDE_DIR}")
-  else(HAVE_OPENSSL)
-  endif(HAVE_OPENSSL)
+  if(HAVE_SSL)
+    set_property(TARGET civetweb_common_objs
+      APPEND PROPERTY COMPILE_DEFINITIONS NO_SSL_DL=1)
+    target_include_directories(civetweb_common_objs PUBLIC
+      "${SSL_INCLUDE_DIR}")
+  else(HAVE_SSL)
+  endif(HAVE_SSL)
 
   add_library(rgw_a STATIC ${rgw_a_srcs})
   target_link_libraries(rgw_a librados cls_rgw_client cls_refcount_client
@@ -1482,8 +1482,8 @@ if(${WITH_RADOSGW})
     cls_rgw_client cls_lock_client cls_refcount_client
     cls_log_client cls_statelog_client cls_timeindex_client
     cls_version_client cls_replica_log_client cls_user_client
-    curl expat global fcgi resolv ${OPENSSL_LIBRARIES} ${BLKID_LIBRARIES} ${OPENLDAP_LIBS}
-    ${ALLOC_LIBS})
+    curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES}
+    ${OPENLDAP_LIBS} ${ALLOC_LIBS})
   # radosgw depends on cls libraries at runtime, but not as link dependencies
   add_dependencies(radosgw cls_rgw cls_lock cls_refcount
     cls_log cls_statelog cls_timeindex
@@ -1495,7 +1495,7 @@ if(${WITH_RADOSGW})
     cls_rgw_client cls_lock_client cls_refcount_client
     cls_log_client cls_statelog_client cls_timeindex_client
     cls_version_client cls_replica_log_client cls_user_client
-    curl expat global fcgi resolv ${OPENSSL_LIBRARIES} ${BLKID_LIBRARIES})
+    curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES})
 
   install(TARGETS radosgw-admin DESTINATION bin)