Warning, /plasma/libksysguard/cmake/FindNL.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-License-Identifier: BSD-3-Clause
0002 # SPDX-FileCopyrightText: 2013 Jörg Mayer
0003 # SPDX-FileCopyrightText: 2017 Peter Wu
0004 #
0005 # Find the native netlink includes and library
0006 #
0007 # If they exist, differentiate between versions 1, 2 and 3.
0008 # Version 1 does not have netlink/version.h
0009 # Version 2 started separating libraries (libnl{,-genl,-route}).
0010 # Version 3 (>= 3.2) started appending the major version number as suffix to
0011 # library names (libnl-3)
0012 #
0013 #  NL_INCLUDE_DIRS - where to find libnl.h, etc.
0014 #  NL_LIBRARIES    - List of libraries when using libnl.
0015 #  NL_FOUND        - True if libnl found.
0016 
0017 if(NL_LIBRARIES AND NL_INCLUDE_DIRS)
0018   # in cache already
0019   SET(NL_FOUND TRUE)
0020 else()
0021   SET( SEARCHPATHS
0022       /opt/local
0023       /sw
0024       /usr
0025       /usr/local
0026   )
0027 
0028   find_package(PkgConfig)
0029   pkg_check_modules(NL3 libnl-3.0 libnl-route-3.0)
0030   if(NOT NL3_FOUND)
0031     pkg_search_module(NL2 libnl-2.0)
0032   endif()
0033 
0034   # Try to find NL 2.0, 3.0 or 3.1 (/usr/include/netlink/version.h) or
0035   # NL >= 3.2 (/usr/include/libnl3/netlink/version.h)
0036   find_path(NL3_INCLUDE_DIR
0037     PATH_SUFFIXES
0038       include/libnl3
0039       include
0040     NAMES
0041       netlink/version.h
0042     HINTS
0043       "${NL3_libnl-3.0_INCLUDEDIR}"
0044       "${NL2_INCLUDEDIR}"
0045     PATHS
0046       $(SEARCHPATHS)
0047   )
0048   # NL version >= 2
0049   if(NL3_INCLUDE_DIR)
0050     find_library(NL3_LIBRARY
0051       NAMES
0052         nl-3 nl
0053       PATH_SUFFIXES
0054         lib64 lib
0055       HINTS
0056         "${NL3_libnl-3.0_LIBDIR}"
0057         "${NL2_LIBDIR}"
0058       PATHS
0059         $(SEARCHPATHS)
0060     )
0061     find_library(NLROUTE_LIBRARY
0062       NAMES
0063         nl-route-3 nl-route
0064       PATH_SUFFIXES
0065         lib64 lib
0066       HINTS
0067         "${NL3_libnl-route-3.0_LIBDIR}"
0068         "${NL2_LIBDIR}"
0069       PATHS
0070         $(SEARCHPATHS)
0071     )
0072     #
0073     # If we don't have all of those libraries, we can't use libnl.
0074     #
0075     if(NL3_LIBRARY AND NLROUTE_LIBRARY)
0076       set(NL_LIBRARY ${NL3_LIBRARY})
0077       if(NL3_INCLUDE_DIR)
0078         # NL2 and NL3 are similar and just affect how the version is reported in
0079         # the --version output. In cast of doubt, assume NL3 since a library
0080         # without version number could be any of 2.0, 3.0 or 3.1.
0081         if(NOT NL3_FOUND AND NL2_FOUND)
0082           set(HAVE_LIBNL2 1)
0083         else()
0084           set(HAVE_LIBNL3 1)
0085         endif()
0086       endif()
0087     endif()
0088     set(NL_INCLUDE_DIR ${NL3_INCLUDE_DIR})
0089   endif()
0090 
0091   # libnl-2 and libnl-3 not found, try NL version 1
0092   if(NOT (NL_LIBRARY AND NL_INCLUDE_DIR))
0093     pkg_search_module(NL1 libnl-1)
0094     find_path(NL1_INCLUDE_DIR
0095       NAMES
0096         netlink/netlink.h
0097       HINTS
0098         "${NL1_INCLUDEDIR}"
0099       PATHS
0100         $(SEARCHPATHS)
0101     )
0102     find_library(NL1_LIBRARY
0103       NAMES
0104         nl
0105       PATH_SUFFIXES
0106         lib64 lib
0107       HINTS
0108         "${NL1_LIBDIR}"
0109       PATHS
0110         $(SEARCHPATHS)
0111     )
0112     set(NL_LIBRARY ${NL1_LIBRARY})
0113     set(NL_INCLUDE_DIR ${NL1_INCLUDE_DIR})
0114     if(NL1_LIBRARY AND NL1_INCLUDE_DIR)
0115       set(HAVE_LIBNL1 1)
0116     endif()
0117   endif()
0118 endif()
0119 # MESSAGE(STATUS "LIB Found: ${NL_LIBRARY}, Suffix: ${NLSUFFIX}\n  1:${HAVE_LIBNL1}, 2:${HAVE_LIBNL2}, 3:${HAVE_LIBNL3}.")
0120 
0121 # handle the QUIETLY and REQUIRED arguments and set NL_FOUND to TRUE if
0122 # all listed variables are TRUE
0123 INCLUDE(FindPackageHandleStandardArgs)
0124 FIND_PACKAGE_HANDLE_STANDARD_ARGS(NL DEFAULT_MSG NL_LIBRARY NL_INCLUDE_DIR)
0125 
0126 IF(NL_FOUND)
0127   set(NL_LIBRARIES ${NL_LIBRARY} ${NLROUTE_LIBRARY})
0128   set(NL_INCLUDE_DIRS ${NL_INCLUDE_DIR})
0129   set(HAVE_LIBNL 1)
0130 else()
0131   set(NL_LIBRARIES )
0132   set(NL_INCLUDE_DIRS)
0133 endif()
0134 
0135 MARK_AS_ADVANCED( NL_LIBRARIES NL_INCLUDE_DIRS )