1 add_library(crimson::cflags INTERFACE IMPORTED)
2 set(crimson_cflag_definitions "WITH_SEASTAR=1")
3 # disable concepts to address https://github.com/boostorg/asio/issues/312
4 if((CMAKE_CXX_COMPILER_ID STREQUAL GNU AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10) OR
5 (CMAKE_CXX_COMPILER_ID STREQUAL Clang))
6 list(APPEND crimson_cflag_definitions
7 "BOOST_ASIO_DISABLE_CONCEPTS")
9 set_target_properties(crimson::cflags PROPERTIES
10 INTERFACE_COMPILE_DEFINITIONS "${crimson_cflag_definitions}"
11 INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:-Wno-non-virtual-dtor>
12 INTERFACE_LINK_LIBRARIES Seastar::seastar)
14 set(crimson_common_srcs
17 common/config_proxy.cc
19 common/perf_counters_collection.cc
24 # the specialized version of ceph-common, where
25 # - the logging is sent to Seastar backend
26 # - and the template parameter of lock_policy is SINGLE
27 add_library(crimson-common STATIC
28 ${PROJECT_SOURCE_DIR}/src/common/admin_socket_client.cc
29 ${PROJECT_SOURCE_DIR}/src/common/bit_str.cc
30 ${PROJECT_SOURCE_DIR}/src/common/bloom_filter.cc
31 ${PROJECT_SOURCE_DIR}/src/common/buffer.cc
32 ${PROJECT_SOURCE_DIR}/src/common/buffer_seastar.cc
33 ${PROJECT_SOURCE_DIR}/src/common/ceph_argparse.cc
34 ${PROJECT_SOURCE_DIR}/src/common/ceph_context.cc
35 ${PROJECT_SOURCE_DIR}/src/common/ceph_crypto.cc
36 ${PROJECT_SOURCE_DIR}/src/common/ceph_hash.cc
37 ${PROJECT_SOURCE_DIR}/src/common/ceph_time.cc
38 ${PROJECT_SOURCE_DIR}/src/common/ceph_strings.cc
39 ${PROJECT_SOURCE_DIR}/src/common/ceph_releases.cc
40 ${PROJECT_SOURCE_DIR}/src/common/cmdparse.cc
41 ${PROJECT_SOURCE_DIR}/src/common/common_init.cc
42 ${PROJECT_SOURCE_DIR}/src/common/compat.cc
43 ${PROJECT_SOURCE_DIR}/src/common/code_environment.cc
44 ${PROJECT_SOURCE_DIR}/src/common/config.cc
45 ${PROJECT_SOURCE_DIR}/src/common/config_values.cc
46 ${PROJECT_SOURCE_DIR}/src/common/dout.cc
47 ${PROJECT_SOURCE_DIR}/src/common/entity_name.cc
48 ${PROJECT_SOURCE_DIR}/src/common/environment.cc
49 ${PROJECT_SOURCE_DIR}/src/common/errno.cc
50 ${PROJECT_SOURCE_DIR}/src/common/escape.cc
51 ${PROJECT_SOURCE_DIR}/src/common/hex.cc
52 ${PROJECT_SOURCE_DIR}/src/common/fs_types.cc
53 ${PROJECT_SOURCE_DIR}/src/common/ceph_json.cc
54 ${PROJECT_SOURCE_DIR}/src/common/histogram.cc
55 ${PROJECT_SOURCE_DIR}/src/common/hobject.cc
56 ${PROJECT_SOURCE_DIR}/src/common/hostname.cc
57 ${PROJECT_SOURCE_DIR}/src/common/ipaddr.cc
58 ${PROJECT_SOURCE_DIR}/src/common/mempool.cc
59 ${PROJECT_SOURCE_DIR}/src/common/options.cc
60 ${PROJECT_SOURCE_DIR}/src/common/perf_counters.cc
61 ${PROJECT_SOURCE_DIR}/src/common/perf_histogram.cc
62 ${PROJECT_SOURCE_DIR}/src/common/page.cc
63 ${PROJECT_SOURCE_DIR}/src/common/pick_address.cc
64 ${PROJECT_SOURCE_DIR}/src/common/snap_types.cc
65 ${PROJECT_SOURCE_DIR}/src/common/signal.cc
66 ${PROJECT_SOURCE_DIR}/src/common/str_list.cc
67 ${PROJECT_SOURCE_DIR}/src/common/str_map.cc
68 ${PROJECT_SOURCE_DIR}/src/common/strtol.cc
69 ${PROJECT_SOURCE_DIR}/src/common/reverse.c
70 ${PROJECT_SOURCE_DIR}/src/common/types.cc
71 ${PROJECT_SOURCE_DIR}/src/common/utf8.c
72 ${PROJECT_SOURCE_DIR}/src/common/version.cc
73 ${PROJECT_SOURCE_DIR}/src/common/BackTrace.cc
74 ${PROJECT_SOURCE_DIR}/src/common/ConfUtils.cc
75 ${PROJECT_SOURCE_DIR}/src/common/DecayCounter.cc
76 ${PROJECT_SOURCE_DIR}/src/common/HTMLFormatter.cc
77 ${PROJECT_SOURCE_DIR}/src/common/Formatter.cc
78 ${PROJECT_SOURCE_DIR}/src/common/Graylog.cc
79 ${PROJECT_SOURCE_DIR}/src/common/ostream_temp.cc
80 ${PROJECT_SOURCE_DIR}/src/common/LogEntry.cc
81 ${PROJECT_SOURCE_DIR}/src/common/TextTable.cc
82 ${PROJECT_SOURCE_DIR}/src/common/Thread.cc
83 ${PROJECT_SOURCE_DIR}/src/common/PluginRegistry.cc
84 ${PROJECT_SOURCE_DIR}/src/common/RefCountedObj.cc
85 ${PROJECT_SOURCE_DIR}/src/common/util.cc
86 ${PROJECT_SOURCE_DIR}/src/crush/builder.c
87 ${PROJECT_SOURCE_DIR}/src/crush/mapper.c
88 ${PROJECT_SOURCE_DIR}/src/crush/crush.c
89 ${PROJECT_SOURCE_DIR}/src/crush/hash.c
90 ${PROJECT_SOURCE_DIR}/src/crush/CrushWrapper.cc
91 ${PROJECT_SOURCE_DIR}/src/crush/CrushCompiler.cc
92 ${PROJECT_SOURCE_DIR}/src/crush/CrushTester.cc
93 ${PROJECT_SOURCE_DIR}/src/crush/CrushLocation.cc
94 ${PROJECT_SOURCE_DIR}/src/global/global_context.cc
95 ${PROJECT_SOURCE_DIR}/src/global/pidfile.cc
96 ${PROJECT_SOURCE_DIR}/src/librbd/Features.cc
97 ${PROJECT_SOURCE_DIR}/src/log/Log.cc
98 ${PROJECT_SOURCE_DIR}/src/mgr/ServiceMap.cc
99 ${PROJECT_SOURCE_DIR}/src/mds/inode_backtrace.cc
100 ${PROJECT_SOURCE_DIR}/src/mds/mdstypes.cc
101 ${PROJECT_SOURCE_DIR}/src/mds/cephfs_features.cc
102 ${PROJECT_SOURCE_DIR}/src/mds/FSMap.cc
103 ${PROJECT_SOURCE_DIR}/src/mds/FSMapUser.cc
104 ${PROJECT_SOURCE_DIR}/src/mds/MDSMap.cc
105 ${PROJECT_SOURCE_DIR}/src/msg/msg_types.cc
106 ${PROJECT_SOURCE_DIR}/src/msg/Message.cc
107 ${PROJECT_SOURCE_DIR}/src/mon/PGMap.cc
108 ${PROJECT_SOURCE_DIR}/src/mon/MonCap.cc
109 ${PROJECT_SOURCE_DIR}/src/mon/MonMap.cc
110 ${PROJECT_SOURCE_DIR}/src/osd/osd_types.cc
111 ${PROJECT_SOURCE_DIR}/src/osd/ECMsgTypes.cc
112 ${PROJECT_SOURCE_DIR}/src/osd/HitSet.cc
113 ${PROJECT_SOURCE_DIR}/src/osd/OSDMap.cc
114 ${PROJECT_SOURCE_DIR}/src/osd/PGPeeringEvent.cc
115 ${PROJECT_SOURCE_DIR}/src/xxHash/xxhash.c
116 ${crimson_common_srcs}
117 $<TARGET_OBJECTS:common_mountcephfs_objs>)
119 target_compile_definitions(crimson-common PRIVATE
120 "CEPH_LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
121 "CEPH_PKGLIBDIR=\"${CEPH_INSTALL_FULL_PKGLIBDIR}\""
122 "CEPH_DATADIR=\"${CEPH_INSTALL_DATADIR}\"")
124 set(crimson_common_deps
130 include_directories(SYSTEM ${CMAKE_BINARY_DIR}/external/include)
131 list(APPEND crimson_common_deps jaeger-base)
134 if(NOT WITH_SYSTEM_BOOST)
135 list(APPEND crimson_common_deps ${ZLIB_LIBRARIES})
138 target_link_libraries(crimson-common
143 ${crimson_common_deps}
146 set(crimson_auth_srcs
148 ${PROJECT_SOURCE_DIR}/src/auth/AuthClientHandler.cc
149 ${PROJECT_SOURCE_DIR}/src/auth/AuthMethodList.cc
150 ${PROJECT_SOURCE_DIR}/src/auth/AuthRegistry.cc
151 ${PROJECT_SOURCE_DIR}/src/auth/AuthSessionHandler.cc
152 ${PROJECT_SOURCE_DIR}/src/auth/Crypto.cc
153 ${PROJECT_SOURCE_DIR}/src/auth/KeyRing.cc
154 ${PROJECT_SOURCE_DIR}/src/auth/RotatingKeyRing.cc
155 ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxAuthorizeHandler.cc
156 ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxClientHandler.cc
157 ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxProtocol.cc
158 ${PROJECT_SOURCE_DIR}/src/auth/cephx/CephxSessionHandler.cc
159 ${PROJECT_SOURCE_DIR}/src/auth/none/AuthNoneAuthorizeHandler.cc)
164 ${PROJECT_SOURCE_DIR}/src/mon/MonSub.cc)
166 ${PROJECT_SOURCE_DIR}/src/msg/async/crypto_onwire.cc
167 ${PROJECT_SOURCE_DIR}/src/msg/async/frames_v2.cc
170 net/SocketConnection.cc
171 net/SocketMessenger.cc
176 net/chained_dispatchers.cc)
177 add_library(crimson STATIC
182 target_compile_options(crimson PUBLIC
183 "-ftemplate-backtrace-limit=0")
184 target_link_libraries(crimson
188 add_subdirectory(admin)
190 add_subdirectory(osd)
191 add_subdirectory(tools)