diff options
-rw-r--r-- | Makefile.am | 68 | ||||
-rw-r--r-- | Makefile.common | 18 | ||||
-rw-r--r-- | Makefile.nmake | 4 | ||||
-rw-r--r-- | configure.ac | 218 |
4 files changed, 162 insertions, 146 deletions
diff --git a/Makefile.am b/Makefile.am index 9ccc8c3b7d..69349653e3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -35,24 +35,22 @@ AM_CLEAN_CFLAGS = -Werror endif bin_PROGRAMS = \ - @wireshark_bin@ \ - @tshark_bin@ \ - @text2pcap_bin@ \ - @mergecap_bin@ \ - @capinfos_bin@ \ - @editcap_bin@ \ - @randpkt_bin@ \ - @dftest_bin@ \ - @dumpcap_bin@ \ + @wireshark_bin@ \ + @tshark_bin@ \ + @text2pcap_bin@ \ + @mergecap_bin@ \ + @capinfos_bin@ \ + @editcap_bin@ \ + @randpkt_bin@ \ + @dftest_bin@ \ + @dumpcap_bin@ \ @reordercap_bin@ \ - @rawshark_bin@ \ + @rawshark_bin@ \ @echld_test_bin@ - -EXTRA_PROGRAMS = wireshark tshark capinfos editcap mergecap dftest \ - randpkt text2pcap dumpcap reordercap rawshark wireshark_cxx echld_test - - +EXTRA_PROGRAMS = wireshark wireshark-qt tshark capinfos editcap mergecap \ + dftest randpkt text2pcap dumpcap reordercap rawshark wireshark_cxx \ + echld_test # # Wireshark configuration files are put in $(pkgdatadir). @@ -323,10 +321,20 @@ endif # HAVE_PLUGINS include Makefile.common if ENABLE_STATIC +if HAVE_GTK wireshark_LDFLAGS = -Wl,-static -all-static +endif +if HAVE_Qt +wireshark_qt_LDFLAGS = -Wl,-static -all-static +endif else +if HAVE_GTK wireshark_LDFLAGS = -export-dynamic endif +if HAVE_Qt +wireshark_qt_LDFLAGS = -export-dynamic +endif +endif # Libraries and plugin flags with which to link wireshark. # @@ -350,14 +358,7 @@ endif # although it's also possible that -lgmodule is in GTK_LIBS but not # GLIB_LIBS (that's the case on my machine right now, for example). # -if HAVE_Qt -wireshark_ui_ldadd = ui/qt/libqtui.a -else -wireshark_ui_ldadd = ui/gtk/libgtkui.a -endif - -wireshark_LDADD = \ - $(wireshark_ui_ldadd) \ +wireshark_ldadd = \ ui/libui.a \ ui/libui_dirty.a \ codecs/libcodec.a \ @@ -383,7 +384,21 @@ wireshark_LDADD = \ @GLIB_LIBS@ \ -lm +if HAVE_Qt +wireshark_qt_SOURCES = $(WIRESHARK_COMMON_SRC) +wireshark_qt_INCLUDES = $(WIRESHARK_COMMON_INCLUDES) +wireshark_qt_CFLAGS = $(AM_CLEAN_CFLAGS) $(py_dissectors_dir) +wireshark_qt_LDADD = ui/qt/libqtui.a $(wireshark_ldadd) +wireshark_qt_LINK = $(CXXLINK) +endif + +if HAVE_GTK +wireshark_SOURCES = $(WIRESHARK_COMMON_SRC) +wireshark_INCLUDES = $(WIRESHARK_COMMON_INCLUDES) wireshark_CFLAGS = $(AM_CLEAN_CFLAGS) $(py_dissectors_dir) +wireshark_LDADD = ui/gtk/libgtkui.a $(wireshark_ldadd) +wireshark_LINK = $(LINK) +endif # Ideally we could trigger automatic c++ linking here with # nodist_EXTRA_wireshark_SOURCES = dummy.cpp @@ -393,12 +408,6 @@ wireshark_CFLAGS = $(AM_CLEAN_CFLAGS) $(py_dissectors_dir) nodist_EXTRA_wireshark_cxx_SOURCES = dummy.cpp wireshark_cxx_SOURCES = -if HAVE_WIRESHARK_CXX -wireshark_LINK = $(CXXLINK) -else -wireshark_LINK = $(LINK) -endif - if ENABLE_STATIC tshark_LDFLAGS = -Wl,-static -all-static else @@ -1196,3 +1205,4 @@ if HAVE_DOXYGEN rm -f wsar_html.zip zip -rq wsar_html.zip wsar_html endif + diff --git a/Makefile.common b/Makefile.common index a22b3c7c2e..635e8c4ff0 100644 --- a/Makefile.common +++ b/Makefile.common @@ -44,7 +44,7 @@ GENERATED_C_FILES = \ GENERATED_FILES = $(GENERATED_C_FILES) $(GENERATED_HEADER_FILES) # sources common for wireshark, tshark, and rawshark -WIRESHARK_COMMON_SRC = \ +SHARK_COMMON_SRC = \ $(PLATFORM_SRC) \ capture-pcap-util.c \ cfile.c \ @@ -62,7 +62,7 @@ WIRESHARK_COMMON_SRC = \ version_info.c # corresponding headers -WIRESHARK_COMMON_INCLUDES = \ +SHARK_COMMON_INCLUDES = \ svnversion.h \ capture-pcap-util.h \ capture-pcap-util-int.h \ @@ -102,8 +102,8 @@ SHARK_COMMON_CAPTURE_INCLUDES = \ capture_ui_utils.h # wireshark specifics -wireshark_SOURCES = \ - $(WIRESHARK_COMMON_SRC) \ +WIRESHARK_COMMON_SRC = \ + $(SHARK_COMMON_SRC) \ $(SHARK_COMMON_CAPTURE_SRC) \ airpcap_loader.c \ capture.c \ @@ -123,7 +123,7 @@ wireshark_SOURCES = \ ws80211_utils.c # corresponding headers -wireshark_INCLUDES = \ +WIRESHARK_COMMON_INCLUDES = \ airpcap.h \ airpcap_loader.h \ capture.h \ @@ -145,7 +145,7 @@ wireshark_INCLUDES = \ # tshark specifics tshark_SOURCES = \ - $(WIRESHARK_COMMON_SRC) \ + $(SHARK_COMMON_SRC) \ $(SHARK_COMMON_CAPTURE_SRC) \ capture_opts.c \ tempfile.c \ @@ -153,7 +153,7 @@ tshark_SOURCES = \ # rawshark specifics rawshark_SOURCES = \ - $(WIRESHARK_COMMON_SRC) \ + $(SHARK_COMMON_SRC) \ rawshark.c # text2pcap specifics @@ -223,7 +223,7 @@ dumpcap_INCLUDES = \ # this target needed for distribution only noinst_HEADERS = \ - $(WIRESHARK_COMMON_INCLUDES) \ + $(SHARK_COMMON_INCLUDES) \ $(SHARK_COMMON_CAPTURE_INCLUDES) \ - $(wireshark_INCLUDES) \ + $(WIRESHARK_COMMON_INCLUDES) \ $(dumpcap_INCLUDES) diff --git a/Makefile.nmake b/Makefile.nmake index 61989c1d9c..0aac1709e9 100644 --- a/Makefile.nmake +++ b/Makefile.nmake @@ -60,7 +60,7 @@ WTAP_PLUGIN_SOURCES = \ include Makefile.common -wireshark_OBJECTS = $(wireshark_SOURCES:.c=.obj) +wireshark_OBJECTS = $(WIRESHARK_COMMON_SRC:.c=.obj) tshark_OBJECTS = $(tshark_SOURCES:.c=.obj) rawshark_OBJECTS = $(rawshark_SOURCES:.c=.obj) ###text2pcap_OBJECTS = $(text2pcap_SOURCES:.c=.obj) @@ -1287,7 +1287,7 @@ install-all: install-generated-files checkapi_local: $(PERL) tools/checkAPIs.pl -build \ - $(wireshark_SOURCES) \ + $(WIRESHARK_COMMON_SRC) \ $(TSHARK_TAP_SRC) \ # $(EXTRA_wireshark_SOURCES) diff --git a/configure.ac b/configure.ac index 942db32fe8..d58e7c68de 100644 --- a/configure.ac +++ b/configure.ac @@ -282,11 +282,6 @@ if test "x$with_gcrypt" = "xyes"; then ) fi -AC_ARG_WITH([qt], - AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@], - [use Qt instead of GTK+ @<:@default=no@:>@]), - with_qt="$withval", with_qt="no") - AC_ARG_WITH(libnl, AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@], [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]), @@ -406,6 +401,16 @@ linux*) fi esac +AC_ARG_WITH([qt], + AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@], + [use Qt @<:@default=no@:>@]), + with_qt="$withval", with_qt="no") + +AC_ARG_WITH([gtk2], + AC_HELP_STRING( [--with-gtk2=@<:@yes/no@:>@], + [use GTK+ 2.0 @<:@default=yes@:>@]), + with_gtk2="$withval", with_gtk2="no") + AC_ARG_WITH([gtk3], AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@], [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]), @@ -954,10 +959,9 @@ if test "$HAVE_GNU_SED" = no ; then fi # Enable/disable wireshark - AC_ARG_ENABLE(wireshark, AC_HELP_STRING( [--enable-wireshark], - [build GTK+-based Wireshark @<:@default=yes, if GTK+ available@:>@]), + [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]), enable_wireshark=$enableval,enable_wireshark=yes) AC_ARG_ENABLE(packet-editor, @@ -1040,6 +1044,8 @@ AC_SUBST(QT_MIN_VERSION) # 3.6.0: 24 Sep 2012 # 3.8.0: 25 Mar 2013 +have_qt=no +have_gtk=no if test "x$enable_wireshark" = "xyes"; then if test "x$with_qt" = "xyes"; then @@ -1066,41 +1072,33 @@ if test "x$enable_wireshark" = "xyes"; then # compile. # CPPFLAGS="-DQT_GUI_LIB" + fi - # - # We don't know whether we have GTK+, but we - # won't be using it, so it's as if we don't - # have it. - # - have_gtk=no - else - # - # Not Qt - either GTK+ 3.x or 2.x. - # - if test "x$with_gtk3" = "xyes"; then - AM_PATH_GTK_3_0(3.0.0, - [ - CFLAGS="$CFLAGS $GTK_CFLAGS" - CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" - have_gtk=yes - AC_DEFINE(HAVE_GTK, 1, - [Define to 1 if compiling with GTK]) - ], have_gtk=no) + if test "x$with_gtk3" = "xyes" -a "x$with_gtk2" = "xyes" ; then + AC_MSG_ERROR(--with-gtk2 and --with-gtk3 are mutually exclusive) + fi - else - AM_PATH_GTK_2_0($GTK2_MIN_VERSION, - [ - CFLAGS="$CFLAGS $GTK_CFLAGS" - CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" - have_gtk=yes - AC_DEFINE(HAVE_GTK, 1, - [Define to 1 if compiling with GTK]) - ], have_gtk=no) - fi + if test "x$with_gtk3" = "xyes"; then + AM_PATH_GTK_3_0(3.0.0, + [ + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + have_gtk=yes + AC_DEFINE(HAVE_GTK, 1, + [Define to 1 if compiling with GTK]) + ], have_gtk=no) + fi + + if test "x$with_gtk2" = "xyes"; then + AM_PATH_GTK_2_0($GTK2_MIN_VERSION, + [ + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + have_gtk=yes + AC_DEFINE(HAVE_GTK, 1, + [Define to 1 if compiling with GTK]) + ], have_gtk=no) fi -else - have_qt=no - have_gtk=no fi GLIB_MIN_VERSION=2.16.0 @@ -1132,61 +1130,52 @@ AC_SUBST(GLIB_MIN_VERSION) # 2.34.0: 24 Sep 2012 # 2.36.0: 25 Mar 2013 -have_wireshark_cxx="false" -if test "$have_gtk" = "no" ; then +use_glib_cflags="true" +if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then + # We have both GTK and Qt and thus will be building both wireshark + # and wireshark-qt. + + wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)" + wireshark_man="wireshark.1" + wireshark_SUBDIRS="codecs ui/qt ui/gtk" +fi +if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then + # We don't have GTK+ but we have Qt. + + wireshark_bin="wireshark-qt\$(EXEEXT)" + wireshark_man="wireshark.1" + wireshark_SUBDIRS="codecs ui/qt" +fi +if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then + # We have GTK+ but not Qt. + + wireshark_bin="wireshark\$(EXEEXT)" + wireshark_man="wireshark.1" + wireshark_SUBDIRS="codecs ui/gtk" + use_glib_cflags="false" +fi +if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then + # We have neither GTK+ nor Qt. # - # We don't have GTK+. + # If they didn't explicitly say "--disable-wireshark", + # fail (so that, unless they explicitly indicated that + # they don't want Wireshark, we stop so they know they + # won't be getting Wireshark unless they fix the GTK+/Qt + # problem). # - if test "$have_qt" = "yes" ; then - # - # However, we do have Qt, and thus will be building - # Wireshark (if the user had explicitly disabled - # Wireshark, we wouldn't have looked for Qt, so we - # wouldn't think we had it, and thus wouldn't be here). - # - wireshark_bin="wireshark\$(EXEEXT)" - # Give automake a hint that it needs to use c++ linking. - have_wireshark_cxx="yes" - wireshark_man="wireshark.1" - wireshark_SUBDIRS="codecs ui/qt" - else - # - # We don't have Qt, either, which means we have no UI - # toolkit. - # - # If they didn't explicitly say "--disable-wireshark", - # fail (so that, unless they explicitly indicated that - # they don't want Wireshark, we stop so they know they - # won't be getting Wireshark unless they fix the GTK+/Qt - # problem). - # - if test "x$enable_wireshark" = "xyes"; then - if test "x$with_gtk3" = "xyes"; then - AC_MSG_ERROR([GTK+ $GTK3_MIN_VERSION or later isn't available, so Wireshark can't be compiled]) - else - AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled]) - fi + if test "x$enable_wireshark" = "xyes"; then + if test "x$with_gtk3" = "xyes"; then + AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled]) + else + AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled]) fi - wireshark_bin="" - wireshark_man="" fi - # Use GLIB_CFLAGS - AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, - [ - CFLAGS="$CFLAGS $GLIB_CFLAGS" - CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS" - ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule) -else - # - # We have GTK+, and thus will be building Wireshark (if the user - # had explicitly disabled Wireshark, we wouldn't have looked for - # GTK+, so we wouldn't think we had it, and thus wouldn't be here). - # - wireshark_bin="wireshark\$(EXEEXT)" - wireshark_man="wireshark.1" - wireshark_SUBDIRS="codecs ui/gtk" - # Don't use GLIB_CFLAGS - AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule) + wireshark_bin="" + wireshark_man="" +fi + +if test "$have_gtk" = "yes" ; then + # If we have GTK then add flags for it. CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS" CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS" @@ -1199,6 +1188,19 @@ else fi fi +# XXX - Is this really necessary? When we build with both Gtk+ and Qt it works... +if test "$use_glib_cflags" = "true"; then + # Use GLIB_CFLAGS + AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, + [ + CFLAGS="$CFLAGS $GLIB_CFLAGS" + CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS" + ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule) +else + # Don't use GLIB_CFLAGS + AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule) +fi + # # "make dist" requires that we have the Qt build tools. # @@ -1410,7 +1412,8 @@ fi AC_SUBST(wireshark_bin) AC_SUBST(wireshark_man) AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes") -AM_CONDITIONAL(HAVE_WIRESHARK_CXX, test "$have_wireshark_cxx" = "yes") +# XXX - is it bad form for HAVE_GTK to be both a define and a conditional? +AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes") # Enable/disable tshark @@ -2532,21 +2535,23 @@ dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl]) # Pretty messages -if test "x$have_qt" = "xyes"; then - gui_lib_message=" (with Qt)" -else - if test "x$have_gtk" = "xyes"; then - if test "x$with_gtk3" = "xyes"; then - gui_lib_message=" (with GTK+ 3" - else - gui_lib_message=" (with GTK+ 2" - fi - if test "x$have_ige_mac" = "xyes"; then - gui_lib_message="$gui_lib_message and Mac OS X integration)" - else - gui_lib_message="$gui_lib_message)" - fi +if test "x$have_gtk" = "xyes"; then + if test "x$with_gtk3" = "xyes"; then + gtk_lib_message=" (with GTK+ 3" + else + gtk_lib_message=" (with GTK+ 2" fi + if test "x$have_ige_mac" = "xyes"; then + gtk_lib_message="$gtk_lib_message and Mac OS X integration)" + else + gtk_lib_message="$gtk_lib_message)" + fi +fi + +if test "x$have_qt" = "xyes" ; then + enable_qtshark="yes" +else + enable_qtshark="no" fi if test "x$enable_setcap_install" = "xyes" ; then @@ -2633,7 +2638,8 @@ fi echo "" echo "The Wireshark package has been configured with the following options." -echo " Build wireshark : $enable_wireshark""$gui_lib_message" +echo " Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message" +echo " Build wireshark-qt : $enable_qtshark" echo " Build tshark : $enable_tshark" echo " Build capinfos : $enable_capinfos" echo " Build editcap : $enable_editcap" |