kstore/kstore_types.cc
fs/FS.cc)
-if(HAVE_LIBAIO)
+if(WITH_BLUESTORE)
list(APPEND libos_srcs
bluestore/Allocator.cc
bluestore/BitmapFreelistManager.cc
bluestore/bluestore_types.cc
bluestore/fastbmap_allocator_impl.cc
bluestore/FreelistManager.cc
- bluestore/KernelDevice.cc
bluestore/StupidAllocator.cc
bluestore/BitmapAllocator.cc
- bluestore/aio.cc
)
-endif(HAVE_LIBAIO)
+endif(WITH_BLUESTORE)
+
+if(HAVE_LIBAIO OR HAVE_POSIXAIO)
+ list(APPEND libos_srcs
+ bluestore/KernelDevice.cc
+ bluestore/aio.cc)
+endif()
if(WITH_FUSE)
list(APPEND libos_srcs
add_library(os_zfs_objs OBJECT
filestore/ZFSFileStoreBackend.cc
fs/ZFS.cc)
- target_include_directories(os_zfs_objs PRIVATE
+ target_include_directories(os_zfs_objs SYSTEM PRIVATE
${ZFS_INCLUDE_DIRS})
list(APPEND libos_srcs $<TARGET_OBJECTS:os_zfs_objs>)
endif()
if(WITH_SPDK)
list(APPEND libos_srcs
bluestore/NVMEDevice.cc)
- ADD_DEFINITIONS(-D__SSE4_2__ -D__SSE4_1__ -D__SSSE3__ -D__SSE3__)
- add_compile_options(-mcrc32 -msse3 -mssse3 -msse4.1 -msse4.2)
endif()
add_library(os STATIC ${libos_srcs}
- $<TARGET_OBJECTS:kv_objs> $<TARGET_OBJECTS:heap_profiler_objs>)
+ $<TARGET_OBJECTS:kv_objs>)
+target_link_libraries(os heap_profiler)
+if(WITH_BLUEFS)
+ add_library(bluefs SHARED
+ bluestore/BlueRocksEnv.cc)
+ target_include_directories(bluefs SYSTEM PUBLIC
+ $<TARGET_PROPERTY:RocksDB::RocksDB,INTERFACE_INCLUDE_DIRECTORIES>)
+ target_link_libraries(bluefs global)
+ install(TARGETS bluefs DESTINATION lib)
+endif(WITH_BLUEFS)
if(HAVE_LIBAIO)
target_link_libraries(os ${AIO_LIBRARIES})
endif(HAVE_LIBAIO)
if(WITH_FUSE)
+ target_include_directories(os SYSTEM PRIVATE ${FUSE_INCLUDE_DIRS})
target_link_libraries(os ${FUSE_LIBRARIES})
endif()
-if(WITH_PMEM)
- target_link_libraries(os ${PMEM_LIBRARY})
-endif()
-
if(HAVE_LIBZFS)
target_link_libraries(os ${ZFS_LIBRARIES})
endif()
if(WITH_SPDK)
target_link_libraries(os
- ${SPDK_LIBRARIES}
- ${DPDK_LIBRARIES})
- target_include_directories(os
- PRIVATE
- ${DPDK_INCLUDE_DIR})
-endif(WITH_SPDK)
+ ${SPDK_LIBRARIES})
+endif()
if(WITH_LTTNG)
add_dependencies(os objectstore-tp)
add_dependencies(os crypto_plugins)
-if(HAVE_LIBAIO)
+if(WITH_BLUESTORE)
add_executable(ceph-bluestore-tool
bluestore/bluestore_tool.cc)
target_link_libraries(ceph-bluestore-tool
DESTINATION bin)
endif()
-if(WITH_SPDK)
- include_directories("${CMAKE_SOURCE_DIR}/src/spdk/include")
- add_custom_target(build_spdk
- COMMAND
- $(MAKE) DPDK_INC_DIR=${DPDK_INCLUDE_DIR}
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/spdk/lib
- COMMENT "spdk building")
- # TODO: should use add_library(spdk INTERFACE IMPORTED) instead in new cmake,
- # if INTERFACE is supported.
- foreach(lib nvme log env_dpdk util)
- add_library(spdk_${lib} STATIC IMPORTED)
- add_dependencies(spdk_${lib} build_spdk)
- target_link_libraries(os LINK_PRIVATE spdk_${lib})
- set_target_properties(spdk_${lib} PROPERTIES
- IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/src/spdk/build/lib/libspdk_${lib}.a"
- INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/spdk/include")
- list(APPEND SPDK_LIBRARIES spdk_${lib})
- endforeach()
-endif(WITH_SPDK)
+if(WITH_PMEM)
+ include(ExternalProject)
+ ExternalProject_Add(nvml_ext
+ DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/src/
+ GIT_REPOSITORY "https://github.com/ceph/nvml.git"
+ GIT_TAG "dd622819dd4ee97d3920f913c70be"
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/src/nvml
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND $(MAKE)
+ BUILD_IN_SOURCE 1
+ INSTALL_COMMAND "true")
+
+ ExternalProject_Add_Step(nvml_ext forcebuild
+ DEPENDEES configure
+ DEPENDERS build
+ COMMAND "true"
+ ALWAYS 1)
+ add_library(pmem STATIC IMPORTED GLOBAL)
+ add_dependencies(pmem nvml_ext)
+ set_target_properties(pmem PROPERTIES
+ IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/src/nvml/src/nondebug/libpmem.a"
+ INTERFACE_LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+ target_link_libraries(os pmem)
+ target_include_directories(os SYSTEM PRIVATE "${CMAKE_BINARY_DIR}/src/nvml/src/include")
+endif(WITH_PMEM)
if(WITH_LTTNG AND WITH_EVENTTRACE)
add_dependencies(os eventtrace_tp)