From: Kefu Chai Date: Mon, 29 May 2017 06:28:51 +0000 (+0800) Subject: cmake: rgw: do not link against boost in a wholesale X-Git-Tag: ses5-milestone6~9^2^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ba1ca1ce173234adb61335f6322b390ba483d0ff;p=ceph.git cmake: rgw: do not link against boost in a wholesale With the new Beast frontend, RGW now has a small Boost dependency [1] which was being addressed by statically (and unconditionally) linking *all* the Boost libraries. This patch ensures that only the necessary Boost components are linked. We use the target_link_libraries( ...) [2] syntax to ensure that the library dependencies are transitive: i.e. "when this target is linked into another target then the libraries linked to this target will appear on the link line for the other target too." [1] The boost/asio/spawn.hpp header used by rgw_asio_frontend.cc depends on boost::coroutine/boost::context [2] https://cmake.org/cmake/help/v3.3/command/target_link_libraries.html#libraries-for-both-a-target-and-its-dependents Signed-off-by: Nathan Cutler Signed-off-by: Kefu Chai --- diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt index c0e0c907b758b..ceb8621091286 100644 --- a/src/rgw/CMakeLists.txt +++ b/src/rgw/CMakeLists.txt @@ -146,7 +146,7 @@ target_compile_definitions(rgw_a PUBLIC BOOST_COROUTINES_NO_DEPRECATION_WARNING) target_link_libraries(rgw_a librados cls_lock_client cls_rgw_client cls_refcount_client cls_log_client cls_statelog_client cls_timeindex_client cls_version_client cls_replica_log_client cls_user_client ceph-common common_utf8 global - ${CURL_LIBRARIES} ${Boost_LIBRARIES} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${OPENLDAP_LIBRARIES} ${CRYPTO_LIBS}) @@ -169,6 +169,11 @@ endif (WITH_RADOSGW_BEAST_FRONTEND) add_library(radosgw_a STATIC ${radosgw_srcs} $) target_link_libraries(radosgw_a rgw_a ${SSL_LIBRARIES}) +if(WITH_RADOSGW_BEAST_FRONTEND) + target_link_libraries(radosgw_a + ${Boost_COROUTINE_LIBRARY} + ${Boost_CONTEXT_LIBRARY}) +endif() add_executable(radosgw rgw_main.cc) target_link_libraries(radosgw radosgw_a librados @@ -176,7 +181,7 @@ target_link_libraries(radosgw radosgw_a librados cls_log_client cls_statelog_client cls_timeindex_client cls_version_client cls_replica_log_client cls_user_client global ${FCGI_LIBRARY} ${LIB_RESOLV} - ${CURL_LIBRARIES} ${Boost_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} ${ALLOC_LIBS}) # radosgw depends on cls libraries at runtime, but not as link dependencies add_dependencies(radosgw cls_rgw cls_lock cls_refcount