aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2013-10-06 15:56:30 +0000
committerJörg Mayer <jmayer@loplof.de>2013-10-06 15:56:30 +0000
commitefb42cf8dcfcf5ea58f2182ae484028807377304 (patch)
tree0ad21b5d311cd4aa998b51e363642fa4d3fe50d6
parent07f25c7f3cf0149e1aeeb3b71687bb317d92506e (diff)
Rewrite FindPCAP.cmake to current practices
svn path=/trunk/; revision=52405
-rw-r--r--cmake/modules/FindPCAP.cmake185
1 files changed, 58 insertions, 127 deletions
diff --git a/cmake/modules/FindPCAP.cmake b/cmake/modules/FindPCAP.cmake
index bd7fafaca1..b0f1db786a 100644
--- a/cmake/modules/FindPCAP.cmake
+++ b/cmake/modules/FindPCAP.cmake
@@ -1,151 +1,82 @@
#
# $Id$
#
-###################################################################
-#
-# Copyright (c) 2006 Frederic Heem, <frederic.heem@telsey.it>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-#
-# * Neither the name of the Telsey nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-###################################################################
-# - Find pcap
-# Find the PCAP includes and library
-# http://www.tcpdump.org/
-#
-# The environment variable PCAPDIR allows to specficy where to find
-# libpcap in non standard location.
+# - Find pcap and winpcap
+# Find the native PCAP includes and library
#
# PCAP_INCLUDE_DIRS - where to find pcap.h, etc.
-# PCAP_LIBRARIES - List of libraries when using pcap.
-# PCAP_FOUND - True if pcap found.
-
+# PCAP_LIBRARIES - List of libraries when using pcap.
+# PCAP_FOUND - True if pcap found.
-IF(EXISTS $ENV{PCAPDIR})
- FIND_PATH(PCAP_INCLUDE_DIR
- NAMES
- pcap/pcap.h
- pcap.h
- PATHS
- $ENV{PCAPDIR}
- NO_DEFAULT_PATH
- )
+include( FindWSWinLibs )
+FindWSWinLibs( "WpdPack" "PCAP_HINTS" )
- FIND_LIBRARY(PCAP_LIBRARY
- NAMES
- pcap
- PATHS
- $ENV{PCAPDIR}
- NO_DEFAULT_PATH
- )
-
-
-ELSE(EXISTS $ENV{PCAPDIR})
-
- INCLUDE(FindWSWinLibs)
- FindWSWinLibs("WpdPack" "PCAP_HINTS")
+find_path( PCAP_INCLUDE_DIR
+ NAMES
+ pcap/pcap.h
+ pcap.h
+ HINTS
+ "${PCAP_HINTS}/include"
+)
- FIND_PATH(PCAP_INCLUDE_DIR
- NAMES
- pcap/pcap.h
- pcap.h
- HINTS
- "${PCAP_HINTS}/include"
- )
+find_library( PCAP_LIBRARY
+ NAMES
+ pcap
+ wpcap
+ HINTS
+ "${PCAP_HINTS}/lib"
+)
- FIND_LIBRARY(PCAP_LIBRARY
- NAMES
- pcap
- wpcap
- HINTS
- "${PCAP_HINTS}/lib"
- )
-ENDIF(EXISTS $ENV{PCAPDIR})
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( PCAP DEFAULT_MSG PCAP_INCLUDE_DIR PCAP_LIBRARY )
-SET(PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR})
-SET(PCAP_LIBRARIES ${PCAP_LIBRARY})
+if( PCAP_FOUND )
+ set( PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR} )
+ set( PCAP_LIBRARIES ${PCAP_LIBRARY} )
+else()
+ set( PCAP_INCLUDE_DIRS )
+ set( PCAP_LIBRARIES )
+endif()
-IF(PCAP_INCLUDE_DIRS)
- MESSAGE(STATUS "Pcap include dirs set to ${PCAP_INCLUDE_DIRS}")
-ELSE(PCAP_INCLUDE_DIRS)
- MESSAGE(FATAL " Pcap include dirs cannot be found")
-ENDIF(PCAP_INCLUDE_DIRS)
+#Functions
+include( CMakePushCheckState )
+include( CheckFunctionExists )
+include( CheckVariableExists )
-IF(PCAP_LIBRARIES)
- MESSAGE(STATUS "Pcap library set to ${PCAP_LIBRARIES}")
-ELSE(PCAP_LIBRARIES)
- MESSAGE(FATAL "Pcap library cannot be found")
-ENDIF(PCAP_LIBRARIES)
+cmake_push_check_state()
+set( CMAKE_REQUIRED_INCLUDES ${PCAP_INCLUDE_DIRS} )
+set( CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARIES} )
-#Functions
-INCLUDE(CheckFunctionExists)
-INCLUDE(CheckVariableExists)
-SET(CMAKE_REQUIRED_INCLUDES ${PCAP_INCLUDE_DIRS})
-SET(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARIES})
-CHECK_VARIABLE_EXISTS("pcap_version" HAVE_PCAP_VERSION)
-CHECK_FUNCTION_EXISTS("pcap_open_dead" HAVE_PCAP_OPEN_DEAD)
-CHECK_FUNCTION_EXISTS("pcap_freecode" HAVE_PCAP_FREECODE)
+check_variable_exists( "pcap_version" HAVE_PCAP_VERSION )
+check_function_exists( "pcap_open_dead" HAVE_PCAP_OPEN_DEAD )
+check_function_exists( "pcap_freecode" HAVE_PCAP_FREECODE )
#
# Note: for pcap_breakloop() and pcap_findalldevs(), the autoconf script
# checks for more than just whether the function exists, it also checks
# for whether pcap.h declares it; Mac OS X software/security updates can
# update libpcap without updating the headers.
#
-CHECK_FUNCTION_EXISTS("pcap_breakloop" HAVE_PCAP_BREAKLOOP)
-CHECK_FUNCTION_EXISTS("pcap_create" HAVE_PCAP_CREATE)
-CHECK_FUNCTION_EXISTS("pcap_datalink_name_to_val" HAVE_PCAP_DATALINK_NAME_TO_VAL)
-CHECK_FUNCTION_EXISTS("pcap_datalink_val_to_description" HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION)
-CHECK_FUNCTION_EXISTS("pcap_datalink_val_to_name" HAVE_PCAP_DATALINK_VAL_TO_NAME)
-CHECK_FUNCTION_EXISTS("pcap_findalldevs" HAVE_PCAP_FINDALLDEVS)
-CHECK_FUNCTION_EXISTS("pcap_free_datalinks" HAVE_PCAP_FREE_DATALINKS)
-CHECK_FUNCTION_EXISTS("pcap_get_selectable_fd" HAVE_PCAP_GET_SELECTABLE_FD)
-CHECK_FUNCTION_EXISTS("pcap_lib_version" HAVE_PCAP_LIB_VERSION)
-CHECK_FUNCTION_EXISTS("pcap_list_datalinks" HAVE_PCAP_LIST_DATALINKS)
-CHECK_FUNCTION_EXISTS("pcap_set_datalink" HAVE_PCAP_SET_DATALINK)
+check_function_exists( "pcap_breakloop" HAVE_PCAP_BREAKLOOP )
+check_function_exists( "pcap_create" HAVE_PCAP_CREATE )
+check_function_exists( "pcap_datalink_name_to_val" HAVE_PCAP_DATALINK_NAME_TO_VAL )
+check_function_exists( "pcap_datalink_val_to_description" HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION )
+check_function_exists( "pcap_datalink_val_to_name" HAVE_PCAP_DATALINK_VAL_TO_NAME )
+check_function_exists( "pcap_findalldevs" HAVE_PCAP_FINDALLDEVS )
+check_function_exists( "pcap_free_datalinks" HAVE_PCAP_FREE_DATALINKS )
+check_function_exists( "pcap_get_selectable_fd" HAVE_PCAP_GET_SELECTABLE_FD )
+check_function_exists( "pcap_lib_version" HAVE_PCAP_LIB_VERSION )
+check_function_exists( "pcap_list_datalinks" HAVE_PCAP_LIST_DATALINKS )
+check_function_exists( "pcap_set_datalink" HAVE_PCAP_SET_DATALINK )
# Remote pcap checks
-CHECK_FUNCTION_EXISTS("pcap_open" H_PCAP_OPEN)
-CHECK_FUNCTION_EXISTS("pcap_findalldevs_ex" H_FINDALLDEVS_EX)
-CHECK_FUNCTION_EXISTS("pcap_createsrcstr" H_CREATESRCSTR)
-if(H_PCAP_OPEN AND H_FINDALLDEVS_EX AND H_CREATESRCSTR)
- SET(HAVE_PCAP_REMOTE 1)
- SET(HAVE_REMOTE 1)
+check_function_exists( "pcap_open" H_PCAP_OPEN )
+check_function_exists( "pcap_findalldevs_ex" H_FINDALLDEVS_EX )
+check_function_exists( "pcap_createsrcstr" H_CREATESRCSTR )
+if( H_PCAP_OPEN AND H_FINDALLDEVS_EX AND H_CREATESRCSTR )
+ set( HAVE_PCAP_REMOTE 1 )
+ set( HAVE_REMOTE 1 )
endif()
-# reset vars
-SET(CMAKE_REQUIRED_INCLUDES "")
-SET(CMAKE_REQUIRED_LIBRARIES "")
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCAP DEFAULT_MSG PCAP_INCLUDE_DIRS PCAP_LIBRARIES)
+cmake_pop_check_state()
-MARK_AS_ADVANCED(
- PCAP_LIBRARIES
- PCAP_INCLUDE_DIRS
-)
+mark_as_advanced( PCAP_LIBRARIES PCAP_INCLUDE_DIRS )