aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2012-03-18 23:35:53 +0000
committerGuy Harris <guy@alum.mit.edu>2012-03-18 23:35:53 +0000
commit994d2b544ef9cc7e3d496bf9b792de22dfe796d0 (patch)
tree8680f385508659d446c19d866ac3f6406b0c6732
parentf79a5f32b7cae09210a96170bb757dd0f052b843 (diff)
Add automake support for Qt - use --with-qt as a configure script
argument. svn path=/trunk/; revision=41647
-rw-r--r--Makefile.am26
-rw-r--r--Makefile.common1
-rw-r--r--configure.in155
-rw-r--r--ui/qt/Makefile.am121
-rw-r--r--ui/qt/Makefile.common134
5 files changed, 389 insertions, 48 deletions
diff --git a/Makefile.am b/Makefile.am
index 596fad3148..8457c2d358 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -378,6 +378,26 @@ else
wireshark_LDFLAGS = -export-dynamic
endif
+#
+# XXX - hack to force C++ linking.
+#
+nodist_EXTRA_wireshark_SOURCES = dummy.cpp
+
+#
+# UI code for Wireshark with Qt.
+#
+wireshark_QT_UI_LIBS = \
+ ui/qt/libui.a \
+ @Qt_LIBS@
+
+#
+# UI code for Wireshark with GTK+.
+#
+wireshark_GTK_UI_LIBS = \
+ ui/gtk/libgtkui.a \
+ ui/gtk/libgtkui_dirty.a \
+ @GTK_LIBS@ -lm
+
# Libraries and plugin flags with which to link wireshark.
#
# Note that Wireshark doesn't have to be linked with @GLIB_LIBS@, as
@@ -386,8 +406,7 @@ endif
# @GTK_LIBS@ (as those are also needed for X applications, and GTK+
# applications are X applications).
wireshark_LDADD = \
- ui/gtk/libgtkui.a \
- ui/gtk/libgtkui_dirty.a \
+ @UI_LIBS@ \
ui/libui.a \
codecs/libcodec.a \
wiretap/libwiretap.la \
@@ -396,7 +415,6 @@ wireshark_LDADD = \
@SSL_LIBS@ \
$(plugin_ldadd) \
@PCAP_LIBS@ \
- @GTK_LIBS@ -lm \
@C_ARES_LIBS@ \
@ADNS_LIBS@ \
@KRB5_LIBS@ \
@@ -953,7 +971,7 @@ endif
endif
-DIST_SUBDIRS = asn1 codecs doc epan ui ui/cli ui/gtk help packaging plugins tools wiretap wsutil docbook
+DIST_SUBDIRS = asn1 codecs doc epan ui ui/cli ui/gtk ui/qt help packaging plugins tools wiretap wsutil docbook
if HAVE_PLUGINS
SUBDIRS = tools wsutil wiretap epan plugins packaging help ui @wireshark_SUBDIRS@ ui/cli . doc
diff --git a/Makefile.common b/Makefile.common
index 0ca12744d0..de233f7a00 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -102,6 +102,7 @@ SHARK_COMMON_CAPTURE_INCLUDES = \
wireshark_SOURCES = \
$(WIRESHARK_COMMON_SRC) \
$(SHARK_COMMON_CAPTURE_SRC) \
+ ui/qt/main.cpp \
airpcap_loader.c \
capture.c \
capture_info.c \
diff --git a/configure.in b/configure.in
index 74066df0b8..b98ec2360e 100644
--- a/configure.in
+++ b/configure.in
@@ -221,12 +221,16 @@ 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([gtk3],
AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
[use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]),
with_gtk3="$withval", with_gtk3="no")
-
# libsmi
# FIXME: currently the path argument to with-libsmi is being ignored
AX_LIBSMI
@@ -793,34 +797,73 @@ docdir=`(
)`
AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
-# GTK checks; we require GTK+ 2.12 or later.
-# We don't add $GLIB_LIBS to LIBS, because we don't want to force all
-# programs to be built with GTK+.
+# GTK+ and Qt checks; we require GTK+ 2.12 or later, and, for now,
+# don't require any particular version of Qt (except perhaps by
+# implication, as older versions might not support pkgconfig).
+#
+# We only do those if we're going to be building Wireshark;
+# otherwise, we don't have any GUI to build, so we don't use
+# GTK+ or Qt.
+#
+# We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
+# force all programs to be built with GTK+ or Qt.
#
if test "x$enable_wireshark" = "xyes"; then
- 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_qt" = "xyes"; then
+ PKG_CHECK_MODULES([Qt], [QtCore QtGui],
+ [
+ CFLAGS="$CFLAGS $Qt_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
+ #
+ # XXX - greasy hack to make ui/gtk/recent.c
+ # compile.
+ #
+ CPPFLAGS="-DQT_GUI_LIB $CPPFLAGS"
+ UI_LIBS='$(wireshark_QT_UI_LIBS)'
+ have_qt=yes
+ ],
+ [
+ AC_MSG_ERROR([Qt is not available])
+ ])
+ #
+ # 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
- AM_PATH_GTK_2_0(2.12.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)
+ #
+ # 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
+ UI_LIBS='$(wireshark_GTK_UI_LIBS)'
+ AC_DEFINE(HAVE_GTK, 1,
+ [Define to 1 if compiling with GTK])
+ ], have_gtk=no)
+
+ else
+ AM_PATH_GTK_2_0(2.12.0,
+ [
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
+ have_gtk=yes
+ UI_LIBS='$(wireshark_GTK_UI_LIBS)'
+ AC_DEFINE(HAVE_GTK, 1,
+ [Define to 1 if compiling with GTK])
+ ], have_gtk=no)
+ fi
fi
else
+ have_qt=no
have_gtk=no
fi
+AC_SUBST(UI_LIBS)
# GLib checks; we require GLib 2.14 or later, and require gmodule
# support, as we need that for dynamically loading plugins.
@@ -838,20 +881,38 @@ fi
if test "$have_gtk" = "no" ; then
#
# 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+ problem).
#
- if test "x$enable_wireshark" = "xyes"; then
- if test "x$with_gtk3" = "xyes"; then
- AC_MSG_ERROR([GTK+ 3.0 or later isn't available, so Wireshark can't be compiled])
- else
- AC_MSG_ERROR([GTK+ 2.12 or later isn't available, so Wireshark can't be compiled])
+ 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)"
+ 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+ 3.0 or later isn't available, so Wireshark can't be compiled])
+ else
+ AC_MSG_ERROR([Neither Qt nor GTK+ 2.12 or later are available, so Wireshark can't be compiled])
+ fi
fi
+ wireshark_bin=""
+ wireshark_man=""
fi
- wireshark_bin=""
- wireshark_man=""
# Use GLIB_CFLAGS
AM_PATH_GLIB_2_0(2.14.0,
[
@@ -860,8 +921,9 @@ if test "$have_gtk" = "no" ; then
], AC_MSG_ERROR(GLib 2.14 or later distribution not found.), gthread gmodule)
else
#
- # We have GTK+, and thus will be building Wireshark unless the
- # user explicitly disabled it.
+ # 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"
@@ -1991,6 +2053,7 @@ AC_OUTPUT(
ui/gtk/Makefile
ui/gtk/doxygen.cfg
ui/cli/Makefile
+ ui/qt/Makefile
help/Makefile
packaging/Makefile
packaging/macosx/Info.plist
@@ -2028,16 +2091,20 @@ dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
# Pretty messages
-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)"
+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
fi
fi
diff --git a/ui/qt/Makefile.am b/ui/qt/Makefile.am
new file mode 100644
index 0000000000..ee57ac32a1
--- /dev/null
+++ b/ui/qt/Makefile.am
@@ -0,0 +1,121 @@
+# Makefile.am
+# Automake file for the Qt interface routines for Wireshark
+#
+# $Id$
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+include Makefile.common
+include ../../Makefile.am.inc
+
+if HAVE_WARNINGS_AS_ERRORS
+AM_CLEAN_CFLAGS = -Werror
+endif
+
+noinst_LIBRARIES = libui.a
+
+CLEANFILES = \
+ libui.a \
+ *~
+
+MAINTAINERCLEANFILES = \
+ $(GENERATED_FILES) \
+ Makefile.in
+
+RUNLEX=$(top_srcdir)/tools/runlex.sh
+
+libui_a_SOURCES = \
+ $(WIRESHARK_QT_SRC) \
+ $(GENERATED_C_FILES) \
+ $(GENERATED_H_FILES) \
+ $(noinst_HEADERS) \
+ $(WIRESHARK_TAP_SRC)
+
+libui_a_CFLAGS = $(AM_CLEAN_CFLAGS)
+
+libui_a_DEPENDENCIES =
+
+# Common headers
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/wiretap $(LIBGCRYPT_CFLAGS) $(LIBGNUTLS_CFLAGS) $(PORTAUDIO_INCLUDES)
+
+#
+# For building .moc.cpp files from .h files by running moc
+# and building .rcc.cpp files from .qrc files by running rcc
+#
+SUFFIXES = .moc.cpp .qrc .rcc.cpp
+
+.h.moc.cpp:
+ moc -o $@ $<
+
+.qrc.rcc.cpp:
+ rcc -name `basename $< .qrc` -o $@ $<
+
+main_window.h: ui_main_window.h
+
+ui_main_window.h: main_window.ui
+ uic $< -o $@
+
+doxygen:
+if HAVE_DOXYGEN
+ $(DOXYGEN) doxygen.cfg
+endif # HAVE_DOXYGEN
+
+checkapi: checkapi-base checkapi-todo
+
+checkapi-base:
+ $(PERL) ../tools/checkAPIs.pl -g deprecated-gtk \
+ $(WIRESHARK_GTK_SRC) \
+ $(WIRESHARK_TAP_SRC) \
+ capture_if_details_dlg_win32.c
+
+checkapi-todo:
+ $(PERL) ../tools/checkAPIs.pl -M -g deprecated-gtk-todo \
+ $(WIRESHARK_GTK_SRC) \
+ $(WIRESHARK_TAP_SRC) \
+ capture_if_details_dlg_win32.c
+
+expert_indicators.h:
+ echo "/* This file was automatically generated. DO NOT EDIT. */" > $@
+ echo >> $@
+ for elevel in chat error none note warn ; do \
+ gdk-pixbuf-csource --raw --name=expert_$${elevel}_pb_data ../../image/expert_$${elevel}.png >> $@ ;\
+ done
+
+network_icons.h:
+ echo "/* This file was automatically generated. DO NOT EDIT. */" > $@
+ echo >> $@
+ for icon in bluetooth usb wired wireless ; do \
+ gdk-pixbuf-csource --raw --name=network_$${icon}_pb_data ../../image/toolbar/network_$${icon}_16.png >> $@ ;\
+ done
+
+remote_icons.h:
+ echo "/* This file was automatically generated. DO NOT EDIT. */" > $@
+ echo >> $@
+ for icon in arrow globe sat ; do \
+ gdk-pixbuf-csource --raw --name=remote_$${icon}_pb_data ../../image/toolbar/remote_$${icon}_16.png >> $@ ;\
+ done
+
+EXTRA_DIST = \
+ $(GENERATOR_FILES) \
+ doxygen.cfg.in \
+ libui.vcproj \
+ Makefile.common \
+ Makefile.nmake \
+ CMakeLists.txt \
+ Makefile_custom.common
diff --git a/ui/qt/Makefile.common b/ui/qt/Makefile.common
new file mode 100644
index 0000000000..8ac356a03e
--- /dev/null
+++ b/ui/qt/Makefile.common
@@ -0,0 +1,134 @@
+# Makefile.common
+# Contains the stuff from Makefile.am and Makefile.nmake that is
+# a) common to both files and
+# b) portable between both files
+#
+# $Id$
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#
+include Makefile_custom.common
+
+# Generated header files that we want in the distribution.
+GENERATED_HEADER_FILES =
+
+# Generated C source files that we want in the distribution.
+GENERATED_C_FILES =
+
+GENERATED_H_FILES =
+
+DIRTY_GENERATED_C_FILES =
+
+# All the generated files we want in the distribution.
+GENERATED_FILES = \
+ $(GENERATED_HEADER_FILES) \
+ $(GENERATED_C_FILES) \
+ $(GENERATED_H_FILES) \
+ $(DIRTY_GENERATED_C_FILES)
+
+# Files that generate compileable files
+GENERATOR_FILES =
+
+#
+# Headers that have to be run through moc.
+#
+MOC_HDRS = \
+ byte_view_tab.h \
+ byte_view_text.h \
+ capture_file_dialog.h \
+ capture_info_dialog.h \
+ capture_interface_dialog.h \
+ color_dialog.h \
+ color_utils.h \
+ display_filter_combo.h \
+ display_filter_edit.h \
+ fileset_dialog.h \
+ interface_tree.h \
+ label_stack.h \
+ main_status_bar.h \
+ main_welcome.h \
+ main_window.h \
+ monospace_font.h \
+ packet_list.h \
+ packet_list_model.h \
+ progress_dialog.h \
+ proto_tree.h \
+ recent_file_status.h \
+ simple_dialog_qt.h \
+ wireshark_application.h
+
+#
+# The .moc.cpp files generated from them.
+# We do *not* include these in the distribution; if you have the Qt SDK
+# installed, so that you can build Qt-based applications, you have moc
+# installed.
+#
+MOC_SRC = $(MOC_HDRS:.h=.moc.cpp)
+
+#
+# .qrc files.
+#
+QRC_FILES = \
+ display_filter.qrc \
+ i18n.qrc \
+ toolbar.qrc \
+ welcome.qrc
+
+#
+# The .rcc.cpp files generated from them.
+# We do *not* include these in the distribution; if you have the Qt SDK
+# installed, so that you can build Qt-based applications, you have moc
+# installed.
+#
+QRC_SRC = $(QRC_FILES:.qrc=.rcc.cpp)
+
+WIRESHARK_QT_SRC = \
+ $(MOC_SRC) \
+ $(QRC_SRC) \
+ byte_view_tab.cpp \
+ byte_view_text.cpp \
+ capture_file_dialog.cpp \
+ capture_info_dialog.cpp \
+ capture_interface_dialog.cpp \
+ color_dialog.cpp \
+ color_utils.cpp \
+ display_filter_combo.cpp \
+ display_filter_edit.cpp \
+ fileset_dialog.cpp \
+ interface_tree.cpp \
+ label_stack.cpp \
+ main_status_bar.cpp \
+ main_welcome.cpp \
+ main_window.cpp \
+ monospace_font.cpp \
+ packet_list.cpp \
+ packet_list_model.cpp \
+ packet_list_record.cpp \
+ progress_dialog.cpp \
+ proto_tree.cpp \
+ qt_ui_utils.cpp \
+ recent_file_status.cpp \
+ simple_dialog_qt.cpp \
+ wireshark_application.cpp
+
+noinst_HEADERS = \
+ $(MOC_HDRS) \
+ packet_list_record.h \
+ qt_ui_utils.h