diff options
Diffstat (limited to 'src/crimson/CMakeLists.txt')
-rw-r--r-- | src/crimson/CMakeLists.txt | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/src/crimson/CMakeLists.txt b/src/crimson/CMakeLists.txt new file mode 100644 index 000000000..26f729336 --- /dev/null +++ b/src/crimson/CMakeLists.txt @@ -0,0 +1,191 @@ +add_library(crimson::cflags INTERFACE IMPORTED) +set(crimson_cflag_definitions "WITH_SEASTAR=1") +# disable concepts to address https://github.com/boostorg/asio/issues/312 +if((CMAKE_CXX_COMPILER_ID STREQUAL GNU AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10) OR + (CMAKE_CXX_COMPILER_ID STREQUAL Clang)) + list(APPEND crimson_cflag_definitions + "BOOST_ASIO_DISABLE_CONCEPTS") +endif() +set_target_properties(crimson::cflags PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "${crimson_cflag_definitions}" + INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:-Wno-non-virtual-dtor> + INTERFACE_LINK_LIBRARIES Seastar::seastar) + +set(crimson_common_srcs + common/assert.cc + common/buffer_io.cc + common/config_proxy.cc + common/formatter.cc + common/perf_counters_collection.cc + common/log.cc + common/throttle.cc + common/tri_mutex.cc) + +# the specialized version of ceph-common, where +# - the logging is sent to Seastar backend +# - and the template parameter of lock_policy is SINGLE +add_library(crimson-common STATIC + ${PROJECT_SOURCE_DIR}/src/common/admin_socket_client.cc + ${PROJECT_SOURCE_DIR}/src/common/bit_str.cc + ${PROJECT_SOURCE_DIR}/src/common/bloom_filter.cc + ${PROJECT_SOURCE_DIR}/src/common/buffer.cc + ${PROJECT_SOURCE_DIR}/src/common/buffer_seastar.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_argparse.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_context.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_crypto.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_hash.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_time.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_strings.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_releases.cc + ${PROJECT_SOURCE_DIR}/src/common/cmdparse.cc + ${PROJECT_SOURCE_DIR}/src/common/common_init.cc + ${PROJECT_SOURCE_DIR}/src/common/compat.cc + ${PROJECT_SOURCE_DIR}/src/common/code_environment.cc + ${PROJECT_SOURCE_DIR}/src/common/config.cc + ${PROJECT_SOURCE_DIR}/src/common/config_values.cc + ${PROJECT_SOURCE_DIR}/src/common/dout.cc + ${PROJECT_SOURCE_DIR}/src/common/entity_name.cc + ${PROJECT_SOURCE_DIR}/src/common/environment.cc + ${PROJECT_SOURCE_DIR}/src/common/errno.cc + ${PROJECT_SOURCE_DIR}/src/common/escape.cc + ${PROJECT_SOURCE_DIR}/src/common/hex.cc + ${PROJECT_SOURCE_DIR}/src/common/fs_types.cc + ${PROJECT_SOURCE_DIR}/src/common/ceph_json.cc + ${PROJECT_SOURCE_DIR}/src/common/histogram.cc + ${PROJECT_SOURCE_DIR}/src/common/hobject.cc + ${PROJECT_SOURCE_DIR}/src/common/hostname.cc + ${PROJECT_SOURCE_DIR}/src/common/ipaddr.cc + ${PROJECT_SOURCE_DIR}/src/common/mempool.cc + ${PROJECT_SOURCE_DIR}/src/common/options.cc + ${PROJECT_SOURCE_DIR}/src/common/perf_counters.cc + ${PROJECT_SOURCE_DIR}/src/common/perf_histogram.cc + ${PROJECT_SOURCE_DIR}/src/common/page.cc + ${PROJECT_SOURCE_DIR}/src/common/pick_address.cc + ${PROJECT_SOURCE_DIR}/src/common/snap_types.cc + ${PROJECT_SOURCE_DIR}/src/common/signal.cc + ${PROJECT_SOURCE_DIR}/src/common/str_list.cc + ${PROJECT_SOURCE_DIR}/src/common/str_map.cc + ${PROJECT_SOURCE_DIR}/src/common/strtol.cc + ${PROJECT_SOURCE_DIR}/src/common/reverse.c + ${PROJECT_SOURCE_DIR}/src/common/types.cc + ${PROJECT_SOURCE_DIR}/src/common/utf8.c + ${PROJECT_SOURCE_DIR}/src/common/version.cc + ${PROJECT_SOURCE_DIR}/src/common/BackTrace.cc + ${PROJECT_SOURCE_DIR}/src/common/ConfUtils.cc + ${PROJECT_SOURCE_DIR}/src/common/DecayCounter.cc + ${PROJECT_SOURCE_DIR}/src/common/HTMLFormatter.cc + ${PROJECT_SOURCE_DIR}/src/common/Formatter.cc + ${PROJECT_SOURCE_DIR}/src/common/Graylog.cc + ${PROJECT_SOURCE_DIR}/src/common/ostream_temp.cc + ${PROJECT_SOURCE_DIR}/src/common/LogEntry.cc + ${PROJECT_SOURCE_DIR}/src/common/TextTable.cc + ${PROJECT_SOURCE_DIR}/src/common/Thread.cc + ${PROJECT_SOURCE_DIR}/src/common/PluginRegistry.cc + ${PROJECT_SOURCE_DIR}/src/common/RefCountedObj.cc + ${PROJECT_SOURCE_DIR}/src/common/util.cc + ${PROJECT_SOURCE_DIR}/src/crush/builder.c + ${PROJECT_SOURCE_DIR}/src/crush/mapper.c + ${PROJECT_SOURCE_DIR}/src/crush/crush.c + ${PROJECT_SOURCE_DIR}/src/crush/hash.c + ${PROJECT_SOURCE_DIR}/src/crush/CrushWrapper.cc + ${PROJECT_SOURCE_DIR}/src/crush/CrushCompiler.cc + ${PROJECT_SOURCE_DIR}/src/crush/CrushTester.cc + ${PROJECT_SOURCE_DIR}/src/crush/CrushLocation.cc + ${PROJECT_SOURCE_DIR}/src/global/global_context.cc + ${PROJECT_SOURCE_DIR}/src/global/pidfile.cc + ${PROJECT_SOURCE_DIR}/src/librbd/Features.cc + ${PROJECT_SOURCE_DIR}/src/log/Log.cc + ${PROJECT_SOURCE_DIR}/src/mgr/ServiceMap.cc + ${PROJECT_SOURCE_DIR}/src/mds/inode_backtrace.cc + ${PROJECT_SOURCE_DIR}/src/mds/mdstypes.cc + ${PROJECT_SOURCE_DIR}/src/mds/cephfs_features.cc + ${PROJECT_SOURCE_DIR}/src/mds/FSMap.cc + ${PROJECT_SOURCE_DIR}/src/mds/FSMapUser.cc + ${PROJECT_SOURCE_DIR}/src/mds/MDSMap.cc + ${PROJECT_SOURCE_DIR}/src/msg/msg_types.cc + ${PROJECT_SOURCE_DIR}/src/msg/Message.cc + ${PROJECT_SOURCE_DIR}/src/mon/PGMap.cc + ${PROJECT_SOURCE_DIR}/src/mon/MonCap.cc + ${PROJECT_SOURCE_DIR}/src/mon/MonMap.cc + ${PROJECT_SOURCE_DIR}/src/osd/osd_types.cc + ${PROJECT_SOURCE_DIR}/src/osd/ECMsgTypes.cc + ${PROJECT_SOURCE_DIR}/src/osd/HitSet.cc + ${PROJECT_SOURCE_DIR}/src/osd/OSDMap.cc + ${PROJECT_SOURCE_DIR}/src/osd/PGPeeringEvent.cc + ${PROJECT_SOURCE_DIR}/src/xxHash/xxhash.c + ${crimson_common_srcs} + $<TARGET_OBJECTS:common_mountcephfs_objs>) + +target_compile_definitions(crimson-common PRIVATE + "CEPH_LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\"" + "CEPH_PKGLIBDIR=\"${CEPH_INSTALL_FULL_PKGLIBDIR}\"" + "CEPH_DATADIR=\"${CEPH_INSTALL_DATADIR}\"") + +set(crimson_common_deps + Boost::iostreams + Boost::random + json_spirit) + +if(WITH_JAEGER) + include_directories(SYSTEM ${CMAKE_BINARY_DIR}/external/include) + list(APPEND crimson_common_deps jaeger-base) +endif() + +if(NOT WITH_SYSTEM_BOOST) + list(APPEND crimson_common_deps ${ZLIB_LIBRARIES}) +endif() + +target_link_libraries(crimson-common + PUBLIC + crimson::cflags + PRIVATE + crc32 + ${crimson_common_deps} + OpenSSL::Crypto) + +set(crimson_auth_srcs + auth/KeyRing.cc + ${PROJECT_SOURCE_DIR}/src/auth/AuthClientHandler.cc + ${PROJECT_SOURCE_DIR}/src/auth/AuthMethodList.cc + ${PROJECT_SOURCE_DIR}/src/auth/AuthRegistry.cc + ${PROJECT_SOURCE_DIR}/src/auth/AuthSessionHandler.cc + ${PROJECT_SOURCE_DIR}/src/auth/Crypto.cc + ${PROJECT_SOURCE_DIR}/src/auth/KeyRing.cc + ${PROJECT_SOURCE_DIR}/src/auth/RotatingKeyRing.cc + ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxAuthorizeHandler.cc + ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxClientHandler.cc + ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxProtocol.cc + ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxSessionHandler.cc + ${PROJECT_SOURCE_DIR}/src/auth/none/AuthNoneAuthorizeHandler.cc) +set(crimson_mgr_srcs + mgr/client.cc) +set(crimson_mon_srcs + mon/MonClient.cc + ${PROJECT_SOURCE_DIR}/src/mon/MonSub.cc) +set(crimson_net_srcs + ${PROJECT_SOURCE_DIR}/src/msg/async/crypto_onwire.cc + ${PROJECT_SOURCE_DIR}/src/msg/async/frames_v2.cc + net/Errors.cc + net/Messenger.cc + net/SocketConnection.cc + net/SocketMessenger.cc + net/Socket.cc + net/Protocol.cc + net/ProtocolV1.cc + net/ProtocolV2.cc + net/chained_dispatchers.cc) +add_library(crimson STATIC + ${crimson_auth_srcs} + ${crimson_mgr_srcs} + ${crimson_mon_srcs} + ${crimson_net_srcs}) +target_compile_options(crimson PUBLIC + "-ftemplate-backtrace-limit=0") +target_link_libraries(crimson + PUBLIC + crimson-common + crimson::cflags) +add_subdirectory(admin) +add_subdirectory(os) +add_subdirectory(osd) +add_subdirectory(tools) |