]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: Add the support to use system PMDK library 28802/head
authorlixiaoy1 <xiaoyan.li@intel.com>
Wed, 10 Jul 2019 15:30:47 +0000 (11:30 -0400)
committerlixiaoy1 <xiaoyan.li@intel.com>
Wed, 10 Jul 2019 15:43:27 +0000 (11:43 -0400)
Signed-off-by: Scott Peterson <scott.d.peterson@intel.com>
Signed-off-by: Xiaoyan Li <xiaoyan.li@intel.com>
CMakeLists.txt
cmake/modules/Findpmem.cmake [new file with mode: 0644]
src/CMakeLists.txt
src/os/CMakeLists.txt

index f2041053b97bc4315683a0f2dcdf435cc6bdb7db..9e614ef6b3910950b08f84e75f6a614bcb2b0364 100644 (file)
@@ -272,6 +272,9 @@ include(CMakeDependentOption)
 CMAKE_DEPENDENT_OPTION(WITH_BLUESTORE_PMEM "Enable PMDK libraries" OFF
   "WITH_BLUESTORE" OFF)
 
+CMAKE_DEPENDENT_OPTION(WITH_SYSTEM_PMDK "Require and build with system PMDK" OFF
+  "WITH_BLUESTORE_PMEM" OFF)
+
 if(WITH_BLUESTORE_PMEM)
   set(HAVE_BLUESTORE_PMEM ON)
 endif()
diff --git a/cmake/modules/Findpmem.cmake b/cmake/modules/Findpmem.cmake
new file mode 100644 (file)
index 0000000..8bf3c02
--- /dev/null
@@ -0,0 +1,45 @@
+# - Find pmem
+#
+# PMEM_INCLUDE_DIR - Where to find libpmem.h
+# PMEM_LIBRARIES - List of libraries when using pmdk.
+# pmem_FOUND - True if pmem found.
+# PMEMOBJ_INCLUDE_DIR - Where to find libpmemobj.h
+# PMEMOBJ_LIBRARIES - List of libraries when using pmdk obj.
+# pmemobj_FOUND - True if pmemobj found.
+
+find_path(PMEM_INCLUDE_DIR libpmem.h)
+find_library(PMEM_LIBRARIES pmem)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(pmem
+  DEFAULT_MSG PMEM_LIBRARIES PMEM_INCLUDE_DIR)
+
+mark_as_advanced(
+  PMEM_INCLUDE_DIR
+  PMEM_LIBRARIES)
+
+if(pmem_FOUND AND NOT TARGET pmem::pmem)
+  add_library(pmem::pmem UNKNOWN IMPORTED)
+  set_target_properties(pmem::pmem PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES "${PMEM_INCLUDE_DIR}"
+    IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+    IMPORTED_LOCATION "${PMEM_LIBRARIES}")
+endif()
+
+find_path(PMEMOBJ_INCLUDE_DIR libpmemobj.h)
+find_library(PMEMOBJ_LIBRARIES pmemobj)
+
+find_package_handle_standard_args(pmemobj
+  DEFAULT_MSG PMEMOBJ_LIBRARIES PMEMOBJ_INCLUDE_DIR)
+
+mark_as_advanced(
+  PMEMOBJ_INCLUDE_DIR
+  PMEMOBJ_LIBRARIES)
+
+if(pmemobj_FOUND AND NOT TARGET pmem::pmemobj)
+  add_library(pmem::pmemobj UNKNOWN IMPORTED)
+  set_target_properties(pmem::pmemobj PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES "${PMEMOBJ_INCLUDE_DIR}"
+    IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+    IMPORTED_LOCATION "${PMEMOBJ_LIBRARIES}")
+endif()
index 7d353a04f2e7fd809f0e3725ee41da9c70d74236..80c07095dfb4eb17bf8791090b91c7d6ef59789f 100644 (file)
@@ -403,6 +403,15 @@ if(WITH_DPDK)
   list(APPEND ceph_common_deps common_async_dpdk)
 endif()
 
+if(WITH_BLUESTORE_PMEM)
+  if(WITH_SYSTEM_PMDK)
+    find_package(pmem REQUIRED)
+  else()
+    include(Buildpmem)
+    build_pmem()
+  endif()
+endif()
+
 add_library(common STATIC ${ceph_common_objs})
 target_link_libraries(common ${ceph_common_deps})
 
index 5177d1f546793b1563faf1bcae83955df93c16f7..a1dead68051f9edb3b802d5ada91b4048c6a5da7 100644 (file)
@@ -122,8 +122,6 @@ if(WITH_BLUESTORE)
 endif()
 
 if(WITH_BLUESTORE_PMEM)
-  include(Buildpmem)
-  build_pmem()
   target_link_libraries(os pmem::pmem)
 endif()