]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: detect rocksdb's version
authorKefu Chai <kchai@redhat.com>
Tue, 19 Sep 2017 05:07:59 +0000 (13:07 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 19 Sep 2017 05:46:50 +0000 (13:46 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
cmake/modules/BuildRocksDB.cmake
cmake/modules/Findrocksdb.cmake

index bf8c34a2a6c145c6c69f101f46cdad5a8ff7b690..f1706e2d67eb445a3659f6594322dc9bfd99fa22 100644 (file)
@@ -45,4 +45,13 @@ macro(build_rocksdb)
   set_property(TARGET rocksdb PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rocksdb/librocksdb.a")
   set(ROCKSDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb/include)
   set(ROCKSDB_LIBRARIES rocksdb)
+  foreach(ver "MAJOR" "MINOR" "PATCH")
+    file(STRINGS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h" ROCKSDB_VER_${ver}_LINE
+      REGEX "^#define[ \t]+ROCKSDB_${ver}[ \t]+[0-9]+$")
+    string(REGEX REPLACE "^#define[ \t]+ROCKSDB_${ver}[ \t]+([0-9]+)$"
+      "\\1" ROCKSDB_VERSION_${ver} "${ROCKSDB_VER_${ver}_LINE}")
+    unset(ROCKDB_VER_${ver}_LINE)
+  endforeach()
+  set(ROCKSDB_VERSION_STRING
+    "${ROCKSDB_VERSION_MAJOR}.${ROCKSDB_VERSION_MINOR}.${ROCKSDB_VERSION_PATCH}")
 endmacro()
index e1aac5741132d3bbed1a1efc9ccca8f9b00f8dde..f8369f73fc029dc84b1221dbf3a5ed4a12937d13 100644 (file)
@@ -4,14 +4,31 @@
 #                       ROCKSDB_INCLUDE_DIR is found.
 #  ROCKSDB_LIBRARIES, libraries to link against to use Rocksdb.
 #  ROCKSDB_FOUND, If false, do not try to use Rocksdb.
+#  ROCKSDB_VERSION_STRING
+#  ROCKSDB_VERSION_MAJOR
+#  ROCKSDB_VERSION_MINOR
+#  ROCKSDB_VERSION_PATCH
 
 find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h)
 
 find_library(ROCKSDB_LIBRARIES rocksdb)
 
+if(ROCKSDB_INCLUDE_DIR AND EXISTS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h")
+  foreach(ver "MAJOR" "MINOR" "PATCH")
+    file(STRINGS "${ROCKSDB_INCLUDE_DIR}/version.h" ROCKSDB_VER_${ver}_LINE
+      REGEX "^#define[ \t]+ROCKSDB_${ver}[ \t]+[0-9]+$")
+    string(REGEX REPLACE "^#define[ \t]+ROCKSDB_${ver}[ \t]+([0-9]+)$"
+      "\\1" ROCKSDB_VERSION_${ver} "${ROCKDB_VER_${ver}_LINE}")
+    unset(${ROCKDB_VER_${ver}_LINE})
+  endforeach()
+  set(ROCKSDB_VERSION_STRING
+    "${ROCKSDB_VERSION_MAJOR}.${ROCKSDB_VERSION_MINOR}.${ROCKSDB_VERSION_PATCH}")
+endif()
+
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(rocksdb DEFAULT_MSG
-  ROCKSDB_LIBRARIES ROCKSDB_INCLUDE_DIR)
+find_package_handle_standard_args(rocksdb
+  REQUIRED_VARS ROCKSDB_LIBRARIES ROCKSDB_INCLUDE_DIR
+  VERSION_VAR ROCKSDB_VERSION_STRING)
 
 mark_as_advanced(
   ROCKSDB_INCLUDE_DIR