]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: Build libpmem from source code. 17462/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 19 Oct 2017 16:44:09 +0000 (00:44 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Thu, 19 Oct 2017 16:44:09 +0000 (00:44 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
CMakeLists.txt
cmake/modules/Findpmem.cmake [deleted file]
src/os/CMakeLists.txt
src/os/bluestore/BlockDevice.cc
src/os/bluestore/PMEMDevice.cc

index 9ff17a8f754f753f41b9037d35230587832cae3a..b69aeb34e81b4f61164f731fabcbeb1d779675c3 100644 (file)
@@ -226,10 +226,9 @@ if(WITH_SPDK)
 endif(WITH_SPDK)
 
 option(WITH_PMEM "Enable PMEM" OFF)
-if(WITH_PMEM)
-  find_package(pmem REQUIRED)
-  set(HAVE_PMEM ${PMEM_FOUND})
-endif(WITH_PMEM)
+if (WITH_PMEM)
+  set(HAVE_PMEM ON)
+endif()
 
 option(WITH_BLUEFS "libbluefs library" OFF)
 
diff --git a/cmake/modules/Findpmem.cmake b/cmake/modules/Findpmem.cmake
deleted file mode 100644 (file)
index efcf682..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# Try to find libpmem
-#
-# Once done, this will define
-#
-# PMEM_FOUND
-# PMEM_INCLUDE_DIR
-# PMEM_LIBRARY
-
-find_path(PMEM_INCLUDE_DIR NAMES libpmem.h)
-find_library(PMEM_LIBRARY NAMES pmem)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(pmem DEFAULT_MSG PMEM_LIBRARY PMEM_INCLUDE_DIR)
-
-mark_as_advanced(PMEM_INCLUDE_DIR PMEM_LIBRARY)
index ad2940449ac2018fd4088c89b18fa77a12a3d2d4..1e1a1a84cb51ae38b090842f7c8bc62acead9109 100644 (file)
@@ -85,10 +85,6 @@ if(WITH_FUSE)
   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()
@@ -141,6 +137,31 @@ if(WITH_SPDK)
   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 "dd5b62dbc2cbbe048087dea"
+    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")
+  target_link_libraries(os pmem)
+  target_include_directories(os PRIVATE "${CMAKE_BINARY_DIR}/src/nvml/src/include")
+endif(WITH_PMEM)
+
 if(WITH_LTTNG AND WITH_EVENTTRACE)
   add_dependencies(os eventtrace_tp)
 endif()
index ca81952290e029a76301fdc13113796fb08ac659..b6f4dd8a103034b7ab16b68c0f75d4ac9f319207 100644 (file)
@@ -24,7 +24,7 @@
 
 #if defined(HAVE_PMEM)
 #include "PMEMDevice.h"
-#include <libpmem.h>
+#include "libpmem.h"
 #endif
 
 #include "common/debug.h"
index 41201e07ef7c96b67ecdd9b9cd1e2e0ed2faf022..11f66706a9c348c29fbcddab4132663a99677809 100644 (file)
@@ -18,9 +18,9 @@
 #include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <libpmem.h>
 
 #include "PMEMDevice.h"
+#include "libpmem.h"
 #include "include/types.h"
 #include "include/compat.h"
 #include "include/stringify.h"