mirror of
https://github.com/ceph/ceph
synced 2025-01-28 14:03:21 +00:00
2dc0f86227
before this change, we assume that the variable set if rados::radospp is found will be radospp_FOUND, but this is a feature cmake 3, see https://cmake.org/cmake/help/v3.3/module/FindPackageHandleStandardArgs.html while the cmake shipped by centos is cmake 2.8.12, where the variable name will be <UPPERCASED_NAME>_FOUND, see https://cmake.org/cmake/help/v2.8.12/cmake.html#module:FindPackageHandleStandardArgs in the test of test_envlibrados_for_rocksdb.sh, we are using cmake not the cmake3 offered by EPEL7, so RADOSPP_FOUND will be set instead. that's why executable env_librados_test will fail to link against rados::radospp. as rados::radospp won't be defined if radospp_FOUND is not defined/set. after this change, the 2nd mode of FIND_PACKAGE_HANDLE_STANDARD_ARGS() is used instead to ensure that radospp_FOUND is defined even if cmake 2.8.12 is used. also, the message() commands for debugging purpose are removed. Signed-off-by: Kefu Chai <kchai@redhat.com>
70 lines
2.1 KiB
Diff
70 lines
2.1 KiB
Diff
From 7535e5f47353658f966eb4dce344154678463e04 Mon Sep 17 00:00:00 2001
|
|
From: Kefu Chai <tchaikov@gmail.com>
|
|
Date: Mon, 29 Oct 2018 19:14:54 +0800
|
|
Subject: [PATCH] cmake: add Findrados.cmake and use it
|
|
|
|
ceph has extracted libradospp out from librados. the former offers the
|
|
C++ API, while the latter offers the C API.
|
|
|
|
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
|
|
---
|
|
CMakeLists.txt | 3 ++-
|
|
cmake/modules/Findradospp.cmake | 31 +++++++++++++++++++++++++++++++
|
|
2 files changed, 33 insertions(+), 1 deletion(-)
|
|
create mode 100644 cmake/modules/Findradospp.cmake
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 2a4bdb6..96972a2 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -731,7 +731,8 @@ option(WITH_LIBRADOS "Build with librados" OFF)
|
|
if(WITH_LIBRADOS)
|
|
list(APPEND SOURCES
|
|
utilities/env_librados.cc)
|
|
- list(APPEND THIRDPARTY_LIBS rados)
|
|
+ find_package(radospp REQUIRED)
|
|
+ list(APPEND THIRDPARTY_LIBS rados::radospp)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
diff --git a/cmake/modules/Findradospp.cmake b/cmake/modules/Findradospp.cmake
|
|
new file mode 100644
|
|
index 0000000..4f1672a
|
|
--- /dev/null
|
|
+++ b/cmake/modules/Findradospp.cmake
|
|
@@ -0,0 +1,31 @@
|
|
+# - Find RADOS
|
|
+# Find librados library and includes
|
|
+#
|
|
+# RADOSPP_INCLUDE_DIR - where to find librados.hpp.
|
|
+# RADOSPP_LIBRARIES - List of libraries when using radospp.
|
|
+# radospp_FOUND - True if radospp found.
|
|
+
|
|
+find_path(RADOSPP_INCLUDE_DIR
|
|
+ NAMES rados/librados.hpp
|
|
+ HINTS ${LIBRADOS_ROOT}/include)
|
|
+
|
|
+find_library(RADOSPP_LIBRARIES
|
|
+ NAMES radospp
|
|
+ HINTS ${LIBRADOS_ROOT}/lib)
|
|
+
|
|
+include(FindPackageHandleStandardArgs)
|
|
+find_package_handle_standard_args(radospp
|
|
+ FOUND_VAR radospp_FOUND
|
|
+ REQUIRED_VARS RADOSPP_LIBRARIES RADOSPP_INCLUDE_DIR)
|
|
+
|
|
+mark_as_advanced(
|
|
+ RADOSPP_INCLUDE_DIR
|
|
+ RADOSPP_LIBRARIES)
|
|
+
|
|
+if(radospp_FOUND AND NOT (TARGET rados::radospp))
|
|
+ add_library(rados::radospp UNKNOWN IMPORTED)
|
|
+ set_target_properties(rados::radospp PROPERTIES
|
|
+ INTERFACE_INCLUDE_DIRECTORIES "${RADOSPP_INCLUDE_DIR}"
|
|
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
|
+ IMPORTED_LOCATION "${RADOSPP_LIBRARIES}")
|
|
+endif()
|
|
--
|
|
2.19.1
|
|
|