ceph/qa/workunits/rados/0001-cmake-add-Findrados.cmake-and-use-it.patch
Kefu Chai 2dc0f86227 qa: use FOUND_VAR to be backward compatible with cmake 2.8.12
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>
2018-11-15 11:57:52 +08:00

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