mirror of
https://github.com/ntop/n2n.git
synced 2024-09-19 16:41:11 +02:00
Fix Cmake libpcap detection logic (#943)
* Fix cmake informational log messages * If the correct library name is used find_library works better * Re-enable remaining find_library users * Reorder cmake to make libpcap detection work
This commit is contained in:
parent
670aadcf1b
commit
e9fccd9932
|
@ -50,7 +50,7 @@ if(N2N_OPTION_USE_PTHREAD)
|
||||||
if(NOT PTHREAD_LIB)
|
if(NOT PTHREAD_LIB)
|
||||||
MESSAGE(FATAL_ERROR "libpthread not found.")
|
MESSAGE(FATAL_ERROR "libpthread not found.")
|
||||||
endif(NOT PTHREAD_LIB)
|
endif(NOT PTHREAD_LIB)
|
||||||
MESSAGE(INFO "Using libpthread.")
|
MESSAGE(STATUS "Using libpthread.")
|
||||||
ADD_DEFINITIONS("-DHAVE_PTHREAD")
|
ADD_DEFINITIONS("-DHAVE_PTHREAD")
|
||||||
endif(N2N_OPTION_USE_PTHREAD)
|
endif(N2N_OPTION_USE_PTHREAD)
|
||||||
|
|
||||||
|
@ -69,54 +69,49 @@ if(N2N_OPTION_USE_OPENSSL)
|
||||||
endif(N2N_OPTION_USE_OPENSSL)
|
endif(N2N_OPTION_USE_OPENSSL)
|
||||||
|
|
||||||
if(N2N_OPTION_USE_ZSTD)
|
if(N2N_OPTION_USE_ZSTD)
|
||||||
# TODO: the find_library() call works for some of the config, but not others
|
find_library(LIBZSTD zstd)
|
||||||
#find_library(LIBZSTD libzstd)
|
if(NOT LIBZSTD)
|
||||||
#if(NOT LIBZSTD)
|
MESSAGE(FATAL_ERROR "libzstd not found.")
|
||||||
# MESSAGE(FATAL_ERROR "libzstd not found.")
|
endif(NOT LIBZSTD)
|
||||||
#endif(NOT LIBZSTD)
|
MESSAGE(STATUS "Using libztd.")
|
||||||
MESSAGE(INFO "Using libztd.")
|
|
||||||
add_definitions(-DN2N_HAVE_ZSTD)
|
add_definitions(-DN2N_HAVE_ZSTD)
|
||||||
endif(N2N_OPTION_USE_ZSTD)
|
endif(N2N_OPTION_USE_ZSTD)
|
||||||
|
|
||||||
if(N2N_OPTION_USE_PCAPLIB)
|
if(N2N_OPTION_USE_PCAPLIB)
|
||||||
# TODO: the find_library() call works for some of the config, but not others
|
find_library(PCAP_LIB pcap)
|
||||||
#find_library(PCAP_LIB pcap)
|
if(NOT PCAP_LIB)
|
||||||
#if(NOT PCAP_LIB)
|
MESSAGE(FATAL_ERROR "libpcap not found.")
|
||||||
# MESSAGE(FATAL_ERROR "libpcap not found.")
|
endif(NOT PCAP_LIB)
|
||||||
#endif(NOT PCAP_LIB)
|
|
||||||
|
# Set var needed for check_function_exists()
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIB})
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
# - this is different to the configure.ac logic
|
# - pcap_set_immediate_mode has been available since libpcap 1.5 in 2013
|
||||||
|
# probably should remove this check
|
||||||
check_function_exists(pcap_set_immediate_mode HAVE_PCAP_IMMEDIATE_MODE)
|
check_function_exists(pcap_set_immediate_mode HAVE_PCAP_IMMEDIATE_MODE)
|
||||||
IF(NOT HAVE_PCAP_IMMEDIATE_MODE)
|
IF(NOT HAVE_PCAP_IMMEDIATE_MODE)
|
||||||
MESSAGE(FATAL_ERROR "libpcap not support pcap_set_immediate_mode()")
|
MESSAGE(FATAL_ERROR "libpcap not support pcap_set_immediate_mode()")
|
||||||
ENDIF(NOT HAVE_PCAP_IMMEDIATE_MODE)
|
ENDIF(NOT HAVE_PCAP_IMMEDIATE_MODE)
|
||||||
MESSAGE(INFO "Using libpcap.")
|
MESSAGE(STATUS "Using libpcap.")
|
||||||
|
|
||||||
ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE")
|
ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE")
|
||||||
add_executable(n2n-decode tools/n2n-decode.c)
|
add_executable(n2n-decode tools/n2n-decode.c)
|
||||||
target_link_libraries(n2n-decode n2n pcap)
|
target_link_libraries(n2n-decode n2n pcap)
|
||||||
install(TARGETS n2n-decode RUNTIME DESTINATION bin)
|
install(TARGETS n2n-decode RUNTIME DESTINATION bin)
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# - This variable is also set elsewhere, I dont think it works this way
|
|
||||||
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIB})
|
|
||||||
endif(N2N_OPTION_USE_PCAPLIB)
|
endif(N2N_OPTION_USE_PCAPLIB)
|
||||||
|
|
||||||
if(N2N_OPTION_USE_CAPLIB)
|
if(N2N_OPTION_USE_CAPLIB)
|
||||||
# Linux Capabilities
|
# Linux Capabilities
|
||||||
# TODO: the find_library() call works for some of the config, but not others
|
find_library(CAP_LIB cap)
|
||||||
#find_library(CAP_LIB cap)
|
if(NOT CAP_LIB)
|
||||||
#if(NOT CAP_LIB)
|
MESSAGE(FATAL_ERROR "libcap not found.")
|
||||||
# MESSAGE(FATAL_ERROR "libcap not found.")
|
endif(NOT CAP_LIB)
|
||||||
#endif(NOT CAP_LIB)
|
MESSAGE(STATUS "Using libcap.")
|
||||||
MESSAGE(INFO "Using libpcap.")
|
|
||||||
|
|
||||||
ADD_DEFINITIONS("-DHAVE_LIBCAP")
|
ADD_DEFINITIONS("-DHAVE_LIBCAP")
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# - This variable is also set elsewhere, I dont think it works this way
|
|
||||||
set(CMAKE_REQUIRED_LIBRARIES ${CAP_LIB})
|
|
||||||
endif(N2N_OPTION_USE_CAPLIB)
|
endif(N2N_OPTION_USE_CAPLIB)
|
||||||
|
|
||||||
if(N2N_OPTION_USE_PORTMAPPING)
|
if(N2N_OPTION_USE_PORTMAPPING)
|
||||||
|
|
|
@ -92,6 +92,10 @@ AS_IF([test "x$enable_pcap" != xno],
|
||||||
AC_DEFINE([N2N_HAVE_PCAP], [1], [Have PCAP library])
|
AC_DEFINE([N2N_HAVE_PCAP], [1], [Have PCAP library])
|
||||||
N2N_LIBS="-lpcap ${N2N_LIBS}"
|
N2N_LIBS="-lpcap ${N2N_LIBS}"
|
||||||
ADDITIONAL_TOOLS="$ADDITIONAL_TOOLS n2n-decode"
|
ADDITIONAL_TOOLS="$ADDITIONAL_TOOLS n2n-decode"
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# - pcap_set_immediate_mode has been available since libpcap 1.5
|
||||||
|
# in 2013 - probably should remove this check
|
||||||
AC_CHECK_LIB([pcap], [pcap_set_immediate_mode],
|
AC_CHECK_LIB([pcap], [pcap_set_immediate_mode],
|
||||||
AC_DEFINE([HAVE_PCAP_IMMEDIATE_MODE], [1], [Have pcap_immediate_mode])
|
AC_DEFINE([HAVE_PCAP_IMMEDIATE_MODE], [1], [Have pcap_immediate_mode])
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user