|
|
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.