From a1a2d50716ae3c1fb882726c82e98815faca2b27 Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Thu, 9 Jul 2015 21:09:48 -0700 Subject: Make .o files, not .cpp and .h files, depend on the ui_*.h files. That's one of the mechanisms the autotools documentation suggests using to handle generated header files. Using it means that "make dist" will no longer try to build those files (they're not part of the distribution - and they can't be, as the files would be different for Qt 4 and Qt 5, and need to be generated by the uic from the same version of Qt as the one against which Wireshark is being built). This means we don't need to try to find uic, moc, or rcc if we're not building with Qt, so don't do so. Change-Id: Id2aadb8289598b82e14e4ed402ff8cdc15fdef74 Reviewed-on: https://code.wireshark.org/review/9583 Petri-Dish: Guy Harris Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris --- acinclude.m4 | 116 +++++++++++++++---------------------------- configure.ac | 43 ++++++---------- ui/qt/Makefile.am | 144 +++++++++++++++++++++++++++++------------------------- 3 files changed, 132 insertions(+), 171 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 7c5aa1e7ab..b92e455d5f 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -2133,99 +2133,61 @@ AC_DEFUN([AC_WIRESHARK_QT_CHECK], ]) dnl AC_WIRESHARK_QT_TOOL_CHECK([TOOLPATHVAR, TOOL, REQUESTED-MAJOR_VERSION]) -dnl Test for a particular Qt tool, either for any version of Qt or for -dnl some specific version of Qt +dnl Test for a particular Qt tool for some specific version of Qt dnl AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK], [ - if test ! -z "$3"; then - # - # We're building with Qt, so we're looking for a particular - # major version of Qt's flavor of that tool. - # - # If we don't find the tool, we can't build, so we fail. - # - # At least in some versions of Debian/Ubuntu, and perhaps - # other OSes, the Qt build tools are just links to a - # program called "qtchooser", and even if you want to - # build with Qt 5, running the tool might give you the - # Qt 4 version of the tool unless you run the tool with - # a -qt=5 argument. + # + # At least in some versions of Debian/Ubuntu, and perhaps + # other OSes, the Qt build tools are just links to a + # program called "qtchooser", and even if you want to + # build with Qt 5, running the tool might give you the + # Qt 4 version of the tool unless you run the tool with + # a -qt=5 argument. + # + # So we look for qtchooser and, if we find it, use the + # -qt={version} argument, otherwise we look for particular + # tool versions using tool name suffixes. + # + AC_PATH_PROG(QTCHOOSER, qtchooser) + if test ! -z "$QTCHOOSER"; then # - # So we look for qtchooser and, if we find it, use the - # -qt={version} argument, otherwise we look for particular - # tool versions using tool name suffixes. + # We found qtchooser; we assume that means that + # the tool is linked to qtchooser, so that we + # can run it with the -qt={version} flag to get + # the appropriate version of the tool. # - AC_PATH_PROG(QTCHOOSER, qtchooser) - if test ! -z "$QTCHOOSER"; then - # - # We found qtchooser; we assume that means that - # the tool is linked to qtchooser, so that we - # can run it with the -qt={version} flag to get - # the appropriate version of the tool. - # - AC_PATH_PROG($1, $2) - if test "x$$1" = x; then - # - # We can't build Qt Wireshark without that - # tool.. - # - AC_MSG_ERROR(I couldn't find $2; make sure it's installed and in your path) - fi - - # - # Add the -qt={version} argument to it. - # - $1="$$1 -qt=$qt_version" - else - # - # Annoyingly, on some Linux distros (e.g. Debian) - # the Qt 5 tools have no suffix and the Qt 4 tools - # have suffix -qt4. On other distros (e.g. openSUSE) - # the Qt 5 tools have suffix -qt5 and the Qt 4 tools - # have no suffix. + AC_PATH_PROG($1, $2) + if test "x$$1" = x; then # - # So we check for the tool first with the -qtN suffix - # and then with no suffix. + # We can't build Qt Wireshark without that + # tool.. # - AC_PATH_PROGS($1, [$2-qt$qt_version $2]) - if test "x$$1" = x; then - # - # We can't build Qt Wireshark without that - # tool.. - # - AC_MSG_ERROR(I couldn't find $2-qt$qt_version or $2; make sure it's installed and in your path) - fi + AC_MSG_ERROR(I couldn't find $2; make sure it's installed and in your path) fi - else + # - # We're not building with Qt, so we just want some version - # of the tool. + # Add the -qt={version} argument to it. # - # If we don't find the tool, we shouldn't fail, as the - # user's not building with Qt, and we shouldn't force them - # to have Qt installed if they're not doing so. + $1="$$1 -qt=$qt_version" + else # - # "make dist" will fail if they do that, but - # we don't know whether they'll be doing that, - # so this is the best we can do. + # Annoyingly, on some Linux distros (e.g. Debian) + # the Qt 5 tools have no suffix and the Qt 4 tools + # have suffix -qt4. On other distros (e.g. openSUSE) + # the Qt 5 tools have suffix -qt5 and the Qt 4 tools + # have no suffix. # - # For the annoying suffix reasons listed above, we check - # for the tool first with the -qt5 suffix, then with no - # suffix, then with the -qt4 suffix. + # So we check for the tool first with the -qtN suffix + # and then with no suffix. # - AC_PATH_PROGS($1, [$2-qt5 $2 $2-qt4]) + AC_PATH_PROGS($1, [$2-qt$qt_version $2]) if test "x$$1" = x; then # - # We shouldn't fail here, as the user's not - # building with Qt, and we shouldn't force them - # to have Qt installed if they're not doing so. - # - # "make dist" will fail if they do that, but - # we don't know whether they'll be doing that, - # so this is the best we can do. + # We can't build Qt Wireshark without that + # tool.. # - $1=$$2 + AC_MSG_ERROR(I couldn't find $2-qt$qt_version or $2; make sure it's installed and in your path) fi fi ]) diff --git a/configure.ac b/configure.ac index 01d5feeca5..f59b742990 100644 --- a/configure.ac +++ b/configure.ac @@ -1650,6 +1650,22 @@ if test "x$enable_wireshark" = "xyes"; then # compile. # CPPFLAGS="-DQT_GUI_LIB" + + # + # We're building with Qt, so we need the Qt build + # tools in order to build the Wireshark GUI. + # We've found a particular major version of Qt, + # and we want that version's build tools; for + # example, the Qt 4 version of uic produces files + # that include Qt headers with paths that work + # with Qt 4 but not Qt 5, so we can't use the + # Qt 4 version of uic if we're building with Qt 5. + AC_WIRESHARK_QT_TOOL_CHECK(UIC, uic, "$qt_version") + AC_SUBST(UIC) + AC_WIRESHARK_QT_TOOL_CHECK(MOC, moc, "$qt_version") + AC_SUBST(MOC) + AC_WIRESHARK_QT_TOOL_CHECK(RCC, rcc, "$qt_version") + AC_SUBST(RCC) ], [ case "$with_qt" in @@ -1823,33 +1839,6 @@ else AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule) fi -# -# If we're building with Qt, we need the Qt build tools in order to -# build the Wireshark GUI. We've already found Qt, and found a -# particular major version, and we want that version's build tools; -# for example, the Qt 4 version of uic produces files that include -# Qt headers with paths that work with Qt 4 but not Qt 5, so we can't -# use the Qt 4 version of uic if we're building with Qt 5. -# -# If we're *not* building with Qt, "make dist" requires that we have -# the Qt build tools, so we *still* need to look for them. We didn't -# look for Qt, so we don't know what version(s) we have; we look for -# whatever version we can find. -# -# XXX - but the above comment about Qt 4 vs. Qt 5 means that if we -# ship files built with the uic from one version of Qt, they won't -# compile with another major version of Qt, so should we be shipping -# those files? If we don't, that means somebody building from a -# source tarball would need to have the Qt tools installed, but -# they'll need other developer packages of Qt *anyway*. -# -AC_WIRESHARK_QT_TOOL_CHECK(UIC, uic, "$qt_version") -AC_SUBST(UIC) -AC_WIRESHARK_QT_TOOL_CHECK(MOC, moc, "$qt_version") -AC_SUBST(MOC) -AC_WIRESHARK_QT_TOOL_CHECK(RCC, rcc, "$qt_version") -AC_SUBST(RCC) - # Error out if a glib header other than a "top level" header # (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h) # is used. diff --git a/ui/qt/Makefile.am b/ui/qt/Makefile.am index 4a50e4e9a3..befd4669ba 100644 --- a/ui/qt/Makefile.am +++ b/ui/qt/Makefile.am @@ -101,8 +101,9 @@ am__v_UIC_ = $(am__v_UIC_@AM_DEFAULT_V@) am__v_UIC_0 = @echo " UIC " $@; # -# For building .moc.cpp files from .h files by running moc -# and building .rcc.cpp files from .qrc files by running rcc +# For building .moc.cpp files from .h files by running moc, +# building .rcc.cpp files from .qrc files by running rcc, +# and building ui_XXX.h files from .ui files by running uic. # SUFFIXES = .moc.cpp .qrc .rcc.cpp @@ -120,135 +121,144 @@ ui_%.h: %.ui #moc_%.cpp: %.h # $(MOC) $< -o $@ -about_dialog.cpp about_dialog.h: ui_about_dialog.h +# +# Explicit dependencies to force the ui_ headers to be built. +# See "Recording Dependencies manually" in the "Built Sources" +# section of the automake documentation: +# +# https://www.gnu.org/software/automake/manual/automake.html#Sources +# +about_dialog.$(OBJEXT): ui_about_dialog.h + +bluetooth_att_server_attributes_dialog.$(OBJEXT): ui_bluetooth_att_server_attributes_dialog.h -bluetooth_att_server_attributes_dialog.cpp bluetooth_att_server_attributes_dialog.h: ui_bluetooth_att_server_attributes_dialog.h +bluetooth_devices_dialog.$(OBJEXT): ui_bluetooth_devices_dialog.h -bluetooth_devices_dialog.cpp bluetooth_devices_dialog.h: ui_bluetooth_devices_dialog.h +capture_file_progress_frame.$(OBJEXT): ui_capture_file_progress_frame.h -capture_file_progress_frame.cpp capture_file_progress_frame.h: ui_capture_file_progress_frame.h +capture_file_properties_dialog.$(OBJEXT): ui_capture_file_properties_dialog.h -capture_file_properties_dialog.cpp capture_file_properties_dialog.h: ui_capture_file_properties_dialog.h +capture_interfaces_dialog.$(OBJEXT): ui_capture_interfaces_dialog.h -capture_interfaces_dialog.cpp capture_interfaces_dialog.h: ui_capture_interfaces_dialog.h +capture_preferences_frame.$(OBJEXT): ui_capture_preferences_frame.h -capture_preferences_frame.cpp capture_preferences_frame.h: ui_capture_preferences_frame.h +coloring_rules_dialog.$(OBJEXT): ui_coloring_rules_dialog.h -coloring_rules_dialog.cpp coloring_rules_dialog.h: ui_coloring_rules_dialog.h +column_editor_frame.$(OBJEXT): ui_column_editor_frame.h -column_editor_frame.cpp column_editor_frame.h: ui_column_editor_frame.h +column_preferences_frame.$(OBJEXT): ui_column_preferences_frame.h -column_preferences_frame.cpp column_preferences_frame.h: ui_column_preferences_frame.h +compiled_filter_output.$(OBJEXT): ui_compiled_filter_output.h -compiled_filter_output.cpp compiled_filter_output.h: ui_compiled_filter_output.h +decode_as_dialog.$(OBJEXT): ui_decode_as_dialog.h -decode_as_dialog.cpp decode_as_dialog.h: ui_decode_as_dialog.h +display_filter_expression_dialog.$(OBJEXT): ui_display_filter_expression_dialog.h -display_filter_expression_dialog.cpp display_filter_expression_dialog.h: ui_display_filter_expression_dialog.h +expert_info_dialog.$(OBJEXT): ui_expert_info_dialog.h -expert_info_dialog.cpp expert_info_dialog.h: ui_expert_info_dialog.h +export_object_dialog.$(OBJEXT): ui_export_object_dialog.h -export_object_dialog.cpp export_object_dialog.h: ui_export_object_dialog.h +export_pdu_dialog.$(OBJEXT): ui_export_pdu_dialog.h -export_pdu_dialog.cpp export_pdu_dialog.h: ui_export_pdu_dialog.h +extcap_options_dialog.$(OBJEXT): ui_extcap_options_dialog.h -extcap_options_dialog.cpp extcap_options_dialog.h: ui_extcap_options_dialog.h +file_set_dialog.$(OBJEXT): ui_file_set_dialog.h -file_set_dialog.cpp file_set_dialog.h: ui_file_set_dialog.h +filter_dialog.$(OBJEXT): ui_filter_dialog.h -filter_dialog.cpp filter_dialog.h: ui_filter_dialog.h +filter_expressions_preferences_frame.$(OBJEXT): ui_filter_expressions_preferences_frame.h -filter_expressions_preferences_frame.cpp filter_expressions_preferences_frame.h: ui_filter_expressions_preferences_frame.h +follow_stream_dialog.$(OBJEXT): ui_follow_stream_dialog.h -follow_stream_dialog.cpp: ui_follow_stream_dialog.h +font_color_preferences_frame.$(OBJEXT): ui_font_color_preferences_frame.h -font_color_preferences_frame.cpp font_color_preferences_frame.h: ui_font_color_preferences_frame.h +funnel_string_dialog.$(OBJEXT): ui_funnel_string_dialog.h -funnel_string_dialog.cpp funnel_string_dialog.h: ui_funnel_string_dialog.h +funnel_text_dialog.$(OBJEXT): ui_funnel_text_dialog.h -funnel_text_dialog.cpp funnel_text_dialog.h: ui_funnel_text_dialog.h +import_text_dialog.$(OBJEXT): ui_import_text_dialog.h -import_text_dialog.cpp import_text_dialog.h: ui_import_text_dialog.h +io_graph_dialog.$(OBJEXT): ui_io_graph_dialog.h -io_graph_dialog.cpp io_graph_dialog.h: ui_io_graph_dialog.h +layout_preferences_frame.$(OBJEXT): ui_layout_preferences_frame.h -layout_preferences_frame.cpp layout_preferences_frame.h: ui_layout_preferences_frame.h +lbm_lbtrm_transport_dialog.$(OBJEXT): ui_lbm_lbtrm_transport_dialog.h -lbm_lbtrm_transport_dialog.cpp lbm_lbtrm_transport_dialog.h: ui_lbm_lbtrm_transport_dialog.h +lbm_lbtru_transport_dialog.$(OBJEXT): ui_lbm_lbtru_transport_dialog.h -lbm_lbtru_transport_dialog.cpp lbm_lbtru_transport_dialog.h: ui_lbm_lbtru_transport_dialog.h +lbm_stream_dialog.$(OBJEXT): ui_lbm_stream_dialog.h -lbm_stream_dialog.cpp lbm_stream_dialog.h: ui_lbm_stream_dialog.h +lbm_uimflow_dialog.$(OBJEXT): ui_lbm_uimflow_dialog.h -lbm_uimflow_dialog.cpp lbm_uimflow_dialog.h: ui_lbm_uimflow_dialog.h +main_welcome.$(OBJEXT): ui_main_welcome.h -main_welcome.cpp main_welcome.h: ui_main_welcome.h +main_window.$(OBJEXT): ui_main_window.h -main_window.cpp main_window_slots.cpp main_window.h: ui_main_window.h +main_window_preferences_frame.$(OBJEXT): ui_main_window_preferences_frame.h -main_window_preferences_frame.cpp main_window_preferences_frame.h: ui_main_window_preferences_frame.h +main_window_slots.$(OBJEXT): ui_main_window.h -manage_interfaces_dialog.cpp manage_interfaces_dialog.h: ui_manage_interfaces_dialog.h +manage_interfaces_dialog.$(OBJEXT): ui_manage_interfaces_dialog.h -module_preferences_scroll_area.cpp module_preferences_scroll_area.h: ui_module_preferences_scroll_area.h +module_preferences_scroll_area.$(OBJEXT): ui_module_preferences_scroll_area.h -packet_comment_dialog.cpp packet_comment_dialog.h: ui_packet_comment_dialog.h +packet_comment_dialog.$(OBJEXT): ui_packet_comment_dialog.h -packet_dialog.cpp packet_dialog.h: ui_packet_dialog.h +packet_dialog.$(OBJEXT): ui_packet_dialog.h -packet_format_group_box.cpp packet_format_group_box.h: ui_packet_format_group_box.h +packet_format_group_box.$(OBJEXT): ui_packet_format_group_box.h -packet_range_group_box.cpp packet_range_group_box.h: ui_packet_range_group_box.h +packet_range_group_box.$(OBJEXT): ui_packet_range_group_box.h -preference_editor_frame.cpp preference_editor_frame.h: ui_preference_editor_frame.h +preference_editor_frame.$(OBJEXT): ui_preference_editor_frame.h -preferences_dialog.cpp preferences_dialog.h: ui_preferences_dialog.h +preferences_dialog.$(OBJEXT): ui_preferences_dialog.h -print_dialog.cpp print_dialog.h: ui_print_dialog.h +print_dialog.$(OBJEXT): ui_print_dialog.h -profile_dialog.cpp profile_dialog.h: ui_profile_dialog.h +profile_dialog.$(OBJEXT): ui_profile_dialog.h -protocol_hierarchy_dialog.cpp protocol_hierarchy_dialog.h: ui_protocol_hierarchy_dialog.h +protocol_hierarchy_dialog.$(OBJEXT): ui_protocol_hierarchy_dialog.h -remote_capture_dialog.cpp remote_capture_dialog.h: ui_remote_capture_dialog.h +remote_capture_dialog.$(OBJEXT): ui_remote_capture_dialog.h -remote_settings_dialog.cpp remote_settings_dialog.h: ui_remote_settings_dialog.h +remote_settings_dialog.$(OBJEXT): ui_remote_settings_dialog.h -resolved_addresses_dialog.cpp resolved_addresses_dialog.h: ui_resolved_addresses_dialog.h +resolved_addresses_dialog.$(OBJEXT): ui_resolved_addresses_dialog.h -rtp_stream_dialog.cpp rtp_stream_dialog.h: ui_rtp_stream_dialog.h +rtp_stream_dialog.$(OBJEXT): ui_rtp_stream_dialog.h -search_frame.cpp search_frame.h: ui_search_frame.h +search_frame.$(OBJEXT): ui_search_frame.h -sequence_dialog.cpp sequence_dialog.h: ui_sequence_dialog.h +sequence_dialog.$(OBJEXT): ui_sequence_dialog.h -sctp_all_assocs_dialog.cpp sctp_all_assocs_dialog.h: ui_sctp_all_assocs_dialog.h +sctp_all_assocs_dialog.$(OBJEXT): ui_sctp_all_assocs_dialog.h -sctp_assoc_analyse_dialog.cpp sctp_assoc_analyse_dialog.h: ui_sctp_assoc_analyse_dialog.h +sctp_assoc_analyse_dialog.$(OBJEXT): ui_sctp_assoc_analyse_dialog.h -sctp_chunk_statistics_dialog.cpp sctp_chunk_statistics_dialog.h: ui_sctp_chunk_statistics_dialog.h +sctp_chunk_statistics_dialog.$(OBJEXT): ui_sctp_chunk_statistics_dialog.h -sctp_graph_dialog.cpp sctp_graph_dialog.h: ui_sctp_graph_dialog.h +sctp_graph_dialog.$(OBJEXT): ui_sctp_graph_dialog.h -sctp_graph_arwnd_dialog.cpp sctp_graph_arwnd_dialog.h: ui_sctp_graph_arwnd_dialog.h +sctp_graph_arwnd_dialog.$(OBJEXT): ui_sctp_graph_arwnd_dialog.h -sctp_graph_byte_dialog.cpp sctp_graph_byte_dialog.h: ui_sctp_graph_byte_dialog.h +sctp_graph_byte_dialog.$(OBJEXT): ui_sctp_graph_byte_dialog.h -splash_overlay.cpp splash_overlay.h: ui_splash_overlay.h +splash_overlay.$(OBJEXT): ui_splash_overlay.h -tap_parameter_dialog.cpp tap_parameter_dialog.h: ui_tap_parameter_dialog.h +tap_parameter_dialog.$(OBJEXT): ui_tap_parameter_dialog.h -tcp_stream_dialog.cpp: ui_tcp_stream_dialog.h +tcp_stream_dialog.$(OBJEXT): ui_tcp_stream_dialog.h -time_shift_dialog.cpp time_shift_dialog.h: ui_time_shift_dialog.h +time_shift_dialog.$(OBJEXT): ui_time_shift_dialog.h -traffic_table_dialog.cpp traffic_table_dialog.h: ui_traffic_table_dialog.h +traffic_table_dialog.$(OBJEXT): ui_traffic_table_dialog.h -uat_dialog.cpp uat_dialog.h: ui_uat_dialog.h +uat_dialog.$(OBJEXT): ui_uat_dialog.h -voip_calls_dialog.cpp voip_calls_dialog.h: ui_voip_calls_dialog.h +voip_calls_dialog.$(OBJEXT): ui_voip_calls_dialog.h -wireless_frame.cpp wireless_frame.h: ui_wireless_frame.h +wireless_frame.$(OBJEXT): ui_wireless_frame.h doxygen: if HAVE_DOXYGEN -- cgit v1.2.3