--- /dev/null
+# Find the native Rocksdb includes and library
+# This module defines
+# ROCKSDB_INCLUDE_DIR, where to find rocksdb/db.h, Set when
+# ROCKSDB_INCLUDE_DIR is found.
+# ROCKSDB_LIBRARIES, libraries to link against to use Rocksdb.
+# ROCKSDB_FOUND, If false, do not try to use Rocksdb.
+
+find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h)
+
+find_library(ROCKSDB_LIBRARIES rocksdb)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Rocksdb DEFAULT_MSG
+ ROCKSDB_LIBRARIES ROCKSDB_INCLUDE_DIR)
+
+mark_as_advanced(
+ ROCKSDB_INCLUDE_DIR
+ ROCKSDB_LIBRARIES)
# OSD/ObjectStore
# make rocksdb statically
-set(ROCKSDB_CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
+if (NOT WITH_SYSTEM_ROCKSDB)
+ set(ROCKSDB_CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
-if(ALLOCATOR STREQUAL "jemalloc")
- list(APPEND ROCKSDB_CMAKE_ARGS -DWITH_JEMALLOC=ON)
-endif()
+ if(ALLOCATOR STREQUAL "jemalloc")
+ list(APPEND ROCKSDB_CMAKE_ARGS -DWITH_JEMALLOC=ON)
+ endif()
-if (WITH_CCACHE AND CCACHE_FOUND)
- list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER=ccache)
- list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER_ARG1=${CMAKE_CXX_COMPILER})
-else(WITH_CCACHE AND CCACHE_FOUND)
- list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
-endif(WITH_CCACHE AND CCACHE_FOUND)
+ if (WITH_CCACHE AND CCACHE_FOUND)
+ list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER=ccache)
+ list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER_ARG1=${CMAKE_CXX_COMPILER})
+ else(WITH_CCACHE AND CCACHE_FOUND)
+ list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
+ endif(WITH_CCACHE AND CCACHE_FOUND)
-list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_AR=${CMAKE_AR})
-list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
+ list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_AR=${CMAKE_AR})
+ list(APPEND ROCKSDB_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
-if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
- list(APPEND ROCKSDB_CMAKE_ARGS -DFAIL_ON_WARNINGS=OFF)
-endif()
+ if (CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+ list(APPEND ROCKSDB_CMAKE_ARGS -DFAIL_ON_WARNINGS=OFF)
+ endif()
-# we use an external project and copy the sources to bin directory to ensure
-# that object files are built outside of the source tree.
-include(ExternalProject)
-ExternalProject_Add(rocksdb_ext
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb
- CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS}
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/rocksdb
- BUILD_COMMAND $(MAKE) rocksdblib
- INSTALL_COMMAND "true")
-
-# force rocksdb make to be called on each time
-ExternalProject_Add_Step(rocksdb_ext forcebuild
- DEPENDEES configure
- DEPENDERS build
- COMMAND "true"
- ALWAYS 1)
-
-set(ROCKSDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb/include)
-
-add_library(rocksdb STATIC IMPORTED)
-add_dependencies(rocksdb rocksdb_ext)
-set_property(TARGET rocksdb PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rocksdb/librocksdblib.a")
+ # we use an external project and copy the sources to bin directory to ensure
+ # that object files are built outside of the source tree.
+ include(ExternalProject)
+ ExternalProject_Add(rocksdb_ext
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb
+ CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS}
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/rocksdb
+ BUILD_COMMAND $(MAKE) rocksdblib
+ INSTALL_COMMAND "true")
+
+ # force rocksdb make to be called on each time
+ ExternalProject_Add_Step(rocksdb_ext forcebuild
+ DEPENDEES configure
+ DEPENDERS build
+ COMMAND "true"
+ ALWAYS 1)
+
+ set(ROCKSDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb/include)
+
+ add_library(rocksdb STATIC IMPORTED)
+ add_dependencies(rocksdb rocksdb_ext)
+ set_property(TARGET rocksdb PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rocksdb/librocksdblib.a")
+ set(ROCKSDB_LIBRARIES rocksdb)
+
+endif(NOT WITH_SYSTEM_ROCKSDB)
add_subdirectory(kv)
add_subdirectory(os)