| if(UNIX) |
| check_function_exists(crypt HAVE_CRYPT_IN_SYSTEM_LIBRARIES) |
| if(HAVE_CRYPT_IN_SYSTEM_LIBRARIES) |
| set(HAVE_CRYPT TRUE) |
| else(HAVE_CRYPT_IN_SYSTEM_LIBRARIES) |
| check_library_exists(crypt crypt "" HAVE_CRYPT_IN_LIBCRYPT) |
| if(HAVE_CRYPT_IN_LIBCRYPT) |
| set(RPCAPD_LINK_LIBRARIES ${RPCAPD_LINK_LIBRARIES} crypt) |
| set(HAVE_CRYPT TRUE) |
| else(HAVE_CRYPT_IN_LIBCRYPT) |
| message(WARNING "crypt() not found. Won't be able to build rpcapd.") |
| endif(HAVE_CRYPT_IN_LIBCRYPT) |
| endif(HAVE_CRYPT_IN_SYSTEM_LIBRARIES) |
| endif(UNIX) |
| |
| # |
| # On UN*X, we need pthreads and crypt(). |
| # |
| if(WIN32 OR ((CMAKE_USE_PTHREADS_INIT OR PTHREADS_FOUND) AND HAVE_CRYPT)) |
| if(UNIX) |
| # |
| # Do we have getspnam()? |
| # |
| check_function_exists(getspnam HAVE_GETSPNAM) |
| |
| # |
| # Find library needed for getaddrinfo. |
| # NOTE: if you hand check_library_exists as its last argument a variable |
| # that's been set, it skips the test, so we need different variables. |
| # |
| include(CheckLibraryExists) |
| check_function_exists(getaddrinfo STDLIBS_HAVE_GETADDRINFO) |
| if(NOT STDLIBS_HAVE_GETADDRINFO) |
| check_library_exists(xnet getaddrinfo "" LIBXNET_HAS_GETADDRINFO) |
| if(LIBXNET_HAS_GETADDRINFO) |
| set(RPCAPD_LINK_LIBRARIES ${RPCAPD_LINK_LIBRARIES} xnet) |
| else(LIBXNET_HAS_GETADDRINFO) |
| include(CMakePushCheckState) |
| cmake_push_check_state() |
| set(CMAKE_REQUIRED_LIBRARIES nsl) |
| check_library_exists(socket getaddrinfo "" LIBSOCKET_HAS_GETADDRINFO) |
| cmake_pop_check_state() |
| if(LIBSOCKET_HAS_GETADDRINFO) |
| set(RPCAPD_LINK_LIBRARIES ${RPCAPD_LINK_LIBRARIES} socket nsl) |
| endif(LIBSOCKET_HAS_GETADDRINFO) |
| endif(LIBXNET_HAS_GETADDRINFO) |
| endif(NOT STDLIBS_HAVE_GETADDRINFO) |
| endif(UNIX) |
| |
| if(WIN32) |
| set(RPCAPD_EXTRA_SOURCES |
| win32-svc.c |
| ${pcap_SOURCE_DIR}/missing/getopt.c |
| ${pcap_SOURCE_DIR}/missing/win_snprintf.c |
| rpcapd.rc) |
| include_directories(${pcap_SOURCE_DIR}/rpcapd ${pcap_SOURCE_DIR}/missing) |
| endif(WIN32) |
| |
| add_executable(rpcapd |
| daemon.c |
| fileconf.c |
| log-stderr.c |
| rpcapd.c |
| ${pcap_SOURCE_DIR}/rpcap-protocol.c |
| ${pcap_SOURCE_DIR}/sockutils.c |
| ${pcap_SOURCE_DIR}/fmtutils.c |
| ${RPCAPD_EXTRA_SOURCES} |
| ) |
| |
| if(NOT C_ADDITIONAL_FLAGS STREQUAL "") |
| set_target_properties(rpcapd PROPERTIES COMPILE_FLAGS ${C_ADDITIONAL_FLAGS}) |
| endif() |
| |
| if(WIN32) |
| target_link_libraries(rpcapd ${LIBRARY_NAME} |
| ${RPCAPD_LINK_LIBRARIES} ${PCAP_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) |
| else(WIN32) |
| target_link_libraries(rpcapd ${LIBRARY_NAME}_static |
| ${RPCAPD_LINK_LIBRARIES} ${PCAP_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) |
| endif(WIN32) |
| |
| ###################################### |
| # Install rpcap daemon and man pages |
| ###################################### |
| |
| # |
| # "Define GNU standard installation directories", which actually |
| # are also defined, to some degree, by autotools, and at least |
| # some of which are general UN*X conventions. |
| # |
| include(GNUInstallDirs) |
| |
| set(MANADMIN_EXPAND rpcapd.manadmin.in) |
| |
| if(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
| install(TARGETS rpcapd DESTINATION bin/amd64) |
| else(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
| install(TARGETS rpcapd DESTINATION bin) |
| endif(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
| |
| # On UN*X, and on Windows when not using MSVC, generate process man |
| # pages and arrange that they be installed. |
| if(NOT MSVC) |
| # |
| # Man pages. |
| # |
| # For each section of the manual for which we have man pages |
| # that require macro expansion, do the expansion. |
| # |
| set(MANADMIN "") |
| foreach(TEMPLATE_MANPAGE ${MANADMIN_EXPAND}) |
| string(REPLACE ".manadmin.in" ".${MAN_ADMIN_COMMANDS}" MANPAGE ${TEMPLATE_MANPAGE}) |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${TEMPLATE_MANPAGE} ${CMAKE_CURRENT_BINARY_DIR}/${MANPAGE} @ONLY) |
| set(MANADMIN ${MANADMIN} ${CMAKE_CURRENT_BINARY_DIR}/${MANPAGE}) |
| endforeach(TEMPLATE_MANPAGE) |
| install(FILES ${MANADMIN} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${MAN_ADMIN_COMMANDS}) |
| endif(NOT MSVC) |
| endif(WIN32 OR ((CMAKE_USE_PTHREADS_INIT OR PTHREADS_FOUND) AND HAVE_CRYPT)) |