123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- 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))
|