From: Kefu Chai Date: Sat, 4 Jun 2016 01:50:00 +0000 (+0800) Subject: cmake: use ENABLE_SHARED instead of BUILD_SHARED_LIBS X-Git-Tag: v11.0.0~320^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cf9a42c7cc8c13f91724db3a44e45b3fca696446;p=ceph.git cmake: use ENABLE_SHARED instead of BUILD_SHARED_LIBS we decided to drop the static libraries from the *-dev debian packages. so no more tricky changes for supporting creating both libraries. * partially revert 1dbfb26: s/BUILD_SHARED_LIBS/ENABLE_SHARED/ - add_library() command use BUILD_SHARED_LIBS as the default library type, and all intermediate libraries should static ones. it would cause unnecessary confusion if some developer uses add_library() without specifying the library type, and ends up with a .so. so we use our own setting variables for specifying the type of user facing libraries. * revert ac47440 - the BUILD_SHARED_LIBS setting is also populated to the gmock libraries, which should be compiled as static ones. otherwise the unit tests will crash on exit. Signed-off-by: Kefu Chai --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 26f4d17ff62a..9956aa80cb83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -150,6 +150,13 @@ 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) @@ -347,11 +354,11 @@ option(PG_DEBUG_REFS "PG Ref debugging is enabled" OFF) add_definitions(-D__linux__) -if(BUILD_SHARED_LIBS) +if(ENABLE_SHARED) set(Boost_USE_STATIC_LIBS OFF) -else(BUILD_SHARED_LIBS) +else(ENABLE_SHARED) set(Boost_USE_STATIC_LIBS ON) -endif(BUILD_SHARED_LIBS) +endif(ENABLE_SHARED) set(Boost_USE_MULTITHREADED ON) find_package(Boost COMPONENTS thread system regex random program_options date_time iostreams REQUIRED) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5b7606cf1681..b62a479d8ea9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -508,10 +508,6 @@ 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(BUILD_SHARED_LIBS) - set_target_properties(global PROPERTIES - OUTPUT_NAME ceph-global VERSION "1.0.0" SOVERSION "1") -endif(BUILD_SHARED_LIBS) # rados object classes add_subdirectory(cls) @@ -533,7 +529,7 @@ set(librados_srcs librados/snap_set_diff.cc librados/RadosXattrIter.cc ) -add_library(librados ${librados_srcs} +add_library(librados ${CEPH_SHARED} ${librados_srcs} $ $) add_dependencies(librados osdc) @@ -543,10 +539,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(BUILD_SHARED_LIBS) +if(ENABLE_SHARED) set_target_properties(librados PROPERTIES OUTPUT_NAME rados VERSION 2.0.0 SOVERSION 2) -endif(BUILD_SHARED_LIBS) +endif(ENABLE_SHARED) add_library(librados_api STATIC common/buffer.cc librados/librados.cc) @@ -996,11 +992,7 @@ target_link_libraries(crushtool global) install(TARGETS crushtool DESTINATION bin) # Support/Tools -# the static gtest/gmock libraries load correctly for us -set(BUILD_SHARED_LIBS_saved ${BUILD_SHARED_LIBS}) -set(BUILD_SHARED_LIBS OFF) add_subdirectory(gmock) -set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_saved}) add_subdirectory(test) set(cephfs_srcs cephfs.cc) @@ -1123,16 +1115,16 @@ if(WITH_LIBCEPHFS) add_library(client STATIC ${libclient_srcs}) target_link_libraries(client osdc mds) set(libcephfs_srcs libcephfs.cc) - add_library(cephfs ${libcephfs_srcs} + add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs} $ $) target_link_libraries(cephfs LINK_PRIVATE client osdc osd os global common ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) -if(BUILD_SHARED_LIBS) +if(ENABLE_SHARED) set_target_properties(cephfs PROPERTIES OUTPUT_NAME cephfs VERSION 1.0.0 SOVERSION 1) -endif(BUILD_SHARED_LIBS) +endif(ENABLE_SHARED) install(TARGETS cephfs DESTINATION lib) install(DIRECTORY "${CMAKE_SOURCE_DIR}/src/include/cephfs" diff --git a/src/librbd/CMakeLists.txt b/src/librbd/CMakeLists.txt index beb7ac2fe997..33055d8ca7bc 100644 --- a/src/librbd/CMakeLists.txt +++ b/src/librbd/CMakeLists.txt @@ -68,7 +68,7 @@ if(WITH_LTTNG) add_dependencies(rbd_internal rbd-tp) endif() -add_library(librbd +add_library(librbd ${CEPH_SHARED} $ $ $ @@ -90,8 +90,8 @@ target_link_libraries(librbd LINK_PRIVATE keyutils ${CMAKE_DL_LIBS} ${EXTRALIBS}) -if(BUILD_SHARED_LIBS) +if(ENABLE_SHARED) set_target_properties(librbd PROPERTIES VERSION "1.0.0" SOVERSION "1" OUTPUT_NAME rbd) -endif(BUILD_SHARED_LIBS) +endif(ENABLE_SHARED) install(TARGETS librbd DESTINATION lib)