ceph/cmake/modules/Findmotr.cmake
Kefu Chai f5e9e1a4f5 cmake: find motr libraries and header before using them
cmake should fail when generating the building system, if the necessary
development libraries or the header files are missing.

in this change, Findmotr.cmake is added to detect the motr library
and header so that we can use it to find the motr package before using
it.

See-also: https://tracker.ceph.com/issues/57079
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-08-10 21:15:12 +08:00

51 lines
1.4 KiB
CMake

# - Find libmotr
# Find the motr and motrhl libraries and includes
#
# motr_INCLUDE_DIR - where to find motr.hpp etc.
# motr_LIBRARIES - List of libraries when using motr.
# motr_FOUND - True if motr found.
find_package(PkgConfig QUIET REQUIRED)
pkg_search_module(PC_motr QUIET motr)
find_path(motr_INCLUDE_DIR
NAMES motr/config.h
HINTS ${PC_motr_INCLUDE_DIRS})
find_library(motr_LIBRARY
NAMES motr
HINTS ${PC_motr_LIBRARY_DIRS})
find_library(motr_helpers_LIBRARY
NAMES motr-helpers
HINTS ${PC_motr_LIBRARY_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(motr
DEFAULT_MSG
motr_INCLUDE_DIR
motr_LIBRARY
motr_helpers_LIBRARY)
mark_as_advanced(
motr_INCLUDE_DIR
motr_LIBRARY
motr_helpers_LIBRARY)
if(motr_FOUND)
set(motr_LIBRARIES ${motr_LIBRARY} ${motr_helpers_LIBRARY})
if(NOT (TARGET motr::helpers))
add_library(motr::helpers UNKNOWN IMPORTED)
set_target_properties(motr::helpers PROPERTIES
IMPORTED_LOCATION "${motr_helpers_LIBRARY}")
endif()
if(NOT (TARGET motr::motr))
add_library(motr::motr UNKNOWN IMPORTED)
set_target_properties(motr::motr PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "M0_EXTERN=extern;M0_INTERNAL="
INTERFACE_COMPILE_OPTIONS "-Wno-attributes"
INTERFACE_INCLUDE_DIRECTORIES "${motr_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES motr::helpers
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${motr_LIBRARY}")
endif()
endif()