]> git.proxmox.com Git - ceph.git/blob - ceph/src/os/CMakeLists.txt
import 15.2.9
[ceph.git] / ceph / src / os / CMakeLists.txt
1 set(libos_srcs
2 ObjectStore.cc
3 Transaction.cc
4 filestore/chain_xattr.cc
5 filestore/BtrfsFileStoreBackend.cc
6 filestore/DBObjectMap.cc
7 filestore/FileJournal.cc
8 filestore/FileStore.cc
9 filestore/JournalThrottle.cc
10 filestore/GenericFileStoreBackend.cc
11 filestore/JournalingObjectStore.cc
12 filestore/HashIndex.cc
13 filestore/IndexManager.cc
14 filestore/LFNIndex.cc
15 filestore/WBThrottle.cc
16 filestore/os_xattr.c
17 memstore/MemStore.cc
18 kstore/KStore.cc
19 kstore/kstore_types.cc
20 fs/FS.cc)
21
22 if(WITH_BLUESTORE)
23 list(APPEND libos_srcs
24 bluestore/Allocator.cc
25 bluestore/BitmapFreelistManager.cc
26 bluestore/BlockDevice.cc
27 bluestore/BlueFS.cc
28 bluestore/bluefs_types.cc
29 bluestore/BlueRocksEnv.cc
30 bluestore/BlueStore.cc
31 bluestore/bluestore_types.cc
32 bluestore/fastbmap_allocator_impl.cc
33 bluestore/FreelistManager.cc
34 bluestore/StupidAllocator.cc
35 bluestore/BitmapAllocator.cc
36 bluestore/AvlAllocator.cc
37 bluestore/HybridAllocator.cc
38 bluestore/io_uring.cc
39 )
40 endif(WITH_BLUESTORE)
41
42 if(HAVE_LIBAIO OR HAVE_POSIXAIO)
43 list(APPEND libos_srcs
44 bluestore/KernelDevice.cc
45 bluestore/aio.cc)
46 endif()
47
48 if(WITH_FUSE)
49 list(APPEND libos_srcs
50 FuseStore.cc)
51 endif(WITH_FUSE)
52
53 if(WITH_BLUESTORE_PMEM)
54 list(APPEND libos_srcs
55 bluestore/PMEMDevice.cc)
56 endif()
57
58 if(HAVE_LIBXFS)
59 list(APPEND libos_srcs
60 filestore/XfsFileStoreBackend.cc
61 fs/XFS.cc)
62 endif()
63
64 if(HAVE_LIBZFS)
65 add_library(os_zfs_objs OBJECT
66 filestore/ZFSFileStoreBackend.cc
67 fs/ZFS.cc)
68 target_include_directories(os_zfs_objs SYSTEM PRIVATE
69 ${ZFS_INCLUDE_DIRS})
70 list(APPEND libos_srcs $<TARGET_OBJECTS:os_zfs_objs>)
71 endif()
72
73 if(WITH_SPDK)
74 list(APPEND libos_srcs
75 bluestore/NVMEDevice.cc)
76 endif()
77
78 add_library(os STATIC ${libos_srcs})
79
80 target_link_libraries(os heap_profiler kv)
81
82 if(WITH_BLUEFS)
83 add_library(bluefs SHARED
84 bluestore/BlueRocksEnv.cc)
85 target_include_directories(bluefs SYSTEM PUBLIC
86 $<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
87 target_link_libraries(bluefs global)
88 install(TARGETS bluefs DESTINATION lib)
89 endif(WITH_BLUEFS)
90
91 if(HAVE_LIBAIO)
92 target_link_libraries(os ${AIO_LIBRARIES})
93 endif(HAVE_LIBAIO)
94
95 if(WITH_FUSE)
96 target_link_libraries(os FUSE::FUSE)
97 endif()
98
99 if(HAVE_LIBZFS)
100 target_link_libraries(os ${ZFS_LIBRARIES})
101 endif()
102
103 if(WITH_SPDK)
104 target_link_libraries(os
105 ${SPDK_LIBRARIES})
106 endif()
107
108 if(WITH_LTTNG)
109 add_dependencies(os objectstore-tp)
110 add_dependencies(os bluestore-tp)
111 endif()
112
113 target_link_libraries(os kv)
114
115 add_dependencies(os compressor_plugins)
116 add_dependencies(os crypto_plugins)
117
118
119 if(WITH_BLUESTORE)
120 add_executable(ceph-bluestore-tool
121 bluestore/bluestore_tool.cc)
122 target_link_libraries(ceph-bluestore-tool
123 os global)
124 install(TARGETS ceph-bluestore-tool
125 DESTINATION bin)
126 endif()
127
128 if(WITH_BLUESTORE_PMEM)
129 target_link_libraries(os pmem::pmem)
130 endif()
131
132 if(WITH_EVENTTRACE)
133 add_dependencies(os eventtrace_tp)
134 endif()
135
136 if(WITH_LIBURING)
137 include(ExternalProject)
138 if("${CMAKE_GENERATOR}" MATCHES "Make")
139 set(make_cmd "$(MAKE)")
140 else()
141 set(make_cmd "make")
142 endif()
143 ExternalProject_Add(liburing_ext
144 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/src/
145 GIT_REPOSITORY http://git.kernel.dk/liburing
146 GIT_TAG "4e360f71131918c36774f51688e5c65dea8d43f2"
147 SOURCE_DIR ${CMAKE_BINARY_DIR}/src/liburing
148 CONFIGURE_COMMAND <SOURCE_DIR>/configure
149 BUILD_COMMAND env CC=${CMAKE_C_COMPILER} ${make_cmd} -C src -s
150 BUILD_IN_SOURCE 1
151 INSTALL_COMMAND "")
152 unset(make_cmd)
153 add_library(liburing STATIC IMPORTED GLOBAL)
154 add_dependencies(liburing liburing_ext)
155 set_target_properties(liburing PROPERTIES
156 IMPORTED_LINK_INTERFACE_LANGUAGES "C"
157 IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/src/liburing/src/liburing.a")
158 target_link_libraries(os liburing)
159 target_include_directories(os SYSTEM PRIVATE "${CMAKE_BINARY_DIR}/src/liburing/src/include")
160 endif(WITH_LIBURING)