]> git.proxmox.com Git - ceph.git/blob - ceph/src/librbd/CMakeLists.txt
import quincy beta 17.1.0
[ceph.git] / ceph / src / librbd / CMakeLists.txt
1 set(librbd_types_srcs
2 journal/Types.cc
3 mirroring_watcher/Types.cc
4 trash_watcher/Types.cc
5 watcher/Types.cc
6 WatchNotifyTypes.cc)
7
8 if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
9 list(APPEND librbd_types_srcs cache/pwl/Types.cc)
10 endif()
11
12 add_library(rbd_types STATIC
13 ${librbd_types_srcs})
14
15 if (WITH_RBD_RWL)
16 target_link_libraries(rbd_types
17 PUBLIC pmem::pmemobj)
18 endif()
19
20 set(librbd_internal_srcs
21 AsioEngine.cc
22 AsyncObjectThrottle.cc
23 AsyncRequest.cc
24 ConfigWatcher.cc
25 DeepCopyRequest.cc
26 ExclusiveLock.cc
27 ImageCtx.cc
28 ImageState.cc
29 ImageWatcher.cc
30 internal.cc
31 Journal.cc
32 LibrbdAdminSocketHook.cc
33 ManagedLock.cc
34 MirroringWatcher.cc
35 ObjectMap.cc
36 Operations.cc
37 PluginRegistry.cc
38 TrashWatcher.cc
39 Utils.cc
40 Watcher.cc
41 api/Config.cc
42 api/DiffIterate.cc
43 api/Group.cc
44 api/Image.cc
45 api/Io.cc
46 api/Migration.cc
47 api/Mirror.cc
48 api/Namespace.cc
49 api/Pool.cc
50 api/PoolMetadata.cc
51 api/Snapshot.cc
52 api/Trash.cc
53 api/Utils.cc
54 asio/ContextWQ.cc
55 cache/ImageWriteback.cc
56 cache/ObjectCacherObjectDispatch.cc
57 cache/ObjectCacherWriteback.cc
58 cache/WriteAroundObjectDispatch.cc
59 crypto/BlockCrypto.cc
60 crypto/CryptoContextPool.cc
61 crypto/CryptoImageDispatch.cc
62 crypto/CryptoObjectDispatch.cc
63 crypto/FormatRequest.cc
64 crypto/LoadRequest.cc
65 crypto/ShutDownCryptoRequest.cc
66 crypto/Utils.cc
67 crypto/openssl/DataCryptor.cc
68 deep_copy/ImageCopyRequest.cc
69 deep_copy/MetadataCopyRequest.cc
70 deep_copy/ObjectCopyRequest.cc
71 deep_copy/SetHeadRequest.cc
72 deep_copy/SnapshotCopyRequest.cc
73 deep_copy/SnapshotCreateRequest.cc
74 deep_copy/Utils.cc
75 exclusive_lock/AutomaticPolicy.cc
76 exclusive_lock/ImageDispatch.cc
77 exclusive_lock/PreAcquireRequest.cc
78 exclusive_lock/PostAcquireRequest.cc
79 exclusive_lock/PreReleaseRequest.cc
80 exclusive_lock/StandardPolicy.cc
81 image/AttachChildRequest.cc
82 image/AttachParentRequest.cc
83 image/CloneRequest.cc
84 image/CloseRequest.cc
85 image/CreateRequest.cc
86 image/DetachChildRequest.cc
87 image/DetachParentRequest.cc
88 image/GetMetadataRequest.cc
89 image/ListWatchersRequest.cc
90 image/OpenRequest.cc
91 image/PreRemoveRequest.cc
92 image/RefreshParentRequest.cc
93 image/RefreshRequest.cc
94 image/RemoveRequest.cc
95 image/SetFlagsRequest.cc
96 image/SetSnapRequest.cc
97 image/ValidatePoolRequest.cc
98 image_watcher/NotifyLockOwner.cc
99 io/AioCompletion.cc
100 io/AsyncOperation.cc
101 io/CopyupRequest.cc
102 io/FlushTracker.cc
103 io/ImageDispatch.cc
104 io/ImageDispatchSpec.cc
105 io/ImageDispatcher.cc
106 io/ImageRequest.cc
107 io/ObjectDispatch.cc
108 io/ObjectDispatchSpec.cc
109 io/ObjectDispatcher.cc
110 io/ObjectRequest.cc
111 io/QosImageDispatch.cc
112 io/QueueImageDispatch.cc
113 io/ReadResult.cc
114 io/RefreshImageDispatch.cc
115 io/SimpleSchedulerObjectDispatch.cc
116 io/Types.cc
117 io/Utils.cc
118 io/WriteBlockImageDispatch.cc
119 io/IoOperations.cc
120 journal/CreateRequest.cc
121 journal/DemoteRequest.cc
122 journal/ObjectDispatch.cc
123 journal/OpenRequest.cc
124 journal/PromoteRequest.cc
125 journal/RemoveRequest.cc
126 journal/Replay.cc
127 journal/ResetRequest.cc
128 journal/StandardPolicy.cc
129 journal/Utils.cc
130 managed_lock/AcquireRequest.cc
131 managed_lock/BreakRequest.cc
132 managed_lock/GetLockerRequest.cc
133 managed_lock/ReacquireRequest.cc
134 managed_lock/ReleaseRequest.cc
135 managed_lock/Utils.cc
136 migration/FileStream.cc
137 migration/HttpClient.cc
138 migration/HttpStream.cc
139 migration/ImageDispatch.cc
140 migration/NativeFormat.cc
141 migration/OpenSourceImageRequest.cc
142 migration/QCOWFormat.cc
143 migration/RawFormat.cc
144 migration/RawSnapshot.cc
145 migration/S3Stream.cc
146 migration/SourceSpecBuilder.cc
147 migration/Utils.cc
148 mirror/DemoteRequest.cc
149 mirror/DisableRequest.cc
150 mirror/EnableRequest.cc
151 mirror/GetInfoRequest.cc
152 mirror/GetStatusRequest.cc
153 mirror/GetUuidRequest.cc
154 mirror/ImageRemoveRequest.cc
155 mirror/ImageStateUpdateRequest.cc
156 mirror/PromoteRequest.cc
157 mirror/snapshot/CreateNonPrimaryRequest.cc
158 mirror/snapshot/CreatePrimaryRequest.cc
159 mirror/snapshot/DemoteRequest.cc
160 mirror/snapshot/GetImageStateRequest.cc
161 mirror/snapshot/ImageMeta.cc
162 mirror/snapshot/PromoteRequest.cc
163 mirror/snapshot/RemoveImageStateRequest.cc
164 mirror/snapshot/SetImageStateRequest.cc
165 mirror/snapshot/Types.cc
166 mirror/snapshot/UnlinkPeerRequest.cc
167 mirror/snapshot/Utils.cc
168 mirror/snapshot/WriteImageStateRequest.cc
169 object_map/CreateRequest.cc
170 object_map/DiffRequest.cc
171 object_map/InvalidateRequest.cc
172 object_map/LockRequest.cc
173 object_map/RefreshRequest.cc
174 object_map/RemoveRequest.cc
175 object_map/Request.cc
176 object_map/ResizeRequest.cc
177 object_map/SnapshotCreateRequest.cc
178 object_map/SnapshotRemoveRequest.cc
179 object_map/SnapshotRollbackRequest.cc
180 object_map/UnlockRequest.cc
181 object_map/UpdateRequest.cc
182 operation/DisableFeaturesRequest.cc
183 operation/EnableFeaturesRequest.cc
184 operation/FlattenRequest.cc
185 operation/MetadataRemoveRequest.cc
186 operation/MetadataSetRequest.cc
187 operation/MigrateRequest.cc
188 operation/ObjectMapIterate.cc
189 operation/RebuildObjectMapRequest.cc
190 operation/RenameRequest.cc
191 operation/Request.cc
192 operation/ResizeRequest.cc
193 operation/SnapshotCreateRequest.cc
194 operation/SnapshotProtectRequest.cc
195 operation/SnapshotRemoveRequest.cc
196 operation/SnapshotRenameRequest.cc
197 operation/SnapshotRollbackRequest.cc
198 operation/SnapshotUnprotectRequest.cc
199 operation/SnapshotLimitRequest.cc
200 operation/SparsifyRequest.cc
201 operation/TrimRequest.cc
202 plugin/Api.cc
203 trash/MoveRequest.cc
204 trash/RemoveRequest.cc
205 watcher/Notifier.cc
206 watcher/RewatchRequest.cc
207 ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
208
209 if(WITH_EVENTTRACE)
210 list(APPEND librbd_internal_srcs ../common/EventTrace.cc)
211 endif()
212
213 if(LINUX AND HAVE_LIBCRYPTSETUP)
214 list(APPEND librbd_internal_srcs
215 crypto/luks/EncryptionFormat.cc
216 crypto/luks/Header.cc
217 crypto/luks/FormatRequest.cc
218 crypto/luks/LoadRequest.cc)
219 endif()
220
221 add_library(rbd_api STATIC librbd.cc)
222 add_library(rbd_internal STATIC
223 ${librbd_internal_srcs}
224 $<TARGET_OBJECTS:rados_snap_set_diff_obj>)
225 if(WITH_LTTNG)
226 # librbd.cc includes tracing/librbd.h
227 add_dependencies(rbd_api librbd-tp)
228 # io/AioCompletion.cc includes tracing/librbd.h
229 add_dependencies(rbd_internal librbd-tp)
230 endif()
231 if(WITH_EVENTTRACE)
232 add_dependencies(rbd_internal eventtrace_tp)
233 endif()
234 target_link_libraries(rbd_internal PRIVATE
235 osdc rbd_types
236 OpenSSL::SSL)
237 target_include_directories(rbd_internal PRIVATE ${OPENSSL_INCLUDE_DIR})
238 if(LINUX AND HAVE_LIBCRYPTSETUP)
239 target_include_directories(rbd_internal PRIVATE ${LIBCRYPTSETUP_INCLUDE_DIR})
240 target_link_libraries(rbd_internal PRIVATE ${LIBCRYPTSETUP_LIBRARIES})
241 endif()
242
243 add_custom_target(librbd_plugins)
244 set(librbd_plugins_dir ${CEPH_INSTALL_PKGLIBDIR}/librbd)
245
246 set(rbd_plugin_parent_cache_srcs
247 cache/ParentCacheObjectDispatch.cc
248 plugin/ParentCache.cc)
249 add_library(librbd_plugin_parent_cache SHARED
250 ${rbd_plugin_parent_cache_srcs})
251 target_link_libraries(librbd_plugin_parent_cache PRIVATE
252 ceph_immutable_object_cache_lib ceph-common librbd
253 libneorados
254 librados)
255 set_target_properties(librbd_plugin_parent_cache PROPERTIES
256 OUTPUT_NAME ceph_librbd_parent_cache
257 VERSION 1.0.0
258 SOVERSION 1)
259 install(TARGETS librbd_plugin_parent_cache DESTINATION ${librbd_plugins_dir})
260 add_dependencies(librbd_plugins librbd_plugin_parent_cache)
261
262 if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
263 set(rbd_plugin_pwl_srcs
264 cache/WriteLogImageDispatch.cc
265 cache/pwl/AbstractWriteLog.cc
266 cache/pwl/DiscardRequest.cc
267 cache/pwl/ImageCacheState.cc
268 cache/pwl/InitRequest.cc
269 cache/pwl/LogEntry.cc
270 cache/pwl/LogMap.cc
271 cache/pwl/LogOperation.cc
272 cache/pwl/Request.cc
273 cache/pwl/ShutdownRequest.cc
274 cache/pwl/SyncPoint.cc
275 cache/pwl/Types.cc
276 plugin/WriteLogImageCache.cc)
277
278 if(WITH_RBD_SSD_CACHE)
279 set(rbd_plugin_pwl_srcs
280 ${rbd_plugin_pwl_srcs}
281 cache/pwl/ssd/LogEntry.cc
282 cache/pwl/ssd/LogOperation.cc
283 cache/pwl/ssd/ReadRequest.cc
284 cache/pwl/ssd/Request.cc
285 cache/pwl/ssd/WriteLog.cc)
286 endif()
287 if(WITH_RBD_RWL)
288 set(rbd_plugin_pwl_srcs
289 ${rbd_plugin_pwl_srcs}
290 cache/pwl/rwl/WriteLog.cc
291 cache/pwl/rwl/LogEntry.cc
292 cache/pwl/rwl/LogOperation.cc
293 cache/pwl/rwl/ReadRequest.cc
294 cache/pwl/rwl/Request.cc)
295 endif()
296
297 add_library(librbd_plugin_pwl_cache SHARED
298 ${rbd_plugin_pwl_srcs})
299 target_link_libraries(librbd_plugin_pwl_cache PRIVATE
300 blk
301 ceph-common
302 cls_rbd_client
303 libneorados
304 librados
305 StdFilesystem::filesystem)
306
307 if(WITH_RBD_RWL)
308 target_link_libraries(librbd_plugin_pwl_cache
309 PUBLIC pmem::pmemobj
310 PRIVATE pmem::pmem)
311 endif()
312
313 set_target_properties(librbd_plugin_pwl_cache PROPERTIES
314 OUTPUT_NAME ceph_librbd_pwl_cache
315 VERSION 1.0.0
316 SOVERSION 1)
317 install(TARGETS librbd_plugin_pwl_cache DESTINATION ${librbd_plugins_dir})
318 add_dependencies(librbd_plugins librbd_plugin_pwl_cache)
319 endif()
320
321 add_library(librbd ${CEPH_SHARED}
322 librbd.cc)
323 if(WITH_LTTNG)
324 add_dependencies(librbd librbd-tp)
325 endif()
326
327 target_link_libraries(librbd PRIVATE
328 rbd_internal
329 rbd_types
330 journal
331 cls_rbd_client
332 cls_lock_client
333 cls_journal_client
334 libneorados
335 librados
336 ceph-common
337 pthread
338 ${CMAKE_DL_LIBS}
339 ${EXTRALIBS} ${GSSAPI_LIBRARIES})
340 if(HAVE_UDEV)
341 target_link_libraries(librbd PRIVATE
342 udev)
343 endif()
344 if(ENABLE_SHARED)
345 set_target_properties(librbd PROPERTIES
346 OUTPUT_NAME rbd
347 VERSION 1.17.0
348 SOVERSION 1
349 CXX_VISIBILITY_PRESET hidden
350 VISIBILITY_INLINES_HIDDEN ON)
351 if(NOT APPLE AND NOT WIN32)
352 set_property(TARGET librbd APPEND_STRING PROPERTY
353 LINK_FLAGS " -Wl,--exclude-libs,ALL")
354 endif()
355 endif(ENABLE_SHARED)
356 install(TARGETS librbd DESTINATION ${CMAKE_INSTALL_LIBDIR})