]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/os/CMakeLists.txt
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / os / CMakeLists.txt
index e25f95a7fd9917100e278057f1a63fdc57417292..8f5d6b70791a527580234cacdc482b62465d1969 100644 (file)
@@ -18,7 +18,7 @@ set(libos_srcs
   kstore/kstore_types.cc
   fs/FS.cc)
 
-if(HAVE_LIBAIO)
+if(WITH_BLUESTORE)
   list(APPEND libos_srcs
     bluestore/Allocator.cc
     bluestore/BitmapFreelistManager.cc
@@ -30,12 +30,16 @@ if(HAVE_LIBAIO)
     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
@@ -57,7 +61,7 @@ if(HAVE_LIBZFS)
   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()
@@ -65,39 +69,39 @@ 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)
@@ -109,7 +113,7 @@ add_dependencies(os compressor_plugins)
 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
@@ -118,25 +122,31 @@ if(HAVE_LIBAIO)
     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)