cmake: s/ENABLE_SHARED/BUILD_SHARED_LIBS/

* BUILD_SHARED_LIB is a cmake variable respected by add_library().
  so we can simply expose it as an option instead of reinventing our own.
* and mark internal libraries as STATIC explicitly
* and add keyutil to librbd as secret.cc is using it. and secret.cc is
  linked into librbd.

Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2016-05-26 18:59:35 +08:00
parent 49518a4f02
commit 1dbfb264ff
6 changed files with 36 additions and 39 deletions

View File

@ -150,12 +150,7 @@ CHECK_CXX_SOURCE_COMPILES("
set(CEPH_MAN_DIR "share/man" CACHE STRING "Install location for man pages (relative to prefix).")
option(ENABLE_SHARED "build shared libraries" ON)
if(${ENABLE_SHARED})
set(CEPH_SHARED SHARED)
else(${ENABLE_SHARED})
set(CEPH_SHARED STATIC)
endif(${ENABLE_SHARED})
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
find_package(execinfo)
@ -352,11 +347,11 @@ option(PG_DEBUG_REFS "PG Ref debugging is enabled" OFF)
add_definitions(-D__linux__)
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
set(Boost_USE_STATIC_LIBS OFF)
else(${ENABLE_SHARED})
else(BUILD_SHARED_LIBS)
set(Boost_USE_STATIC_LIBS ON)
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost COMPONENTS thread system regex random program_options date_time iostreams REQUIRED)

View File

@ -451,10 +451,10 @@ else()
perfglue/disabled_stubs.cc)
endif(${HAVE_GPERFTOOLS})
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
list(APPEND libcommon_files
$<TARGET_OBJECTS:global_common_objs>)
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
add_library(common STATIC ${libcommon_files}
$<TARGET_OBJECTS:mon_common_objs>
@ -498,10 +498,10 @@ target_link_libraries(global common ${CMAKE_THREAD_LIBS_INIT} ${CRYPTO_LIBS}
if(${WITH_LTTNG})
target_link_libraries(global lttng-ust dl)
endif(${WITH_LTTNG})
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
set_target_properties(global PROPERTIES
OUTPUT_NAME ceph-global VERSION "1.0.0" SOVERSION "1")
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
# rados object classes
add_subdirectory(cls)
@ -523,7 +523,7 @@ set(librados_srcs
librados/snap_set_diff.cc
librados/RadosXattrIter.cc
)
add_library(librados ${CEPH_SHARED} ${librados_srcs}
add_library(librados ${librados_srcs}
$<TARGET_OBJECTS:cls_references_objs>
$<TARGET_OBJECTS:common_util_obj>)
add_dependencies(librados osdc)
@ -533,10 +533,10 @@ endif()
# LINK_PRIVATE instead of PRIVATE is used to backward compatibility with cmake 2.8.11
target_link_libraries(librados LINK_PRIVATE osdc osd os global common cls_lock_client
${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS})
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
set_target_properties(librados PROPERTIES OUTPUT_NAME rados VERSION 2.0.0
SOVERSION 2)
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
add_library(librados_api STATIC common/buffer.cc librados/librados.cc)
@ -1077,19 +1077,19 @@ if(WITH_LIBCEPHFS)
client/MetaSession.cc
client/Trace.cc
client/posix_acl.cc)
add_library(client ${libclient_srcs})
add_library(client STATIC ${libclient_srcs})
target_link_libraries(client osdc mds)
set(libcephfs_srcs libcephfs.cc)
add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs}
add_library(cephfs ${libcephfs_srcs}
$<TARGET_OBJECTS:cls_references_objs>
$<TARGET_OBJECTS:common_util_obj>)
target_link_libraries(cephfs LINK_PRIVATE client osdc osd os global common cls_lock_client
${BLKID_LIBRARIES}
${CRYPTO_LIBS} ${EXTRALIBS})
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
set_target_properties(cephfs PROPERTIES OUTPUT_NAME cephfs VERSION 1.0.0
SOVERSION 1)
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
install(TARGETS cephfs DESTINATION lib)
install(DIRECTORY
"${CMAKE_SOURCE_DIR}/src/include/cephfs"
@ -1134,7 +1134,7 @@ set(journal_srcs
journal/ObjectPlayer.cc
journal/ObjectRecorder.cc
journal/Utils.cc)
add_library(journal ${journal_srcs})
add_library(journal STATIC ${journal_srcs})
add_library(krbd_objs OBJECT krbd.cc)
@ -1177,7 +1177,7 @@ if(${WITH_RBD})
add_executable(rbd-fuse
rbd_fuse/rbd-fuse.cc)
target_link_libraries(rbd-fuse
librbd ${FUSE_LIBRARIES})
librbd librados ${FUSE_LIBRARIES})
install(TARGETS rbd-fuse DESTINATION bin)
endif()

View File

@ -11,7 +11,7 @@ if (WITH_RBD)
set_target_properties(cls_rbd PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_rbd DESTINATION lib/rados-classes)
add_library(cls_rbd_client rbd/cls_rbd_client.cc rbd/cls_rbd_types.cc)
add_library(cls_rbd_client STATIC rbd/cls_rbd_client.cc rbd/cls_rbd_types.cc)
endif (WITH_RBD)
# cls_lock
@ -19,7 +19,7 @@ add_library(cls_lock SHARED lock/cls_lock.cc)
set_target_properties(cls_lock PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_lock DESTINATION lib/rados-classes)
add_library(cls_lock_client
add_library(cls_lock_client STATIC
lock/cls_lock_client.cc
lock/cls_lock_types.cc
lock/cls_lock_ops.cc)
@ -33,7 +33,7 @@ target_link_libraries(cls_refcount json_spirit)
set_target_properties(cls_refcount PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_refcount DESTINATION lib/rados-classes)
add_library(cls_refcount_client
add_library(cls_refcount_client STATIC
refcount/cls_refcount_client.cc
refcount/cls_refcount_ops.cc)
@ -42,7 +42,7 @@ add_library(cls_version SHARED version/cls_version.cc)
set_target_properties(cls_version PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_version DESTINATION lib/rados-classes)
add_library(cls_version_client
add_library(cls_version_client STATIC
version/cls_version_client.cc
version/cls_version_types.cc)
@ -51,28 +51,28 @@ add_library(cls_log SHARED log/cls_log.cc)
set_target_properties(cls_log PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_log DESTINATION lib/rados-classes)
add_library(cls_log_client log/cls_log_client.cc)
add_library(cls_log_client STATIC log/cls_log_client.cc)
# cls_statelog
add_library(cls_statelog SHARED statelog/cls_statelog.cc)
set_target_properties(cls_statelog PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_statelog DESTINATION lib/rados-classes)
add_library(cls_statelog_client statelog/cls_statelog_client.cc)
add_library(cls_statelog_client STATIC statelog/cls_statelog_client.cc)
# cls_timeindex
add_library(cls_timeindex SHARED timeindex/cls_timeindex.cc)
set_target_properties(cls_timeindex PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_timeindex DESTINATION lib/rados-classes)
add_library(cls_timeindex_client timeindex/cls_timeindex_client.cc)
add_library(cls_timeindex_client STATIC timeindex/cls_timeindex_client.cc)
# cls_replica_log
add_library(cls_replica_log SHARED replica_log/cls_replica_log.cc)
set_target_properties(cls_replica_log PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_replica_log DESTINATION lib/rados-classes)
add_library(cls_replica_log_client
add_library(cls_replica_log_client STATIC
replica_log/cls_replica_log_types.cc
replica_log/cls_replica_log_ops.cc
replica_log/cls_replica_log_client.cc)
@ -82,7 +82,7 @@ add_library(cls_user SHARED user/cls_user.cc)
set_target_properties(cls_user PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_user DESTINATION lib/rados-classes)
add_library(cls_user_client
add_library(cls_user_client STATIC
user/cls_user_client.cc
user/cls_user_types.cc
user/cls_user_ops.cc)
@ -94,7 +94,7 @@ add_library(cls_journal SHARED
set_target_properties(cls_journal PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_journal DESTINATION lib/rados-classes)
add_library(cls_journal_client
add_library(cls_journal_client STATIC
journal/cls_journal_client.cc
journal/cls_journal_types.cc)
@ -109,7 +109,7 @@ if (WITH_RADOSGW)
set_target_properties(cls_rgw PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_rgw DESTINATION lib/rados-classes)
add_library(cls_rgw_client
add_library(cls_rgw_client STATIC
rgw/cls_rgw_client.cc
rgw/cls_rgw_types.cc
rgw/cls_rgw_ops.cc)
@ -122,7 +122,7 @@ if (WITH_CEPHFS)
set_target_properties(cls_cephfs PROPERTIES VERSION "1.0.0" SOVERSION "1")
install(TARGETS cls_cephfs DESTINATION lib/rados-classes)
add_library(cls_cephfs_client
add_library(cls_cephfs_client STATIC
cephfs/cls_cephfs_client.cc)
endif (WITH_CEPHFS)

View File

@ -12,7 +12,7 @@ if (HAVE_BETTER_YASM_ELF64)
set(EC_ISA_LIB ec_isa)
endif (HAVE_BETTER_YASM_ELF64)
add_library(erasure_code ErasureCodePlugin.cc)
add_library(erasure_code STATIC ErasureCodePlugin.cc)
target_link_libraries(erasure_code dl)
add_dependencies(erasure_code ${CMAKE_SOURCE_DIR}/src/ceph_ver.h)

View File

@ -1,4 +1,4 @@
add_library(json_spirit
add_library(json_spirit STATIC
json_spirit_reader.cpp
json_spirit_writer.cpp)
target_link_libraries(json_spirit ${Boost_LIBRARIES})

View File

@ -67,10 +67,11 @@ if(WITH_LTTNG)
add_dependencies(rbd_internal librbd-tp)
endif()
add_library(librbd ${CEPH_SHARED}
add_library(librbd
$<TARGET_OBJECTS:osdc_rbd_objs>
$<TARGET_OBJECTS:common_util_obj>
$<TARGET_OBJECTS:krbd_objs>
$<TARGET_OBJECTS:parse_secret_objs>
${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc
librbd.cc)
target_link_libraries(librbd LINK_PRIVATE
@ -85,10 +86,11 @@ target_link_libraries(librbd LINK_PRIVATE
cls_journal_client
pthread
udev
keyutils
${CMAKE_DL_LIBS}
${EXTRALIBS})
if(${ENABLE_SHARED})
if(BUILD_SHARED_LIBS)
set_target_properties(librbd PROPERTIES VERSION "1.0.0" SOVERSION "1"
OUTPUT_NAME rbd)
endif(${ENABLE_SHARED})
endif(BUILD_SHARED_LIBS)
install(TARGETS librbd DESTINATION lib)