aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindNL.cmake
blob: f84097e9c139677e6970ebf3b50e90c0c4699ddc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#
# $Id$
#
# 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 3 does have the major version number as a suffix
#   to the libnl name (libnl-3)
#
#  NL_INCLUDE_DIRS - where to find libnl.h, etc.
#  NL_LIBRARIES    - List of libraries when using libnl3.
#  NL_FOUND        - True if libnl found.

IF (NL_LIBRARIES AND NL_INCLUDE_DIRS )
  # in cache already
  SET(NL_FOUND TRUE)
ELSE (NL_LIBRARIES AND NL_INCLUDE_DIRS )
  SET( SEARCHPATHS
      /opt/local
      /sw
      /usr
      /usr/local
  )
  FIND_PATH( NL_INCLUDE_DIR
    PATH_SUFFIXES
      include/libnl3
    NAMES
      netlink/version.h
    PATHS
      $(SEARCHPATHS)
  )
  # NL version >= 2
  IF ( NL_INCLUDE_DIR )
    FIND_LIBRARY( NL_LIBRARY
      NAMES
        nl-3 nl
      PATH_SUFFIXES
        lib64 lib
      PATHS
        $(SEARCHPATHS)
    )
    FIND_LIBRARY( NLGENL_LIBRARY
      NAMES
        nl-genl-3 nl-genl
      PATH_SUFFIXES
        lib64 lib
      PATHS
        $(SEARCHPATHS)
    )
    FIND_LIBRARY( NLROUTE_LIBRARY
      NAMES
        nl-route-3 nl-route
      PATH_SUFFIXES
        lib64 lib
      PATHS
        $(SEARCHPATHS)
    )
    STRING(REGEX REPLACE ".*nl-([^.,;]*).*" "\\1" NLSUFFIX ${NL_LIBRARY})
    IF ( NLSUFFIX )
      SET( HAVE_LIBNL3 1 )
    ELSE ( NLSUFFIX )
      SET( HAVE_LIBNL2 1 )
    ENDIF (NLSUFFIX )
  ELSE( NL_INCLUDE_DIR )
    # NL version 1 ?
    FIND_PATH( NL_INCLUDE_DIR
      NAMES
        netlink/netlink.h
      PATHS
        $(SEARCHPATHS)
    )
    FIND_LIBRARY( NL_LIBRARY
      NAMES
        nl
      PATH_SUFFIXES
        lib64 lib
      PATHS
        $(SEARCHPATHS)
    )
    if ( NL_INCLUDE_DIR )
      SET( HAVE_LIBNL1 1 )
    ENDIF ( NL_INCLUDE_DIR )
  ENDIF( NL_INCLUDE_DIR )
ENDIF(NL_LIBRARIES AND NL_INCLUDE_DIRS)
# 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})
ELSE()
  SET( NL_LIBRARIES )
  SET( NL_INCLUDE_DIRS )
ENDIF()

MARK_AS_ADVANCED( NL_LIBRARIES NL_INCLUDE_DIRS )