From 83e66809e9ce49611d064f0c7ddfe2b0d6e8a851 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Mon, 20 Jun 2016 17:21:53 -0400 Subject: [PATCH] cmake: rework NSS and SSL 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 --- CMakeLists.txt | 46 ++++++++++++++++++++++++---------------------- src/CMakeLists.txt | 20 ++++++++++---------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e66e7bce082..7da12959b0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6a9e65af369..48cdf981fb5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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) -- 2.39.5