From e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:34:10 +0200 Subject: Adding upstream version 4.2.2. Signed-off-by: Daniel Baumann --- cmake/modules/FindNL.cmake | 144 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 cmake/modules/FindNL.cmake (limited to 'cmake/modules/FindNL.cmake') diff --git a/cmake/modules/FindNL.cmake b/cmake/modules/FindNL.cmake new file mode 100644 index 00000000..d4f003e8 --- /dev/null +++ b/cmake/modules/FindNL.cmake @@ -0,0 +1,144 @@ +# +# Find the native netlink includes and library +# +# If they exist, differentiate between versions 1, 2 and 3. +# Version 1 does not have netlink/version.h +# Version 2 started separating libraries (libnl{,-genl,-route}). +# Version 3 (>= 3.2) started appending the major version number as suffix to +# library names (libnl-3) +# +# NL_INCLUDE_DIRS - where to find libnl.h, etc. +# NL_LIBRARIES - List of libraries when using libnl. +# NL_FOUND - True if libnl found. + +if(NL_LIBRARIES AND NL_INCLUDE_DIRS) + # in cache already + SET(NL_FOUND TRUE) +else() + SET( SEARCHPATHS + /opt/local + /sw + /usr + /usr/local + ) + + find_package(PkgConfig) + pkg_check_modules(NL3 libnl-3.0 libnl-genl-3.0 libnl-route-3.0) + if(NOT NL3_FOUND) + pkg_search_module(NL2 libnl-2.0) + endif() + + # Try to find NL 2.0, 3.0 or 3.1 (/usr/include/netlink/version.h) or + # NL >= 3.2 (/usr/include/libnl3/netlink/version.h) + find_path(NL3_INCLUDE_DIR + PATH_SUFFIXES + include/libnl3 + include + NAMES + netlink/version.h + HINTS + "${NL3_libnl-3.0_INCLUDEDIR}" + "${NL2_INCLUDEDIR}" + PATHS + $(SEARCHPATHS) + ) + # NL version >= 2 + if(NL3_INCLUDE_DIR) + find_library(NL3_LIBRARY + NAMES + nl-3 nl + PATH_SUFFIXES + lib64 lib + HINTS + "${NL3_libnl-3.0_LIBDIR}" + "${NL2_LIBDIR}" + PATHS + $(SEARCHPATHS) + ) + find_library(NLGENL_LIBRARY + NAMES + nl-genl-3 nl-genl + PATH_SUFFIXES + lib64 lib + HINTS + "${NL3_libnl-genl-3.0_LIBDIR}" + "${NL2_LIBDIR}" + PATHS + $(SEARCHPATHS) + ) + find_library(NLROUTE_LIBRARY + NAMES + nl-route-3 nl-route + PATH_SUFFIXES + lib64 lib + HINTS + "${NL3_libnl-route-3.0_LIBDIR}" + "${NL2_LIBDIR}" + PATHS + $(SEARCHPATHS) + ) + # + # If we don't have all of those libraries, we can't use libnl. + # + if(NL3_LIBRARY AND NLGENL_LIBRARY AND NLROUTE_LIBRARY) + set(NL_LIBRARY ${NL3_LIBRARY}) + if(NL3_INCLUDE_DIR) + # NL2 and NL3 are similar and just affect how the version is reported in + # the --version output. In cast of doubt, assume NL3 since a library + # without version number could be any of 2.0, 3.0 or 3.1. + if(NOT NL3_FOUND AND NL2_FOUND) + set(HAVE_LIBNL2 1) + else() + set(HAVE_LIBNL3 1) + endif() + endif() + endif() + set(NL_INCLUDE_DIR ${NL3_INCLUDE_DIR}) + endif() + + # libnl-2 and libnl-3 not found, try NL version 1 + if(NOT (NL_LIBRARY AND NL_INCLUDE_DIR)) + pkg_search_module(NL1 libnl-1) + find_path(NL1_INCLUDE_DIR + NAMES + netlink/netlink.h + HINTS + "${NL1_INCLUDEDIR}" + PATHS + $(SEARCHPATHS) + ) + find_library(NL1_LIBRARY + NAMES + nl + PATH_SUFFIXES + lib64 lib + HINTS + "${NL1_LIBDIR}" + PATHS + $(SEARCHPATHS) + ) + set(NL_LIBRARY ${NL1_LIBRARY}) + set(NL_INCLUDE_DIR ${NL1_INCLUDE_DIR}) + if(NL1_LIBRARY AND NL1_INCLUDE_DIR) + set(HAVE_LIBNL1 1) + endif() + endif() +endif() +# MESSAGE(STATUS "LIB Found: ${NL_LIBRARY}, Suffix: ${NLSUFFIX}\n 1:${HAVE_LIBNL1}, 2:${HAVE_LIBNL2}, 3:${HAVE_LIBNL3}.") + +# handle the QUIETLY and REQUIRED arguments and set NL_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(NL DEFAULT_MSG NL_LIBRARY NL_INCLUDE_DIR) + +IF(NL_FOUND) + set(NL_LIBRARIES ${NLGENL_LIBRARY} ${NLROUTE_LIBRARY} ${NL_LIBRARY}) + set(NL_INCLUDE_DIRS ${NL_INCLUDE_DIR}) + set(HAVE_LIBNL 1) +else() + set(NL_LIBRARIES ) + set(NL_INCLUDE_DIRS) +endif() + +MARK_AS_ADVANCED( NL_LIBRARIES NL_INCLUDE_DIRS ) + -- cgit v1.2.3