mirror of
https://github.com/ceph/ceph
synced 2024-12-22 11:31:55 +00:00
48e4cd190f
add two components: pmem and pmemobj to this package. so we can find them and link against them in a more intuitive way. before this change the COMPONENTS parameter passed to find_package(pmem ...) is dropped on the floor and ignored. after this change, it is checked and taken into consideration. also, in this change, the exposed variables are renamed from PMEM_* to pmem_* to be consistent with the package name. it's encouraged to be consistent with the package name when it comes to the INCLUDE_DIR and LIBRARIES variable names. Signed-off-by: Kefu Chai <kchai@redhat.com>
48 lines
1.6 KiB
CMake
48 lines
1.6 KiB
CMake
# - Find pmem
|
|
#
|
|
# pmem_INCLUDE_DIRS - Where to find libpmem headers
|
|
# pmem_LIBRARIES - List of libraries when using libpmem.
|
|
# pmem_FOUND - True if pmem found.
|
|
|
|
foreach(component pmem ${pmem_FIND_COMPONENTS})
|
|
if(component STREQUAL pmem)
|
|
find_path(pmem_${component}_INCLUDE_DIR libpmem.h)
|
|
find_library(pmem_${component}_LIBRARY pmem)
|
|
elseif(component STREQUAL pmemobj)
|
|
find_path(pmem_${component}_INCLUDE_DIR libpmemobj.h)
|
|
find_library(pmem_${component}_LIBRARY pmemobj)
|
|
else()
|
|
message(FATAL_ERROR "unknown libpmem component: ${component}")
|
|
endif()
|
|
mark_as_advanced(
|
|
pmem_${component}_INCLUDE_DIR
|
|
pmem_${component}_LIBRARY)
|
|
list(APPEND pmem_INCLUDE_DIRS "pmem_${component}_INCLUDE_DIR")
|
|
list(APPEND pmem_LIBRARIES "pmem_${component}_LIBRARY")
|
|
endforeach()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(pmem
|
|
DEFAULT_MSG pmem_INCLUDE_DIRS pmem_LIBRARIES)
|
|
|
|
mark_as_advanced(
|
|
pmem_INCLUDE_DIRS
|
|
pmem_LIBRARIES)
|
|
|
|
if(pmem_FOUND)
|
|
foreach(component pmem ${pmem_FIND_COMPONENTS})
|
|
if(NOT TARGET pmem::${component})
|
|
add_library(pmem::${component} UNKNOWN IMPORTED)
|
|
set_target_properties(pmem::${component} PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${pmem_${component}_INCLUDE_DIR}"
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
IMPORTED_LOCATION "${pmem_${component}_LIBRARY}")
|
|
# all pmem libraries calls into pmem::pmem
|
|
if(NOT component STREQUAL pmem)
|
|
set_target_properties(pmem::${component} PROPERTIES
|
|
INTERFACE_LINK_LIBRARIES pmem::pmem)
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
endif()
|