]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/tools/ceph-dencoder/CMakeLists.txt
import quincy beta 17.1.0
[ceph.git] / ceph / src / tools / ceph-dencoder / CMakeLists.txt
index 869904ebb407d80c300ad515e7f1a519bea13ae3..af767e01360f2192c6f817221ff7b65700872c35 100644 (file)
@@ -9,70 +9,99 @@ if(HAS_VTA)
 endif()
 
 set(dencoder_srcs
-  denc_registry.cc
   ceph_dencoder.cc
-  common_types.cc
-  mds_types.cc
-  osd_types.cc
-  rbd_types.cc
-  rgw_types.cc
   ../../include/uuid.cc
   ../../include/utime.cc
   $<TARGET_OBJECTS:common_texttable_obj>)
-if(WITH_RADOSGW)
-  list(APPEND dencoder_srcs
-    ${CMAKE_SOURCE_DIR}/src/rgw/rgw_dencoder.cc)
-endif()
-
 add_executable(ceph-dencoder ${dencoder_srcs})
+set_target_properties(ceph-dencoder PROPERTIES
+  JOB_POOL_COMPILE heavy_compile_job_pool
+  JOB_POOL_LINK heavy_link_job_pool)
+
+set(denc_plugin_dir ${CEPH_INSTALL_FULL_PKGLIBDIR}/denc)
+add_custom_target(ceph-dencoder-modules)
+
+function(add_denc_mod name)
+  add_library(${name} SHARED
+    ${ARGN})
+  set_target_properties(${name} PROPERTIES
+    PREFIX ""
+    OUTPUT_NAME ${name}
+    CXX_VISIBILITY_PRESET hidden
+    VISIBILITY_INLINES_HIDDEN ON)
+  install(
+    TARGETS ${name}
+    DESTINATION ${denc_plugin_dir})
+  add_dependencies(ceph-dencoder-modules
+    ${name})
+endfunction()
+
+add_denc_mod(denc-mod-common
+  common_types.cc)
+target_link_libraries(denc-mod-common
+  journal
+  cls_cas_internal
+  cls_lock_client
+  cls_refcount_client
+  cls_timeindex_client)
+add_denc_mod(denc-mod-osd
+  osd_types.cc)
+target_link_libraries(denc-mod-osd
+  os
+  osd
+  mon)
 
 if(WITH_RADOSGW)
-  list(APPEND DENCODER_EXTRALIBS
+  add_denc_mod(denc-mod-rgw
+    rgw_types.cc
+    ${CMAKE_SOURCE_DIR}/src/rgw/rgw_dencoder.cc)
+  target_link_libraries(denc-mod-rgw
     rgw_a
-    cls_rgw_client)
+    cls_rgw_client
+    cls_journal_client)
   if(WITH_RADOSGW_AMQP_ENDPOINT)
-    list(APPEND DENCODER_EXTRALIBS
+    target_link_libraries(denc-mod-rgw
       rabbitmq ssl)
   endif()
   if(WITH_RADOSGW_KAFKA_ENDPOINT)
-    list(APPEND DENCODER_EXTRALIBS
+    target_link_libraries(denc-mod-rgw
       rdkafka)
   endif()
 endif()
 
 if(WITH_RBD)
-  list(APPEND DENCODER_EXTRALIBS
+  add_denc_mod(denc-mod-rbd
+    rbd_types.cc)
+  target_link_libraries(denc-mod-rbd
     cls_rbd_client
     rbd_mirror_types
     rbd_types
     rbd_replay_types)
   if(WITH_KRBD)
-    list(APPEND DENCODER_EXTRALIBS
+    target_link_libraries(denc-mod-rbd
       krbd)
   endif()
 endif()
 
 if(WITH_CEPHFS)
-  list(APPEND DENCODER_EXTRALIBS
+  add_denc_mod(denc-mod-cephfs
+    mds_types.cc)
+  target_link_libraries(denc-mod-cephfs
     mds)
 endif()
 
+target_compile_definitions(ceph-dencoder PRIVATE
+  "CEPH_DENC_MOD_DIR=\"${denc_plugin_dir}\"")
+
 target_link_libraries(ceph-dencoder
+  StdFilesystem::filesystem
   global
-  os
-  osd
-  mon
-  journal
   ${DENCODER_EXTRALIBS}
-  cls_lock_client
-  cls_refcount_client
   cls_log_client
   cls_version_client
   cls_user_client
-  cls_journal_client
-  cls_timeindex_client
-  cls_cas_internal
   cls_cas_client
   ${EXTRALIBS}
-  ${CMAKE_DL_LIBS})
+  ${CMAKE_DL_LIBS}
+  ${ALLOC_LIBS})
 install(TARGETS ceph-dencoder DESTINATION bin)