|
|
1.1 root 1: # - Try to find libpcap include dirs and libraries
2: #
3: # Usage of this module as follows:
4: #
5: # find_package(PCAP)
6: #
7: # Variables used by this module, they can change the default behaviour and need
8: # to be set before calling find_package:
9: #
10: # PCAP_ROOT_DIR Set this variable to the root installation of
11: # libpcap if the module has problems finding the
12: # proper installation path.
13: #
14: # Variables defined by this module:
15: #
16: # PCAP_FOUND System has libpcap, include and library dirs found
17: # PCAP_INCLUDE_DIR The libpcap include directories.
18: # PCAP_LIBRARY The libpcap library (possibly includes a thread
19: # library e.g. required by pf_ring's libpcap)
20: # HAVE_PF_RING If a found version of libpcap supports PF_RING
21:
22: find_path(PCAP_ROOT_DIR
23: NAMES include/pcap.h
24: HINTS /c/MinGW/WpdPack
25: )
26:
27: find_path(PCAP_INCLUDE_DIR
28: NAMES pcap.h
29: HINTS ${PCAP_ROOT_DIR}/include
30: )
31:
32: find_library(PCAP_LIBRARY
33: NAMES pcap wpcap
34: HINTS ${PCAP_ROOT_DIR}/lib ${PCAP_ROOT_DIR}/Lib
35: )
36:
37: include(FindPackageHandleStandardArgs)
38: find_package_handle_standard_args(PCAP DEFAULT_MSG
39: PCAP_LIBRARY
40: PCAP_INCLUDE_DIR
41: )
42:
43: include(CheckCSourceCompiles)
44: set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY})
45: check_c_source_compiles("int main() { return 0; }" PCAP_LINKS_SOLO)
46: set(CMAKE_REQUIRED_LIBRARIES)
47:
48: # check if linking against libpcap also needs to link against a thread library
49: if (NOT PCAP_LINKS_SOLO)
50: find_package(Threads)
51: if (THREADS_FOUND)
52: set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
53: check_c_source_compiles("int main() { return 0; }" PCAP_NEEDS_THREADS)
54: set(CMAKE_REQUIRED_LIBRARIES)
55: endif ()
56: if (THREADS_FOUND AND PCAP_NEEDS_THREADS)
57: set(_tmp ${PCAP_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
58: list(REMOVE_DUPLICATES _tmp)
59: set(PCAP_LIBRARY ${_tmp}
60: CACHE STRING "Libraries needed to link against libpcap" FORCE)
61: else ()
62: message(FATAL_ERROR "Couldn't determine how to link against libpcap")
63: endif ()
64: endif ()
65:
66: include(CheckFunctionExists)
67: set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY})
68: check_function_exists(pcap_get_pfring_id HAVE_PF_RING)
69: set(CMAKE_REQUIRED_LIBRARIES)
70:
71: mark_as_advanced(
72: PCAP_ROOT_DIR
73: PCAP_INCLUDE_DIR
74: PCAP_LIBRARY
75: )
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.