diff options
-rw-r--r-- | CMakeLists.txt | 51 | ||||
-rw-r--r-- | README.cmake | 70 | ||||
-rw-r--r-- | cmake/modules/FindGTK2.cmake | 260 | ||||
-rw-r--r-- | cmake/modules/FindPcap.cmake | 27 | ||||
-rw-r--r-- | wiretap/CMakeLists.txt | 40 |
5 files changed, 448 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..34c8086ab0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,51 @@ +PROJECT(dumpcap C) + +SET(dumpcap_LIBS wiretap) + +SET(CMAKE_VERBOSE_MAKEFILE ON) +SET(BUILD_SHARED_LIBS ON) +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) + +SET(PLATFORM_SRC + capture-pcap-util-unix.c +) + +SET(dumpcap_FILES + capture_opts.c + capture_loop.c + capture-pcap-util.c + capture_stop_conditions.c + clopts_common.c + conditions.c + dumpcap.c + pcapio.c + ringbuffer.c + sync_pipe_write.c + tempfile.c + version_info.c + + ${PLATFORM_SRC} +) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/wiretap) + +ADD_DEFINITIONS(-DHAVE_CONFIG_H -D_U_=\"__attribute__\(\(unused\)\)\") + +LINK_DIRECTORIES(wiretap) + +ADD_EXECUTABLE(dumpcap ${dumpcap_FILES}) + +FIND_PACKAGE(GTK2) +INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIR}) +SET(dumpcap_LIBS ${dumpcap_LIBS} ${GTK2_LIBRARIES}) + +FIND_PACKAGE(ZLIB) +INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) +SET(dumpcap_LIBS ${dumpcap_LIBS} ${ZLIB_LIBRARIES}) + +FIND_PACKAGE(Pcap) +INCLUDE_DIRECTORIES(${PCAP_INCLUDE_DIR}) +SET(dumpcap_LIBS ${dumpcap_LIBS} ${PCAP_LIBRARIES}) + +TARGET_LINK_LIBRARIES(dumpcap ${dumpcap_LIBS}) + diff --git a/README.cmake b/README.cmake new file mode 100644 index 0000000000..4e0a9986d9 --- /dev/null +++ b/README.cmake @@ -0,0 +1,70 @@ +Placeholder for cmake development stuff :-) + + Notice + + The CMake build system for Wireshark is not yet ready for + building the whole system. You'll still need autofoo to buld it. + The only thing that can be build is dumpcap, and even that one + requires that you successfully ran autofoo prior to running cmake + (e.g. config.h is not yet build, lex and yacc are not run). + Basically this is an experiment and if we find out that it works + and we like cmake more than autofoo we might switch one day. + +Table of contents +================= + +How to get started with cmake? +Why cmake? +Why not cmake? +What needs to be done? + +How to get started with cmake? +============================== + +You can find documentation on cmake at: http://www.cmake.org/ + +cmake is designed to support out of tree builds. So much so, that +in tree builds do not work properly in all cases. + +How to do out of tree build (Unix/Linux): +1) Install cmake. +2) Build the project with the old build system once (to generate + config.h and run bison and flex to generate some c-files). +3) Assuming, you are in the top directory of the wireshark source + cd .. +4) mkdir build +5) cd build +6) cmake ../<Name_of_WS_source_dir> +7) make + +Why cmake? +========== +- Can create project files for some MS and Apple IDEs. +- Fast +- Easier to understand/learn +- One build infrastructure even including Windows? +... + +Why not cmake? +============== +- Lots of work to do +- Everyone who wants to build from source needs cmake +- Current state of documentation isn't really better than + autofoo documentation, in some respect it's even worse + (you need to buy a book to get an explanation as to how + cmake really works). +... + +What needs to be done? +====================== + +only dumpcap and libwiretap have been done, and even those rely on +autofoo having been run before: + +- Add proper GTK1/GLIB2/GLIB1 detection (currently links against gtk2 + to pull in glib2). +- Create config.h +- Autocreated source files in wiretap need to be build from .l, .y files. + +All other tools and libs still need to be built. + diff --git a/cmake/modules/FindGTK2.cmake b/cmake/modules/FindGTK2.cmake new file mode 100644 index 0000000000..2ea148bcd3 --- /dev/null +++ b/cmake/modules/FindGTK2.cmake @@ -0,0 +1,260 @@ +# +# try to find GTK2 (and glib) and GTKGLArea +# +# +# Jan Woetzel 06/2004: added /opt/gnome/include/gtk-1.2 path and $ENV{GTK2_HOME} +# Andreas Schneider 08/2006: added pkgconfig, added lib64 include dirs +# Joerg Mayer 2006-08-31: rename GTK to GTK2 + + +# GTK2_INCLUDE_DIR - Directories to include to use GTK +# GTK2_LIBRARIES - Files to link against to use GTK +# GTK2_FOUND - If false, don't try to use GTK +# GTK2_GL_FOUND - If false, don't try to use GTK's GL features + + +# don't even bother under WIN32 +IF(UNIX) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + INCLUDE(UsePkgConfig) + + PKGCONFIG(gtk+-2.0 _GTK2IncDir _GTK2LinkDir _GTK2LinkFlags _GTK2Cflags) + + FIND_PATH(GTK2_gtk_INCLUDE_PATH gtk/gtk.h + $ENV{GTK2_HOME} + ${_GTK2IncDir} + /usr/include/gtk-2.0 + /usr/local/include/gtk-2.0 + /opt/gnome/include/gtk-2.0 ) + + # Some Linux distributions (e.g. Red Hat) have glibconfig.h + # and glib.h in different directories, so we need to look + # for both. + # - Atanas Georgiev <atanas@cs.columbia.edu> + PKGCONFIG(glib-2.0 _GLIB2IncDir _GLIB2inkDir _GLIB2LinkFlags _GLIB2Cflags) + PKGCONFIG(gmodule-2.0 _GMODULE2IncDir _GMODULE2inkDir _GMODULE2LinkFlags _GMODULE2Cflags) + SET(GDIR /opt/gnome/lib/glib-2.0/include) + FIND_PATH(GTK2_glibconfig_INCLUDE_PATH glibconfig.h + ${_GLIB2IncDir} + /opt/gnome/lib64/glib-2.0/include + /opt/gnome/lib/glib-2.0/include + /usr/lib64/glib-2.0/include + /usr/lib/glib-2.0/include + ) +MESSAGE("GTK2_glibconfig_INCLUDE_PATH = ${GTK2_glibconfig_INCLUDE_PATH}") + + FIND_PATH(GTK2_glib_INCLUDE_PATH glib.h + ${_GLIB2IncDir} + /opt/gnome/include/glib-2.0 + /usr/include/glib-2.0 + ) +# MESSAGE(" = ${}") + + FIND_PATH(GTK2_gtkgl_INCLUDE_PATH gtkgl/gtkglarea.h + ${_GLIB2IncDir} + /usr/include + /usr/local/include + /usr/openwin/share/include + /opt/gnome/include + ) + + PKGCONFIG(pango _PANGOIncDir _PANGOinkDir _PANGOLinkFlags _PANGOCflags) + + FIND_PATH(GTK2_pango_INCLUDE_PATH pango/pango.h + ${_PANGOIncDir} + /opt/gnome/include/pango-1.0 + /usr/include/pango-1.0 + ) + + PKGCONFIG(gdk-2.0 _GDK2IncDir _GDK2inkDir _GDK2LinkFlags _GDK2Cflags) + FIND_PATH(GTK2_gdkconfig_INCLUDE_PATH gdkconfig.h + ${_GDK2IncDir} + /opt/gnome/lib/gtk-2.0/include + /opt/gnome/lib64/gtk-2.0/include + /usr/lib/gtk-2.0/include + /usr/lib64/gtk-2.0/include + ) + + PKGCONFIG(cairo _CAIROIncDir _CAIROinkDir _CAIROLinkFlags _CAIROCflags) + FIND_PATH(GTK2_cairo_INCLUDE_PATH cairo.h + ${_CAIROIncDir} + /opt/gnome/include/cairo + /usr/include + /usr/include/cairo ) + #MESSAGE("GTK2_cairo_INCLUDE_PATH = ${GTK2_cairo_INCLUDE_PATH}") + + PKGCONFIG(atk _ATKIncDir _ATKinkDir _ATKLinkFlags _ATKCflags) + FIND_PATH(GTK2_atk_INCLUDE_PATH atk/atk.h + ${_ATKIncDir} + /opt/gnome/include/atk-1.0 + /usr/include/atk-1.0 + ) + #MESSAGE("GTK2_atk_INCLUDE_PATH = ${GTK2_atk_INCLUDE_PATH}") + + FIND_LIBRARY( GTK2_gtkgl_LIBRARY gtkgl + ${_GTK2IncDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + # + # The 12 suffix is thanks to the FreeBSD ports collection + # + + FIND_LIBRARY(GTK2_gtk_LIBRARY + NAMES gtk-x11-2.0 + PATHS ${_GTK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_gdk_LIBRARY + NAMES gdk-x11-2.0 + PATHS ${_GDK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_gmodule_LIBRARY + NAMES gmodule-2.0 + PATHS ${_GMODULE2inkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_glib_LIBRARY + NAMES glib-2.0 + PATHS ${_GLIB2inkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_Xi_LIBRARY + NAMES Xi + PATHS /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_gthread_LIBRARY + NAMES gthread-2.0 + PATHS /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + ) + + FIND_LIBRARY( GTK2_gobject_LIBRARY + NAMES gobject-2.0 + PATHS + /opt/gnome/lib + ) + + IF(GTK2_gtk_INCLUDE_PATH) + IF(GTK2_glibconfig_INCLUDE_PATH) + IF(GTK2_glib_INCLUDE_PATH) + IF(GTK2_gtk_LIBRARY) + IF(GTK2_glib_LIBRARY) + IF(GTK2_pango_INCLUDE_PATH) + IF(GTK2_atk_INCLUDE_PATH) + IF(GTK2_cairo_INCLUDE_PATH) + # Assume that if gtk and glib were found, the other + # supporting libraries have also been found. + + SET( GTK2_FOUND TRUE ) + SET( GTK2_INCLUDE_DIR ${GTK2_gtk_INCLUDE_PATH} + ${GTK2_glibconfig_INCLUDE_PATH} + ${GTK2_glib_INCLUDE_PATH} + ${GTK2_pango_INCLUDE_PATH} + ${GTK2_gdkconfig_INCLUDE_PATH} + ${GTK2_atk_INCLUDE_PATH} + ${GTK2_cairo_INCLUDE_PATH}) + SET( GTK2_LIBRARIES ${GTK2_gtk_LIBRARY} + ${GTK2_gdk_LIBRARY} + ${GTK2_glib_LIBRARY} ) + #${GTK2_gobject_LIBRARY}) + + IF(GTK2_gmodule_LIBRARY) + SET(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTK2_gmodule_LIBRARY}) + ENDIF(GTK2_gmodule_LIBRARY) + IF(GTK2_gthread_LIBRARY) + SET(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${GTK2_gthread_LIBRARY}) + ENDIF(GTK2_gthread_LIBRARY) + ELSE(GTK2_cairo_INCLUDE_PATH) + MESSAGE("Can not find cairo") + ENDIF(GTK2_cairo_INCLUDE_PATH) + ELSE(GTK2_atk_INCLUDE_PATH) + MESSAGE("Can not find atk") + ENDIF(GTK2_atk_INCLUDE_PATH) + + ELSE(GTK2_pango_INCLUDE_PATH) + MESSAGE("Can not find pango includes") + ENDIF(GTK2_pango_INCLUDE_PATH) + ELSE(GTK2_glib_LIBRARY) + MESSAGE("Can not find glib lib") + ENDIF(GTK2_glib_LIBRARY) + ELSE(GTK2_gtk_LIBRARY) + MESSAGE("Can not find gtk lib") + ENDIF(GTK2_gtk_LIBRARY) + ELSE(GTK2_glib_INCLUDE_PATH) + MESSAGE("Can not find glib includes") + ENDIF(GTK2_glib_INCLUDE_PATH) + ELSE(GTK2_glibconfig_INCLUDE_PATH) + MESSAGE("Can not find glibconfig") + ENDIF(GTK2_glibconfig_INCLUDE_PATH) + ELSE(GTK2_gtk_INCLUDE_PATH) + MESSAGE("Can not find gtk includes") + ENDIF(GTK2_gtk_INCLUDE_PATH) + + if (GTK2_FOUND) + if (NOT GTK2_FIND_QUIETLY) + message(STATUS "Found GTK: ${GTK2_LIBRARIES}") + endif (NOT GTK2_FIND_QUIETLY) + else (GTK2_FOUND) + if (GTK2_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find GTK") + endif (GTK2_FIND_REQUIRED) + endif (GTK2_FOUND) + + + MARK_AS_ADVANCED( + GTK2_gdk_LIBRARY + GTK2_glib_INCLUDE_PATH + GTK2_glib_LIBRARY + GTK2_glibconfig_INCLUDE_PATH + GTK2_gmodule_LIBRARY + GTK2_gthread_LIBRARY + GTK2_Xi_LIBRARY + GTK2_gtk_INCLUDE_PATH + GTK2_gtk_LIBRARY + GTK2_gtkgl_INCLUDE_PATH + GTK2_gtkgl_LIBRARY + GTK2_atk_INCLUDE_PATH + GTK2_gdkconfig_INCLUDE_PATH +# GTK2_gobject_LIBRARY + GTK2_pango_INCLUDE_PATH + ) + +ELSE(UNIX) + # MESSAGE("FindGTK2 is working on UNIX/LINUX, only!") +ENDIF(UNIX) + diff --git a/cmake/modules/FindPcap.cmake b/cmake/modules/FindPcap.cmake new file mode 100644 index 0000000000..8eb537d9c7 --- /dev/null +++ b/cmake/modules/FindPcap.cmake @@ -0,0 +1,27 @@ +# - Find pcap +# Find the PCAP includes and library +# +# PCAP_INCLUDE_DIR - where to find pcap.h, etc. +# PCAP_LIBRARIES - List of libraries when using pcap. +# PCAP_FOUND - True if pcap found. + +FIND_PATH(PCAP_INCLUDE_DIR pcap.h + /usr/local/include + /usr/include +) + +FIND_LIBRARY(PCAP_LIBRARIES + NAMES pcap + PATHS /usr/lib /usr/local/lib +) + +IF(PCAP_INCLUDE_DIR) + IF(PCAP_LIBRARIES) + SET( PCAP_FOUND "YES" ) + ENDIF(PCAP_LIBRARIES) +ENDIF(PCAP_INCLUDE_DIR) + +MARK_AS_ADVANCED( + PCAP_LIBRARIES + PCAP_INCLUDE_DIR +) diff --git a/wiretap/CMakeLists.txt b/wiretap/CMakeLists.txt new file mode 100644 index 0000000000..1bc5e9c0bd --- /dev/null +++ b/wiretap/CMakeLists.txt @@ -0,0 +1,40 @@ +ADD_LIBRARY(wiretap SHARED + 5views.c + airopeek9.c + ascend.c + atm.c + ber.c + buffer.c + catapult_dct2000.c + cosine.c + csids.c + dbs-etherwatch.c + erf.c + etherpeek.c + eyesdn.c + file_access.c + file_wrappers.c + hcidump.c + i4btrace.c + iptrace.c + iseries.c + k12.c + lanalyzer.c + libpcap.c + netmon.c + nettl.c + network_instruments.c + netxray.c + ngsniffer.c + pppdump.c + radcom.c + snoop.c + toshiba.c + visual.c + vms.c + wtap.c + + ascend-grammar.c + ascend-scanner.c +) + |