]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: pass static linkflags to the linker who links libcommon 19763/head
authorKefu Chai <kchai@redhat.com>
Wed, 3 Jan 2018 13:43:51 +0000 (21:43 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 4 Jan 2018 11:44:04 +0000 (19:44 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/CMakeLists.txt
src/librados/CMakeLists.txt
src/libradosstriper/CMakeLists.txt
src/librbd/CMakeLists.txt

index 5485929b41abc6b424d8327a5c46c90c5bd4f7c1..3c5d70867b17906ca6b4e23e2a49d59936dd2d7e 100644 (file)
@@ -682,7 +682,14 @@ if(WITH_DPDK)
 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})
@@ -691,10 +698,10 @@ set_target_properties(ceph-common PROPERTIES
   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})
 
@@ -978,6 +985,10 @@ if(WITH_LIBCEPHFS)
   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
@@ -998,7 +1009,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 common)
+  target_link_libraries(ceph-syn client global-static ceph-common)
 
   set(mount_ceph_srcs
     mount/mount.ceph.c)
@@ -1019,7 +1030,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 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})
index 7a11903b08c8f822600d31a6d46bcd8f033d0397..ee0ca49f5d48f64ed28067a09005fe04de072303 100644 (file)
@@ -12,8 +12,6 @@ if(ENABLE_SHARED)
     $<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
@@ -28,9 +26,15 @@ else(ENABLE_SHARED)
   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)
index 5372a6d115deccaf101323051df9d6eae831ef36..e447dd3aeccd4669e4ef9c429410493c6bd23c11 100644 (file)
@@ -5,7 +5,12 @@ set(libradosstriper_srcs
 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
index 4d61cd2ef87c5179545f9518f5cddf88b496cb4e..72c7f4b11148d76111cd23174478640f59f6f5da 100644 (file)
@@ -147,6 +147,10 @@ if(HAVE_UDEV)
   target_link_libraries(librbd PRIVATE
     udev)
 endif()
+if(WITH_STATIC_LIBSTDCXX)
+  target_link_libraries(librbd INTERFACE
+    "-static-libstdc++ -static-libgcc")
+endif()
 if(ENABLE_SHARED)
   set_target_properties(librbd PROPERTIES
     OUTPUT_NAME rbd