From: Kefu Chai Date: Thu, 20 Oct 2016 07:21:19 +0000 (+0800) Subject: cmake: always create static lib librados_a X-Git-Tag: v11.1.0~553^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8362c5f1cf106ff870b754cfb9736da1d09732d2;p=ceph.git cmake: always create static lib librados_a so tests referencing internal symbols can use librados_a instead of librados to avoid violating ODR (one definition rule). Fixes: http://tracker.ceph.com/issues/17260 Signed-off-by: Kefu Chai --- diff --git a/src/librados/CMakeLists.txt b/src/librados/CMakeLists.txt index 6d950a6d242..4ce8a92c040 100644 --- a/src/librados/CMakeLists.txt +++ b/src/librados/CMakeLists.txt @@ -4,18 +4,24 @@ add_library(librados_objs OBJECT RadosClient.cc) add_library(librados_api_obj OBJECT librados.cc) -add_library(librados ${CEPH_SHARED} +add_library(rados_a STATIC $ $ $) -add_dependencies(librados osdc) +target_link_libraries(rados_a osdc common cls_lock_client + ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) if(WITH_LTTNG) add_dependencies(librados_api_obj librados-tp) endif() -# LINK_PRIVATE instead of PRIVATE is used to backward compatibility with cmake 2.8.11 -target_link_libraries(librados LINK_PRIVATE osdc common cls_lock_client - ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) if(ENABLE_SHARED) + add_library(librados ${CEPH_SHARED} + $ + $ + $) + add_dependencies(librados osdc) + # LINK_PRIVATE instead of PRIVATE is used to backward compatibility with cmake 2.8.11 + target_link_libraries(librados LINK_PRIVATE osdc common cls_lock_client + ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) set_target_properties(librados PROPERTIES OUTPUT_NAME rados VERSION 2.0.0 @@ -25,5 +31,7 @@ if(ENABLE_SHARED) # VISIBILITY_INLINES_HIDDEN ON COMPILE_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden" LINK_FLAGS "-Wl,--exclude-libs,ALL") +else(ENABLE_SHARED) + add_library(librados ALIAS rados_a) endif(ENABLE_SHARED) install(TARGETS librados DESTINATION ${CMAKE_INSTALL_LIBDIR})