]> git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/CMakeLists.txt
26f7293365ec4bf425336802d82bf4c722a84e84
[ceph.git] / ceph / src / crimson / CMakeLists.txt
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")
8 endif()
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)
13
14 set(crimson_common_srcs
15 common/assert.cc
16 common/buffer_io.cc
17 common/config_proxy.cc
18 common/formatter.cc
19 common/perf_counters_collection.cc
20 common/log.cc
21 common/throttle.cc
22 common/tri_mutex.cc)
23
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>)
118
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}\"")
123
124 set(crimson_common_deps
125 Boost::iostreams
126 Boost::random
127 json_spirit)
128
129 if(WITH_JAEGER)
130 include_directories(SYSTEM ${CMAKE_BINARY_DIR}/external/include)
131 list(APPEND crimson_common_deps jaeger-base)
132 endif()
133
134 if(NOT WITH_SYSTEM_BOOST)
135 list(APPEND crimson_common_deps ${ZLIB_LIBRARIES})
136 endif()
137
138 target_link_libraries(crimson-common
139 PUBLIC
140 crimson::cflags
141 PRIVATE
142 crc32
143 ${crimson_common_deps}
144 OpenSSL::Crypto)
145
146 set(crimson_auth_srcs
147 auth/KeyRing.cc
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)
160 set(crimson_mgr_srcs
161 mgr/client.cc)
162 set(crimson_mon_srcs
163 mon/MonClient.cc
164 ${PROJECT_SOURCE_DIR}/src/mon/MonSub.cc)
165 set(crimson_net_srcs
166 ${PROJECT_SOURCE_DIR}/src/msg/async/crypto_onwire.cc
167 ${PROJECT_SOURCE_DIR}/src/msg/async/frames_v2.cc
168 net/Errors.cc
169 net/Messenger.cc
170 net/SocketConnection.cc
171 net/SocketMessenger.cc
172 net/Socket.cc
173 net/Protocol.cc
174 net/ProtocolV1.cc
175 net/ProtocolV2.cc
176 net/chained_dispatchers.cc)
177 add_library(crimson STATIC
178 ${crimson_auth_srcs}
179 ${crimson_mgr_srcs}
180 ${crimson_mon_srcs}
181 ${crimson_net_srcs})
182 target_compile_options(crimson PUBLIC
183 "-ftemplate-backtrace-limit=0")
184 target_link_libraries(crimson
185 PUBLIC
186 crimson-common
187 crimson::cflags)
188 add_subdirectory(admin)
189 add_subdirectory(os)
190 add_subdirectory(osd)
191 add_subdirectory(tools)