]> git.proxmox.com Git - ceph.git/blob - ceph/src/librbd/CMakeLists.txt
update source to Ceph Pacific 16.2.2
[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 journal/CreateRequest.cc
120 journal/DemoteRequest.cc
121 journal/ObjectDispatch.cc
122 journal/OpenRequest.cc
123 journal/PromoteRequest.cc
124 journal/RemoveRequest.cc
125 journal/Replay.cc
126 journal/ResetRequest.cc
127 journal/StandardPolicy.cc
128 journal/Utils.cc
129 managed_lock/AcquireRequest.cc
130 managed_lock/BreakRequest.cc
131 managed_lock/GetLockerRequest.cc
132 managed_lock/ReacquireRequest.cc
133 managed_lock/ReleaseRequest.cc
134 managed_lock/Utils.cc
135 migration/FileStream.cc
136 migration/HttpClient.cc
137 migration/HttpStream.cc
138 migration/ImageDispatch.cc
139 migration/NativeFormat.cc
140 migration/OpenSourceImageRequest.cc
141 migration/QCOWFormat.cc
142 migration/RawFormat.cc
143 migration/RawSnapshot.cc
144 migration/S3Stream.cc
145 migration/SourceSpecBuilder.cc
146 migration/Utils.cc
147 mirror/DemoteRequest.cc
148 mirror/DisableRequest.cc
149 mirror/EnableRequest.cc
150 mirror/GetInfoRequest.cc
151 mirror/GetStatusRequest.cc
152 mirror/GetUuidRequest.cc
153 mirror/ImageRemoveRequest.cc
154 mirror/ImageStateUpdateRequest.cc
155 mirror/PromoteRequest.cc
156 mirror/snapshot/CreateNonPrimaryRequest.cc
157 mirror/snapshot/CreatePrimaryRequest.cc
158 mirror/snapshot/DemoteRequest.cc
159 mirror/snapshot/GetImageStateRequest.cc
160 mirror/snapshot/ImageMeta.cc
161 mirror/snapshot/PromoteRequest.cc
162 mirror/snapshot/RemoveImageStateRequest.cc
163 mirror/snapshot/SetImageStateRequest.cc
164 mirror/snapshot/Types.cc
165 mirror/snapshot/UnlinkPeerRequest.cc
166 mirror/snapshot/Utils.cc
167 mirror/snapshot/WriteImageStateRequest.cc
168 object_map/CreateRequest.cc
169 object_map/DiffRequest.cc
170 object_map/InvalidateRequest.cc
171 object_map/LockRequest.cc
172 object_map/RefreshRequest.cc
173 object_map/RemoveRequest.cc
174 object_map/Request.cc
175 object_map/ResizeRequest.cc
176 object_map/SnapshotCreateRequest.cc
177 object_map/SnapshotRemoveRequest.cc
178 object_map/SnapshotRollbackRequest.cc
179 object_map/UnlockRequest.cc
180 object_map/UpdateRequest.cc
181 operation/DisableFeaturesRequest.cc
182 operation/EnableFeaturesRequest.cc
183 operation/FlattenRequest.cc
184 operation/MetadataRemoveRequest.cc
185 operation/MetadataSetRequest.cc
186 operation/MigrateRequest.cc
187 operation/ObjectMapIterate.cc
188 operation/RebuildObjectMapRequest.cc
189 operation/RenameRequest.cc
190 operation/Request.cc
191 operation/ResizeRequest.cc
192 operation/SnapshotCreateRequest.cc
193 operation/SnapshotProtectRequest.cc
194 operation/SnapshotRemoveRequest.cc
195 operation/SnapshotRenameRequest.cc
196 operation/SnapshotRollbackRequest.cc
197 operation/SnapshotUnprotectRequest.cc
198 operation/SnapshotLimitRequest.cc
199 operation/SparsifyRequest.cc
200 operation/TrimRequest.cc
201 plugin/Api.cc
202 trash/MoveRequest.cc
203 trash/RemoveRequest.cc
204 watcher/Notifier.cc
205 watcher/RewatchRequest.cc
206 ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
207
208 if(WITH_EVENTTRACE)
209 list(APPEND librbd_internal_srcs ../common/EventTrace.cc)
210 endif()
211
212 if(LINUX AND HAVE_LIBCRYPTSETUP)
213 list(APPEND librbd_internal_srcs
214 crypto/luks/EncryptionFormat.cc
215 crypto/luks/Header.cc
216 crypto/luks/FormatRequest.cc
217 crypto/luks/LoadRequest.cc)
218 endif()
219
220 add_library(rbd_api STATIC librbd.cc)
221 add_library(rbd_internal STATIC
222 ${librbd_internal_srcs}
223 $<TARGET_OBJECTS:rados_snap_set_diff_obj>)
224 if(WITH_LTTNG)
225 # librbd.cc includes tracing/librbd.h
226 add_dependencies(rbd_api librbd-tp)
227 # io/AioCompletion.cc includes tracing/librbd.h
228 add_dependencies(rbd_internal librbd-tp)
229 endif()
230 if(WITH_EVENTTRACE)
231 add_dependencies(rbd_internal eventtrace_tp)
232 endif()
233 target_link_libraries(rbd_internal PRIVATE
234 osdc rbd_types
235 OpenSSL::SSL)
236 target_include_directories(rbd_internal PRIVATE ${OPENSSL_INCLUDE_DIR})
237 if(LINUX AND HAVE_LIBCRYPTSETUP)
238 target_include_directories(rbd_internal PRIVATE ${LIBCRYPTSETUP_INCLUDE_DIR})
239 target_link_libraries(rbd_internal PRIVATE ${LIBCRYPTSETUP_LIBRARIES})
240 endif()
241
242 add_custom_target(librbd_plugins)
243 set(librbd_plugins_dir ${CEPH_INSTALL_PKGLIBDIR}/librbd)
244
245 set(rbd_plugin_parent_cache_srcs
246 cache/ParentCacheObjectDispatch.cc
247 plugin/ParentCache.cc)
248 add_library(librbd_plugin_parent_cache SHARED
249 ${rbd_plugin_parent_cache_srcs})
250 target_link_libraries(librbd_plugin_parent_cache PRIVATE
251 ceph_immutable_object_cache_lib ceph-common librbd
252 libneorados
253 librados)
254 set_target_properties(librbd_plugin_parent_cache PROPERTIES
255 OUTPUT_NAME ceph_librbd_parent_cache
256 VERSION 1.0.0
257 SOVERSION 1)
258 install(TARGETS librbd_plugin_parent_cache DESTINATION ${librbd_plugins_dir})
259 add_dependencies(librbd_plugins librbd_plugin_parent_cache)
260
261 if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
262 set(rbd_plugin_pwl_srcs
263 cache/WriteLogImageDispatch.cc
264 cache/pwl/AbstractWriteLog.cc
265 cache/pwl/DiscardRequest.cc
266 cache/pwl/ImageCacheState.cc
267 cache/pwl/InitRequest.cc
268 cache/pwl/LogEntry.cc
269 cache/pwl/LogMap.cc
270 cache/pwl/LogOperation.cc
271 cache/pwl/Request.cc
272 cache/pwl/ShutdownRequest.cc
273 cache/pwl/SyncPoint.cc
274 cache/pwl/Types.cc
275 plugin/WriteLogImageCache.cc)
276
277 if(WITH_RBD_SSD_CACHE)
278 set(rbd_plugin_pwl_srcs
279 ${rbd_plugin_pwl_srcs}
280 cache/pwl/ssd/LogEntry.cc
281 cache/pwl/ssd/LogOperation.cc
282 cache/pwl/ssd/ReadRequest.cc
283 cache/pwl/ssd/Request.cc
284 cache/pwl/ssd/WriteLog.cc)
285 endif()
286 if(WITH_RBD_RWL)
287 set(rbd_plugin_pwl_srcs
288 ${rbd_plugin_pwl_srcs}
289 cache/pwl/rwl/WriteLog.cc
290 cache/pwl/rwl/LogEntry.cc
291 cache/pwl/rwl/LogOperation.cc
292 cache/pwl/rwl/ReadRequest.cc
293 cache/pwl/rwl/Request.cc)
294 endif()
295
296 add_library(librbd_plugin_pwl_cache SHARED
297 ${rbd_plugin_pwl_srcs})
298 target_link_libraries(librbd_plugin_pwl_cache PRIVATE
299 blk
300 ceph-common
301 cls_rbd_client
302 libneorados
303 librados
304 StdFilesystem::filesystem)
305
306 if(WITH_RBD_RWL)
307 target_link_libraries(librbd_plugin_pwl_cache
308 PUBLIC pmem::pmemobj
309 PRIVATE pmem::pmem)
310 endif()
311
312 set_target_properties(librbd_plugin_pwl_cache PROPERTIES
313 OUTPUT_NAME ceph_librbd_pwl_cache
314 VERSION 1.0.0
315 SOVERSION 1)
316 install(TARGETS librbd_plugin_pwl_cache DESTINATION ${librbd_plugins_dir})
317 add_dependencies(librbd_plugins librbd_plugin_pwl_cache)
318 endif()
319
320 add_library(librbd ${CEPH_SHARED}
321 librbd.cc)
322 if(WITH_LTTNG)
323 add_dependencies(librbd librbd-tp)
324 endif()
325
326 target_link_libraries(librbd PRIVATE
327 rbd_internal
328 rbd_types
329 journal
330 cls_rbd_client
331 cls_lock_client
332 cls_journal_client
333 libneorados
334 librados
335 ceph-common
336 pthread
337 ${CMAKE_DL_LIBS}
338 ${EXTRALIBS} ${GSSAPI_LIBRARIES})
339 if(HAVE_UDEV)
340 target_link_libraries(librbd PRIVATE
341 udev)
342 endif()
343 if(ENABLE_SHARED)
344 set_target_properties(librbd PROPERTIES
345 OUTPUT_NAME rbd
346 VERSION 1.16.0
347 SOVERSION 1
348 CXX_VISIBILITY_PRESET hidden
349 VISIBILITY_INLINES_HIDDEN ON)
350 if(NOT APPLE AND NOT WIN32)
351 set_property(TARGET librbd APPEND_STRING PROPERTY
352 LINK_FLAGS " -Wl,--exclude-libs,ALL")
353 endif()
354 endif(ENABLE_SHARED)
355 install(TARGETS librbd DESTINATION ${CMAKE_INSTALL_LIBDIR})