]> git.proxmox.com Git - ceph.git/blob - ceph/src/os/CMakeLists.txt
feda6a23bc1fb279b5336c50f668833c4898514b
[ceph.git] / ceph / src / os / CMakeLists.txt
1 if(HAVE_LIBXFS)
2 set(libos_xfs_srcs
3 filestore/XfsFileStoreBackend.cc
4 fs/XFS.cc)
5 endif(HAVE_LIBXFS)
6
7 set(libos_srcs
8 ObjectStore.cc
9 Transaction.cc
10 filestore/chain_xattr.cc
11 filestore/BtrfsFileStoreBackend.cc
12 filestore/DBObjectMap.cc
13 filestore/FileJournal.cc
14 filestore/FileStore.cc
15 filestore/JournalThrottle.cc
16 filestore/GenericFileStoreBackend.cc
17 filestore/JournalingObjectStore.cc
18 filestore/HashIndex.cc
19 filestore/IndexManager.cc
20 filestore/LFNIndex.cc
21 filestore/WBThrottle.cc
22 filestore/ZFSFileStoreBackend.cc
23 memstore/MemStore.cc
24 kstore/KStore.cc
25 kstore/kstore_types.cc
26 fs/FS.cc
27 fs/aio.cc
28 ${libos_xfs_srcs})
29
30 if(HAVE_LIBAIO)
31 list(APPEND libos_srcs
32 bluestore/Allocator.cc
33 bluestore/BitmapFreelistManager.cc
34 bluestore/BlockDevice.cc
35 bluestore/BlueFS.cc
36 bluestore/bluefs_types.cc
37 bluestore/BlueRocksEnv.cc
38 bluestore/BlueStore.cc
39 bluestore/bluestore_types.cc
40 bluestore/FreelistManager.cc
41 bluestore/KernelDevice.cc
42 bluestore/StupidAllocator.cc
43 bluestore/BitMapAllocator.cc
44 bluestore/BitAllocator.cc
45 )
46 endif(HAVE_LIBAIO)
47
48 if(WITH_FUSE)
49 list(APPEND libos_srcs
50 FuseStore.cc)
51 endif(WITH_FUSE)
52
53 if(WITH_PMEM)
54 list(APPEND libos_srcs
55 bluestore/PMEMDevice.cc)
56 endif(WITH_PMEM)
57
58 if(WITH_SPDK)
59 list(APPEND libos_srcs
60 bluestore/NVMEDevice.cc)
61 ADD_DEFINITIONS(-D__SSE4_2__ -D__SSE4_1__ -D__SSSE3__ -D__SSE3__)
62 add_compile_options(-mcrc32 -msse3 -mssse3 -msse4.1 -msse4.2)
63 endif()
64
65 add_library(os STATIC ${libos_srcs} $<TARGET_OBJECTS:kv_objs>)
66
67 if(HAVE_LIBAIO)
68 target_link_libraries(os ${AIO_LIBRARIES})
69 endif(HAVE_LIBAIO)
70
71 if(WITH_FUSE)
72 target_link_libraries(os ${FUSE_LIBRARIES})
73 endif()
74
75 if(WITH_PMEM)
76 target_link_libraries(os ${PMEM_LIBRARY})
77 endif()
78
79 if(WITH_SPDK)
80 target_link_libraries(os
81 ${SPDK_LIBRARIES}
82 ${DPDK_LIBRARIES})
83 target_include_directories(os
84 PRIVATE
85 ${DPDK_INCLUDE_DIR})
86 endif(WITH_SPDK)
87
88 if(WITH_LTTNG)
89 add_dependencies(os objectstore-tp)
90 endif()
91
92 target_link_libraries(os kv)
93
94 add_dependencies(os compressor_plugins)
95 add_dependencies(os crypto_plugins)
96
97
98 if(HAVE_LIBAIO)
99 add_executable(ceph-bluestore-tool
100 bluestore/bluestore_tool.cc)
101 target_link_libraries(ceph-bluestore-tool
102 os global)
103 install(TARGETS ceph-bluestore-tool
104 DESTINATION bin)
105 endif()
106
107 if(WITH_SPDK)
108 include_directories("${CMAKE_SOURCE_DIR}/src/spdk/include")
109 add_custom_target(build_spdk
110 COMMAND
111 $(MAKE) DPDK_INC_DIR=${DPDK_INCLUDE_DIR}
112 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/spdk/lib
113 COMMENT "spdk building")
114 # TODO: should use add_library(spdk INTERFACE IMPORTED) instead in new cmake,
115 # if INTERFACE is supported.
116 foreach(lib nvme log env_dpdk util)
117 add_library(spdk_${lib} STATIC IMPORTED)
118 add_dependencies(spdk_${lib} build_spdk)
119 target_link_libraries(os LINK_PRIVATE spdk_${lib})
120 set_target_properties(spdk_${lib} PROPERTIES
121 IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/src/spdk/build/lib/libspdk_${lib}.a"
122 INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/spdk/include")
123 list(APPEND SPDK_LIBRARIES spdk_${lib})
124 endforeach()
125 endif(WITH_SPDK)
126
127 if(WITH_LTTNG AND WITH_EVENTTRACE)
128 add_dependencies(os eventtrace_tp)
129 endif()