aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt47
-rw-r--r--cmake/modules/CMakeInstallDirs.cmake54
-rw-r--r--cmake/modules/Check64BitFormat.cmake2
-rw-r--r--cmake/modules/FindPCAP.cmake59
4 files changed, 138 insertions, 24 deletions
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(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)
+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
-)
-SET(PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR})
+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
+ )
+
-#Library
-FIND_LIBRARY(PCAP_LIBRARY
- NAMES pcap
- PATHS /usr/lib /usr/local/lib
-)
+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})
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})