mirror of https://github.com/ceph/ceph
cmake: find_package(cap) before linking against it
before this change, we link against libcap without finding it. this works fine as long as libcap-devel or libcap-dev is installed in the system. but if it is not, the source would fail to build due to missing `sys/capability.h`. this is not a great developer experience. in this change, a `Findcap.cmake` is added to find the capability library. which would fail the build at the configure phase. Signed-off-by: Kefu Chai <tchaikov@gmail.com>
This commit is contained in:
parent
8bbeeb80a5
commit
0de5755531
|
@ -0,0 +1,35 @@
|
|||
# Try to find libcap
|
||||
#
|
||||
find_package(PkgConfig QUIET REQUIRED)
|
||||
|
||||
pkg_check_modules(PC_cap QUIET cap)
|
||||
|
||||
find_library(cap_LIBRARY
|
||||
NAMES cap
|
||||
HINTS
|
||||
${PC_cap_LIBDIR}
|
||||
${PC_cap_LIBRARY_DIRS})
|
||||
|
||||
find_path(cap_INCLUDE_DIR
|
||||
NAMES sys/capability.h
|
||||
HINTS
|
||||
${PC_cap_INCLUDEDIR}
|
||||
${PC_cap_INCLUDE_DIRS})
|
||||
|
||||
mark_as_advanced(
|
||||
cap_LIBRARY
|
||||
cap_INCLUDE_DIR)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args (cap
|
||||
REQUIRED_VARS
|
||||
cap_LIBRARY
|
||||
cap_INCLUDE_DIR)
|
||||
|
||||
if(cap_FOUND AND NOT TARGET cap::cap)
|
||||
add_library(cap::cap UNKNOWN IMPORTED)
|
||||
set_target_properties(cap::cap
|
||||
PROPERTIES
|
||||
IMPORTED_LOCATION ${cap_LIBRARY}
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${cap_INCLUDE_DIR})
|
||||
endif()
|
|
@ -7,6 +7,7 @@ add_subdirectory(vdo)
|
|||
add_library(extblkdev STATIC ExtBlkDevPlugin.cc)
|
||||
|
||||
if(NOT WIN32)
|
||||
find_package(cap)
|
||||
target_link_libraries(extblkdev cap)
|
||||
endif()
|
||||
|
||||
|
|
Loading…
Reference in New Issue