endif(WITH_DPDK)
add_library(common STATIC ${ceph_common_objs})
-target_link_libraries(common ${ceph_common_deps})
+target_link_libraries(common
+ PRIVATE ${ceph_common_deps})
+if(WITH_STATIC_LIBSTDCXX)
+ # the apps linking against libcommon are daemons also written in C++, so we
+ # need to link them against libstdc++.
+ target_link_libraries(common
+ INTERFACE "-static-libstdc++ -static-libgcc")
+endif()
add_library(ceph-common SHARED ${ceph_common_objs})
target_link_libraries(ceph-common ${ceph_common_deps})
SOVERSION 0
INSTALL_RPATH "")
if(WITH_STATIC_LIBSTDCXX)
+ # link libstdc++ into ceph-common to avoid including libstdc++ in every apps,
+ # to reduce the size of the app linking against ceph-common.
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})
add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs})
target_link_libraries(cephfs PRIVATE client ceph-common
${CRYPTO_LIBS} ${EXTRALIBS})
+ if(WITH_STATIC_LIBSTDCXX)
+ target_link_libraries(cephfs
+ INTERFACE "-static-libstdc++ -static-libgcc")
+ endif()
if(ENABLE_SHARED)
set_target_properties(cephfs PROPERTIES
OUTPUT_NAME cephfs
ceph_syn.cc
client/SyntheticClient.cc)
add_executable(ceph-syn ${ceph_syn_srcs})
- target_link_libraries(ceph-syn client global-static common)
+ target_link_libraries(ceph-syn client global-static ceph-common)
set(mount_ceph_srcs
mount/mount.ceph.c)
client/fuse_ll.cc)
add_executable(ceph-fuse ${ceph_fuse_srcs})
target_link_libraries(ceph-fuse ${ALLOC_LIBS} ${FUSE_LIBRARIES}
- client common global-static)
+ client ceph-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})
$<TARGET_OBJECTS:librados_api_obj>
$<TARGET_OBJECTS:librados_objs>
$<TARGET_OBJECTS:common_buffer_obj>)
- target_link_libraries(librados PRIVATE osdc ceph-common cls_lock_client
- ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS})
set_target_properties(librados PROPERTIES
OUTPUT_NAME rados
VERSION 2.0.0
add_library(librados STATIC
$<TARGET_OBJECTS:librados_api_obj>
$<TARGET_OBJECTS:librados_objs>)
- target_link_libraries(librados osdc ceph-common cls_lock_client
- ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS})
endif(ENABLE_SHARED)
+target_link_libraries(librados PRIVATE
+ osdc ceph-common cls_lock_client
+ ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS})
+if(WITH_STATIC_LIBSTDCXX)
+ target_link_libraries(librados
+ INTERFACE "-static-libstdc++ -static-libgcc")
+endif()
+target_link_libraries(librados ${rados_libs})
install(TARGETS librados DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(WITH_EMBEDDED)
add_library(radosstriper ${CEPH_SHARED}
${libradosstriper_srcs}
$<TARGET_OBJECTS:librados_objs>)
-target_link_libraries(radosstriper librados cls_lock_client osdc ceph-common pthread ${CRYPTO_LIBS} ${EXTRALIBS})
+target_link_libraries(radosstriper
+ PRIVATE librados cls_lock_client osdc ceph-common pthread ${CRYPTO_LIBS} ${EXTRALIBS})
+if(WITH_STATIC_LIBSTDCXX)
+ target_link_libraries(radosstriper
+ INTERFACE "-static-libstdc++ -static-libgcc")
+endif()
set_target_properties(radosstriper PROPERTIES
OUPUT_NAME radosstriper
VERSION 1.0.0