cmake and build: add netlink lib requirement detection

The next patch adds netlink support to rbd-nbd. This patch just adds the
build related changes to bring in the netlink lib and test and build
against it.

Signed-off-by: Mike Christie <mchristi@redhat.com>
This commit is contained in:
Mike Christie 2019-06-04 23:42:40 -05:00
parent 3fe16add7d
commit 8815671553
5 changed files with 35 additions and 1 deletions

View File

@ -218,15 +218,22 @@ if(LINUX)
set(HAVE_UDEV ${UDEV_FOUND})
find_package(blkid REQUIRED)
set(HAVE_BLKID ${BLKID_FOUND})
if(WITH_RBD)
find_package(genl REQUIRED)
set(HAVE_GENL $GENL_FOUND)
endif()
elseif(FREEBSD)
set(HAVE_UDEV OFF)
set(HAVE_LIBAIO OFF)
set(HAVE_BLKID OFF)
set(HAVE_GENL OFF)
else()
set(HAVE_UDEV OFF)
message(STATUS "Not using udev")
set(HAVE_BLKID OFF)
message(STATUS "Not using BLKID")
set(HAVE_GENL OFF)
message(STATUS "Not using GENL")
endif(LINUX)
option(WITH_OPENLDAP "OPENLDAP is here" ON)

View File

@ -169,6 +169,7 @@ BuildRequires: libaio-devel
BuildRequires: libblkid-devel >= 2.17
BuildRequires: libcurl-devel
BuildRequires: libudev-devel
BuildRequires: libnl3-devel
BuildRequires: liboath-devel
BuildRequires: libtool
BuildRequires: libxml2-devel

View File

@ -0,0 +1,23 @@
# - Find libnl-genl3
# Find the genl library and includes
#
# GENL_INCLUDE_DIR - where to find netlink.h, etc.
# GENL_LIBRARIES - List of libraries when using genl.
# GENL_FOUND - True if genl found.
find_path(GENL_INCLUDE_DIR NAMES netlink/netlink.h PATH_SUFFIXES libnl3)
find_library(LIBNL_LIB nl-3)
find_library(LIBNL_GENL_LIB nl-genl-3)
set(GENL_LIBRARIES
${LIBNL_LIB}
${LIBNL_GENL_LIB}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(nl-genl-3
DEFAULT_MSG GENL_LIBRARIES GENL_INCLUDE_DIR)
mark_as_advanced(
GENL_LIBRARIES
GENL_INCLUDE_DIR)

2
debian/control vendored
View File

@ -45,6 +45,8 @@ Build-Depends: cmake (>= 3.5),
libssl-dev,
libtool,
libudev-dev,
libnl-3-dev,
libnl-genl-3-dev,
libxml2-dev,
librabbitmq-dev,
lsb-release,

View File

@ -1,3 +1,4 @@
add_executable(rbd-nbd rbd-nbd.cc)
target_link_libraries(rbd-nbd librbd librados global)
target_include_directories(rbd-nbd PUBLIC ${GENL_INCLUDE_DIR})
target_link_libraries(rbd-nbd librbd librados global ${GENL_LIBRARIES})
install(TARGETS rbd-nbd DESTINATION bin)