From 88156715536924293fb3a8b610566369324e69db Mon Sep 17 00:00:00 2001 From: Mike Christie Date: Tue, 4 Jun 2019 23:42:40 -0500 Subject: [PATCH] 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 --- CMakeLists.txt | 7 +++++++ ceph.spec.in | 1 + cmake/modules/Findgenl.cmake | 23 +++++++++++++++++++++++ debian/control | 2 ++ src/tools/rbd_nbd/CMakeLists.txt | 3 ++- 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/Findgenl.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a95e82009c..050dfe059b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/ceph.spec.in b/ceph.spec.in index 708d81fd676..c5d484d721c 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -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 diff --git a/cmake/modules/Findgenl.cmake b/cmake/modules/Findgenl.cmake new file mode 100644 index 00000000000..07c5f357bdb --- /dev/null +++ b/cmake/modules/Findgenl.cmake @@ -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) diff --git a/debian/control b/debian/control index 2bb5e6fbb90..de2a88565fa 100644 --- a/debian/control +++ b/debian/control @@ -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, diff --git a/src/tools/rbd_nbd/CMakeLists.txt b/src/tools/rbd_nbd/CMakeLists.txt index d7ce811e963..5356fae4f9b 100644 --- a/src/tools/rbd_nbd/CMakeLists.txt +++ b/src/tools/rbd_nbd/CMakeLists.txt @@ -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) -- 2.39.5