cmake: link libcommon with libstdc++ statically if WITH_STATIC_LIBSTDCXX

this matches the linkage of libceph-common, because valgrind reports
Leak_StillReachable if daemons are linked against libceph-common, will
link daemons against common instead, and let common link libstdc++
statically, if WITH_STATIC_LIBSTDCXX=ON.

this change also reverts e6695bb6

Fixes: http://tracker.ceph.com/issues/22438
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit df9a598942)
This commit is contained in:
Kefu Chai 2017-12-14 15:07:30 +08:00
parent f40a3fb873
commit 77f083fb35

View File

@ -691,6 +691,8 @@ set_target_properties(ceph-common PROPERTIES
if(WITH_STATIC_LIBSTDCXX)
set_target_properties(ceph-common PROPERTIES
LINK_FLAGS "-static-libstdc++ -static-libgcc")
set_target_properties(common PROPERTIES
LINK_FLAGS "-static-libstdc++ -static-libgcc")
endif()
install(TARGETS ceph-common DESTINATION ${CMAKE_INSTALL_PKGLIBDIR})
@ -741,7 +743,7 @@ if (WITH_MGR)
add_executable(ceph-mgr ${mgr_srcs}
$<TARGET_OBJECTS:heap_profiler_objs>)
target_include_directories(ceph-mgr SYSTEM PRIVATE "${PYTHON_INCLUDE_DIRS}")
target_link_libraries(ceph-mgr osdc client global-static ceph-common
target_link_libraries(ceph-mgr osdc client global-static common
Boost::python ${PYTHON_LIBRARIES} ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} ${ALLOC_LIBS})
install(TARGETS ceph-mgr DESTINATION bin)
endif (WITH_MGR)
@ -828,7 +830,7 @@ set(ceph_mon_srcs
add_executable(ceph-mon ${ceph_mon_srcs}
$<TARGET_OBJECTS:common_texttable_obj>)
add_dependencies(ceph-mon erasure_code_plugins)
target_link_libraries(ceph-mon mon os global-static ceph-common
target_link_libraries(ceph-mon mon os global-static common
${EXTRALIBS}
${CMAKE_DL_LIBS})
install(TARGETS ceph-mon DESTINATION bin)
@ -859,7 +861,7 @@ set(ceph_osd_srcs
ceph_osd.cc)
add_executable(ceph-osd ${ceph_osd_srcs})
add_dependencies(ceph-osd erasure_code_plugins)
target_link_libraries(ceph-osd osd os global-static ceph-common
target_link_libraries(ceph-osd osd os global-static common
${BLKID_LIBRARIES} ${RDMA_LIBRARIES})
if(WITH_FUSE)
target_link_libraries(ceph-osd ${FUSE_LIBRARIES})
@ -870,7 +872,7 @@ add_subdirectory(mds)
set(ceph_mds_srcs
ceph_mds.cc)
add_executable(ceph-mds ${ceph_mds_srcs})
target_link_libraries(ceph-mds mds ${CMAKE_DL_LIBS} global-static ceph-common
target_link_libraries(ceph-mds mds ${CMAKE_DL_LIBS} global-static common
Boost::thread)
install(TARGETS ceph-mds DESTINATION bin)
@ -994,7 +996,7 @@ if(WITH_LIBCEPHFS)
ceph_syn.cc
client/SyntheticClient.cc)
add_executable(ceph-syn ${ceph_syn_srcs})
target_link_libraries(ceph-syn client global-static ceph-common)
target_link_libraries(ceph-syn client global-static common)
set(mount_ceph_srcs
mount/mount.ceph.c)
@ -1015,7 +1017,7 @@ if(WITH_FUSE)
client/fuse_ll.cc)
add_executable(ceph-fuse ${ceph_fuse_srcs})
target_link_libraries(ceph-fuse ${ALLOC_LIBS} ${FUSE_LIBRARIES}
client ceph-common global-static)
client common global-static)
set_target_properties(ceph-fuse PROPERTIES COMPILE_FLAGS "-I${FUSE_INCLUDE_DIRS}")
install(TARGETS ceph-fuse DESTINATION bin)
install(PROGRAMS mount.fuse.ceph DESTINATION ${CMAKE_INSTALL_SBINDIR})