]> git.proxmox.com Git - ceph.git/blame - ceph/src/librbd/CMakeLists.txt
import quincy beta 17.1.0
[ceph.git] / ceph / src / librbd / CMakeLists.txt
CommitLineData
f67539c2 1set(librbd_types_srcs
7c673cae
FG
2 journal/Types.cc
3 mirroring_watcher/Types.cc
11fdf7f2 4 trash_watcher/Types.cc
7c673cae
FG
5 watcher/Types.cc
6 WatchNotifyTypes.cc)
7
f67539c2
TL
8if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
9 list(APPEND librbd_types_srcs cache/pwl/Types.cc)
10endif()
11
12add_library(rbd_types STATIC
13 ${librbd_types_srcs})
14
15if (WITH_RBD_RWL)
16 target_link_libraries(rbd_types
17 PUBLIC pmem::pmemobj)
18endif()
19
7c673cae 20set(librbd_internal_srcs
f67539c2 21 AsioEngine.cc
7c673cae 22 AsyncObjectThrottle.cc
7c673cae 23 AsyncRequest.cc
f6b5b4d7 24 ConfigWatcher.cc
11fdf7f2 25 DeepCopyRequest.cc
7c673cae
FG
26 ExclusiveLock.cc
27 ImageCtx.cc
28 ImageState.cc
29 ImageWatcher.cc
30 internal.cc
31 Journal.cc
32 LibrbdAdminSocketHook.cc
7c673cae
FG
33 ManagedLock.cc
34 MirroringWatcher.cc
35 ObjectMap.cc
36 Operations.cc
f67539c2 37 PluginRegistry.cc
11fdf7f2 38 TrashWatcher.cc
7c673cae
FG
39 Utils.cc
40 Watcher.cc
11fdf7f2 41 api/Config.cc
7c673cae 42 api/DiffIterate.cc
11fdf7f2 43 api/Group.cc
7c673cae 44 api/Image.cc
f67539c2 45 api/Io.cc
11fdf7f2 46 api/Migration.cc
7c673cae 47 api/Mirror.cc
11fdf7f2
TL
48 api/Namespace.cc
49 api/Pool.cc
50 api/PoolMetadata.cc
51 api/Snapshot.cc
52 api/Trash.cc
f67539c2
TL
53 api/Utils.cc
54 asio/ContextWQ.cc
7c673cae 55 cache/ImageWriteback.cc
11fdf7f2 56 cache/ObjectCacherObjectDispatch.cc
9f95a23c 57 cache/ObjectCacherWriteback.cc
9f95a23c 58 cache/WriteAroundObjectDispatch.cc
f67539c2
TL
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
11fdf7f2
TL
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
7c673cae 75 exclusive_lock/AutomaticPolicy.cc
f67539c2 76 exclusive_lock/ImageDispatch.cc
7c673cae
FG
77 exclusive_lock/PreAcquireRequest.cc
78 exclusive_lock/PostAcquireRequest.cc
79 exclusive_lock/PreReleaseRequest.cc
80 exclusive_lock/StandardPolicy.cc
11fdf7f2
TL
81 image/AttachChildRequest.cc
82 image/AttachParentRequest.cc
7c673cae
FG
83 image/CloneRequest.cc
84 image/CloseRequest.cc
85 image/CreateRequest.cc
11fdf7f2
TL
86 image/DetachChildRequest.cc
87 image/DetachParentRequest.cc
9f95a23c 88 image/GetMetadataRequest.cc
11fdf7f2 89 image/ListWatchersRequest.cc
7c673cae 90 image/OpenRequest.cc
11fdf7f2 91 image/PreRemoveRequest.cc
7c673cae
FG
92 image/RefreshParentRequest.cc
93 image/RefreshRequest.cc
94 image/RemoveRequest.cc
95 image/SetFlagsRequest.cc
96 image/SetSnapRequest.cc
11fdf7f2 97 image/ValidatePoolRequest.cc
7c673cae
FG
98 image_watcher/NotifyLockOwner.cc
99 io/AioCompletion.cc
31f18b77 100 io/AsyncOperation.cc
7c673cae 101 io/CopyupRequest.cc
f6b5b4d7 102 io/FlushTracker.cc
f67539c2 103 io/ImageDispatch.cc
11fdf7f2 104 io/ImageDispatchSpec.cc
f67539c2 105 io/ImageDispatcher.cc
7c673cae 106 io/ImageRequest.cc
11fdf7f2
TL
107 io/ObjectDispatch.cc
108 io/ObjectDispatchSpec.cc
109 io/ObjectDispatcher.cc
7c673cae 110 io/ObjectRequest.cc
f67539c2
TL
111 io/QosImageDispatch.cc
112 io/QueueImageDispatch.cc
7c673cae 113 io/ReadResult.cc
f67539c2 114 io/RefreshImageDispatch.cc
9f95a23c 115 io/SimpleSchedulerObjectDispatch.cc
f67539c2 116 io/Types.cc
11fdf7f2 117 io/Utils.cc
f67539c2 118 io/WriteBlockImageDispatch.cc
20effc67 119 io/IoOperations.cc
7c673cae
FG
120 journal/CreateRequest.cc
121 journal/DemoteRequest.cc
11fdf7f2 122 journal/ObjectDispatch.cc
7c673cae
FG
123 journal/OpenRequest.cc
124 journal/PromoteRequest.cc
125 journal/RemoveRequest.cc
126 journal/Replay.cc
11fdf7f2 127 journal/ResetRequest.cc
7c673cae
FG
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
f67539c2
TL
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
7c673cae
FG
148 mirror/DemoteRequest.cc
149 mirror/DisableRequest.cc
150 mirror/EnableRequest.cc
151 mirror/GetInfoRequest.cc
152 mirror/GetStatusRequest.cc
9f95a23c
TL
153 mirror/GetUuidRequest.cc
154 mirror/ImageRemoveRequest.cc
155 mirror/ImageStateUpdateRequest.cc
7c673cae 156 mirror/PromoteRequest.cc
9f95a23c
TL
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
7c673cae 169 object_map/CreateRequest.cc
9f95a23c 170 object_map/DiffRequest.cc
7c673cae
FG
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
11fdf7f2 187 operation/MigrateRequest.cc
7c673cae
FG
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
11fdf7f2 200 operation/SparsifyRequest.cc
7c673cae 201 operation/TrimRequest.cc
f67539c2 202 plugin/Api.cc
11fdf7f2 203 trash/MoveRequest.cc
eafe8130 204 trash/RemoveRequest.cc
7c673cae
FG
205 watcher/Notifier.cc
206 watcher/RewatchRequest.cc
207 ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
208
9f95a23c
TL
209if(WITH_EVENTTRACE)
210 list(APPEND librbd_internal_srcs ../common/EventTrace.cc)
211endif()
212
f67539c2
TL
213if(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)
9f95a23c
TL
219endif()
220
7c673cae
FG
221add_library(rbd_api STATIC librbd.cc)
222add_library(rbd_internal STATIC
223 ${librbd_internal_srcs}
224 $<TARGET_OBJECTS:rados_snap_set_diff_obj>)
225if(WITH_LTTNG)
11fdf7f2
TL
226 # librbd.cc includes tracing/librbd.h
227 add_dependencies(rbd_api librbd-tp)
228 # io/AioCompletion.cc includes tracing/librbd.h
7c673cae
FG
229 add_dependencies(rbd_internal librbd-tp)
230endif()
9f95a23c 231if(WITH_EVENTTRACE)
11fdf7f2
TL
232 add_dependencies(rbd_internal eventtrace_tp)
233endif()
234target_link_libraries(rbd_internal PRIVATE
f67539c2
TL
235 osdc rbd_types
236 OpenSSL::SSL)
237target_include_directories(rbd_internal PRIVATE ${OPENSSL_INCLUDE_DIR})
238if(LINUX AND HAVE_LIBCRYPTSETUP)
239 target_include_directories(rbd_internal PRIVATE ${LIBCRYPTSETUP_INCLUDE_DIR})
240 target_link_libraries(rbd_internal PRIVATE ${LIBCRYPTSETUP_LIBRARIES})
241endif()
242
243add_custom_target(librbd_plugins)
244set(librbd_plugins_dir ${CEPH_INSTALL_PKGLIBDIR}/librbd)
245
246set(rbd_plugin_parent_cache_srcs
247 cache/ParentCacheObjectDispatch.cc
248 plugin/ParentCache.cc)
249add_library(librbd_plugin_parent_cache SHARED
250 ${rbd_plugin_parent_cache_srcs})
251target_link_libraries(librbd_plugin_parent_cache PRIVATE
252 ceph_immutable_object_cache_lib ceph-common librbd
253 libneorados
254 librados)
255set_target_properties(librbd_plugin_parent_cache PROPERTIES
256 OUTPUT_NAME ceph_librbd_parent_cache
257 VERSION 1.0.0
258 SOVERSION 1)
259install(TARGETS librbd_plugin_parent_cache DESTINATION ${librbd_plugins_dir})
260add_dependencies(librbd_plugins librbd_plugin_parent_cache)
261
262if(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()
7c673cae 312
f67539c2
TL
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)
9f95a23c
TL
319endif()
320
7c673cae
FG
321add_library(librbd ${CEPH_SHARED}
322 librbd.cc)
11fdf7f2
TL
323if(WITH_LTTNG)
324 add_dependencies(librbd librbd-tp)
325endif()
7c673cae 326
11fdf7f2 327target_link_libraries(librbd PRIVATE
7c673cae
FG
328 rbd_internal
329 rbd_types
330 journal
f67539c2
TL
331 cls_rbd_client
332 cls_lock_client
333 cls_journal_client
334 libneorados
11fdf7f2 335 librados
7c673cae
FG
336 ceph-common
337 pthread
338 ${CMAKE_DL_LIBS}
11fdf7f2 339 ${EXTRALIBS} ${GSSAPI_LIBRARIES})
7c673cae 340if(HAVE_UDEV)
11fdf7f2 341 target_link_libraries(librbd PRIVATE
7c673cae
FG
342 udev)
343endif()
344if(ENABLE_SHARED)
345 set_target_properties(librbd PROPERTIES
346 OUTPUT_NAME rbd
20effc67 347 VERSION 1.17.0
7c673cae 348 SOVERSION 1
11fdf7f2
TL
349 CXX_VISIBILITY_PRESET hidden
350 VISIBILITY_INLINES_HIDDEN ON)
f67539c2 351 if(NOT APPLE AND NOT WIN32)
11fdf7f2
TL
352 set_property(TARGET librbd APPEND_STRING PROPERTY
353 LINK_FLAGS " -Wl,--exclude-libs,ALL")
354 endif()
7c673cae
FG
355endif(ENABLE_SHARED)
356install(TARGETS librbd DESTINATION ${CMAKE_INSTALL_LIBDIR})