diff --git a/CMakeLists.txt b/CMakeLists.txt index beba685be4..0f8299ce0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,17 +25,25 @@ project(wireshark C) set(dumpcap_LIBS wiretap) +#Where to find local cmake scripts +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) + # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG # Disable this later. Alternative: "make VERBOSE=1" set(CMAKE_VERBOSE_MAKEFILE ON) set(BUILD_SHARED_LIBS ON) -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) -include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/wiretap) +#Defines CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_DATADIR, etc ... +include(CMakeInstallDirs) -add_definitions(-DHAVE_CONFIG_H -D_U_=\"__attribute__\(\(unused\)\)\") +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/wiretap +) #Where to put libraries if(NOT LIBRARY_OUTPUT_PATH) @@ -50,10 +58,27 @@ option(ENABLE_STATIC "Build a static version of Wireshark" OFF) option(ENABLE_ADNS "Build with adns support" ON) option(ENABLE_DBUS "Build with D-Bus support" OFF) option(ENABLE_DBUS_TEST "Build with D-Bus unitest support" OFF) +option(ENABLE_EXTRA_GCC_CHECKS "Do additional -W checks in GCC" OFF) -if(BUILD_WIRESHARK OR BUILD_TSHARK) +if(ENABLE_EXTRA_GCC_CHECKS) + set(WIRESHARK_EXTRA_GCC_FLAGS -Wcast-qual -Wcast-align -Wbad-function-cast + -pedantic -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings) +endif(ENABLE_EXTRA_GCC_CHECKS) + +if(CMAKE_COMPILER_IS_GNUCC) + add_definitions( + -DHAVE_CONFIG_H + -D_U_=\"__attribute__\(\(unused\)\)\" + -Wall -Wpointer-arith -W + ${WIRESHARK_EXTRA_GCC_FLAGS} + ) +else(CMAKE_COMPILER_IS_GNUCC) + add_definitions(-DHAVE_CONFIG_H -D_U_=\"\") +endif(CMAKE_COMPILER_IS_GNUCC) + +if(BUILD_WIRESHARK OR BUILD_TSHARK OR BUILD_DUMPCAP) subdirs(wiretap) -endif(BUILD_WIRESHARK OR BUILD_TSHARK) +endif(BUILD_WIRESHARK OR BUILD_TSHARK OR BUILD_DUMPCAP) #The minimum package list set(PACKAGELIST GLIB2 ZLIB PCAP ${PACKAGELIST}) @@ -94,10 +119,10 @@ set(CPACK_PACKAGE_NAME wireshark) set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "capture packet") set(CPACK_PACKAGE_VENDOR "wireshark") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") -#set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "94") -set(CPACK_PACKAGE_VERSION_PATCH "0") +set(CPACK_PACKAGE_VERSION_MINOR "99") +set(CPACK_PACKAGE_VERSION_PATCH "4") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") @@ -166,7 +191,7 @@ check_64bit_format(q FORMAT_64BIT) check_64bit_format(I64 FORMAT_64BIT) if(NOT FORMAT_64BIT) - message(FATAL " 64 bit formart missing") + message(FATAL " 64 bit format missing") endif(NOT FORMAT_64BIT) set(PRIX64 "${FORMAT_64BIT}X") @@ -220,9 +245,7 @@ if(BUILD_DUMPCAP) add_executable(dumpcap ${DUMPCAP_FILES}) target_link_libraries(dumpcap ${dumpcap_LIBS}) - install(TARGETS dumpcap RUNTIME DESTINATION bin) + install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}) endif(BUILD_DUMPCAP) - - diff --git a/cmake/modules/CMakeInstallDirs.cmake b/cmake/modules/CMakeInstallDirs.cmake new file mode 100644 index 0000000000..543c5f376e --- /dev/null +++ b/cmake/modules/CMakeInstallDirs.cmake @@ -0,0 +1,54 @@ +# - CMakeInstallDirs.cmake +# This script defines some variables that describe paths needed to install an application: +# CMAKE_INSTALL_BINDIR + +# CMAKE_INSTALL_DATADIR +# CMAKE_INSTALL_SYSCONFDIR +# CMAKE_INSTALL_LOCALSTATEDIR +# CMAKE_INSTALL_LIBDIR +# CMAKE_INSTALL_MANDIR + +#Documentation string +SET(CMAKE_INSTALL_BINDIR_DOC "user executables [PREFIX/bin]") +SET(CMAKE_INSTALL_SBINDIR_DOC "system admin executables [EPREFIX/sbin]") +SET(CMAKE_INSTALL_DATADIR_DOC "read-only architecture-independent data [PREFIX/share]") +SET(CMAKE_INSTALL_SYSCONFDIR_DOC "read-only single-machine data [PREFIX/etc]") +SET(CMAKE_INSTALL_LOCALSTATEDIR_DOC "modifiable single-machine data [PREFIX/var]") +SET(CMAKE_INSTALL_LIBDIR_DOC "object code libraries [PREFIX/lib]") +SET(CMAKE_INSTALL_MANDIR_DOC "man documentation [PREFIX/man]") + +#Special case for /etc and /var when prefix is /usr +IF(${CMAKE_INSTALL_PREFIX} STREQUAL "/usr") + SET(CMAKE_INSTALL_SYSCONFDIR "/etc" CACHE PATH ${CMAKE_INSTALL_SYSCONFDIR_DOC}) + SET(CMAKE_INSTALL_LOCALSTATEDIR "/var" CACHE PATH ${CMAKE_INSTALL_LOCALSTATEDIR_DOC}) +ENDIF(${CMAKE_INSTALL_PREFIX} STREQUAL "/usr") + +#General case +SET(CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}/bin" + CACHE PATH ${CMAKE_INSTALL_BINDIR_DOC}) +SET(CMAKE_INSTALL_SBINDIR "${CMAKE_INSTALL_PREFIX}/sbin" + CACHE PATH ${CMAKE_INSTALL_SBINDIR_DOC}) +SET(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_PREFIX}/share" + CACHE PATH ${CMAKE_INSTALL_DATADIR_DOC}) +SET(CMAKE_INSTALL_SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" + CACHE PATH ${CMAKE_INSTALL_SYSCONFDIR_DOC}) +SET(CMAKE_INSTALL_LOCALSTATEDIR "${CMAKE_INSTALL_PREFIX}/var" + CACHE PATH ${CMAKE_INSTALL_LOCALSTATEDIR_DOC}) +SET(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib" + CACHE PATH ${CMAKE_INSTALL_LIBDIR_DOC}) +SET(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_PREFIX}/man" + CACHE PATH ${CMAKE_INSTALL_MANDIR_DOC}) + + +MARK_AS_ADVANCED( + CMAKE_INSTALL_BINDIR + CMAKE_INSTALL_DATADIR + CMAKE_INSTALL_SYSCONFDIR + CMAKE_INSTALL_LOCALSTATEDIR + CMAKE_INSTALL_LIBDIR + CMAKE_INSTALL_MANDIR +) + + + + diff --git a/cmake/modules/Check64BitFormat.cmake b/cmake/modules/Check64BitFormat.cmake index 4f8c843163..0941591fca 100644 --- a/cmake/modules/Check64BitFormat.cmake +++ b/cmake/modules/Check64BitFormat.cmake @@ -14,7 +14,7 @@ # check_64bit_format(I64 FORMAT_64BIT) # # if(NOT FORMAT_64BIT) -# message(FATAL " 64 bit formart missing") +# message(FATAL " 64 bit format missing") # endif(NOT FORMAT_64BIT) # # set(PRIX64 "${FORMAT_64BIT}X") diff --git a/cmake/modules/FindPCAP.cmake b/cmake/modules/FindPCAP.cmake index bd0da85eff..fbbaf62eac 100644 --- a/cmake/modules/FindPCAP.cmake +++ b/cmake/modules/FindPCAP.cmake @@ -1,26 +1,63 @@ # - 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. +# # PCAP_INCLUDE_DIRS - where to find pcap.h, etc. # PCAP_LIBRARIES - List of libraries when using pcap. # PCAP_FOUND - True if pcap found. -#Includes -FIND_PATH(PCAP_INCLUDE_DIR pcap.h - /usr/local/include - /usr/include -) + +IF(EXISTS $ENV{PCAPDIR}) + FIND_PATH(PCAP_INCLUDE_DIR + NAMES + pcap/pcap.h + pcap.h + PATHS + $ENV{PCAPDIR} + NO_DEFAULT_PATH + ) + + FIND_LIBRARY(PCAP_LIBRARY + NAMES + pcap + PATHS + $ENV{PCAPDIR} + NO_DEFAULT_PATH + ) + + +ELSE(EXISTS $ENV{PCAPDIR}) + FIND_PATH(PCAP_INCLUDE_DIR + NAMES + pcap/pcap.h + pcap.h + ) + + FIND_LIBRARY(PCAP_LIBRARY + NAMES + pcap + ) + +ENDIF(EXISTS $ENV{PCAPDIR}) SET(PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR}) - -#Library -FIND_LIBRARY(PCAP_LIBRARY - NAMES pcap - PATHS /usr/lib /usr/local/lib -) - SET(PCAP_LIBRARIES ${PCAP_LIBRARY}) +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) + +IF(PCAP_LIBRARIES) + MESSAGE(STATUS "Pcap library set to ${PCAP_LIBRARIES}") +ELSE(PCAP_LIBRARIES) + MESSAGE(FATAL "Pcap library cannot be found") +ENDIF(PCAP_LIBRARIES) + #Functions INCLUDE(CheckFunctionExists) SET(CMAKE_REQUIRED_INCLUDES ${PCAP_INCLUDE_DIRS})