diff options
Diffstat (limited to 'ui/qt/CMakeLists.txt')
-rw-r--r-- | ui/qt/CMakeLists.txt | 873 |
1 files changed, 873 insertions, 0 deletions
diff --git a/ui/qt/CMakeLists.txt b/ui/qt/CMakeLists.txt new file mode 100644 index 00000000..6a1aab9a --- /dev/null +++ b/ui/qt/CMakeLists.txt @@ -0,0 +1,873 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +if(USE_qt6) + set(qtver "6") +else() + set(qtver "5") +endif() + +ADD_CUSTOM_CMAKE_INCLUDE() + +set(WIRESHARK_WIDGET_HEADERS + widgets/additional_toolbar.h + widgets/apply_line_edit.h + widgets/byte_view_text.h + widgets/capture_filter_combo.h + widgets/capture_filter_edit.h + widgets/clickable_label.h + widgets/copy_from_profile_button.h + widgets/detachable_tabwidget.h + widgets/display_filter_combo.h + widgets/display_filter_edit.h + widgets/dissector_syntax_line_edit.h + widgets/dissector_tables_view.h + widgets/drag_drop_toolbar.h + widgets/drag_label.h + widgets/editor_file_dialog.h + widgets/elided_label.h + widgets/expert_info_view.h + widgets/export_objects_view.h + widgets/field_filter_edit.h + widgets/filter_expression_toolbar.h + widgets/find_line_edit.h + widgets/follow_stream_text.h + widgets/interface_toolbar_lineedit.h + widgets/label_stack.h + widgets/overlay_scroll_bar.h + widgets/packet_list_header.h + widgets/path_selection_edit.h + widgets/pref_module_view.h + widgets/profile_tree_view.h + widgets/range_syntax_lineedit.h + widgets/rtp_audio_graph.h + widgets/splash_overlay.h + widgets/stock_icon_tool_button.h + widgets/syntax_line_edit.h + widgets/tabnav_tree_view.h + widgets/traffic_tab.h + widgets/traffic_tree.h + widgets/traffic_types_list.h + widgets/wireless_timeline.h + widgets/wireshark_file_dialog.h +) + +set(WIRESHARK_3RD_PARTY_WIDGET_HEADERS + widgets/qcustomplot.h +) + +set(WIRESHARK_MANAGER_HEADERS + manager/preference_manager.h + manager/wireshark_preference.h +) + +set(WIRESHARK_UTILS_HEADERS + utils/color_utils.h + utils/data_printer.h + utils/field_information.h + utils/frame_information.h + utils/idata_printable.h + utils/proto_node.h + utils/qt_ui_utils.h + utils/rtp_audio_file.h + utils/rtp_audio_routing_filter.h + utils/rtp_audio_routing.h + utils/rtp_audio_silence_generator.h + utils/stock_icon.h + utils/tango_colors.h + utils/variant_pointer.h + utils/wireshark_mime_data.h + utils/wireshark_zip_helper.h +) + +set(WIRESHARK_MODEL_HEADERS + models/astringlist_list_model.h + models/atap_data_model.h + models/cache_proxy_model.h + models/coloring_rules_delegate.h + models/coloring_rules_model.h + models/column_list_model.h + models/credentials_model.h + models/decode_as_delegate.h + models/decode_as_model.h + models/dissector_tables_model.h + models/enabled_protocols_model.h + models/expert_info_model.h + models/expert_info_proxy_model.h + models/export_objects_model.h + models/fileset_entry_model.h + models/filter_list_model.h + models/info_proxy_model.h + models/interface_sort_filter_model.h + models/interface_tree_cache_model.h + models/interface_tree_model.h + models/manuf_table_model.h + models/numeric_value_chooser_delegate.h + models/packet_list_model.h + models/packet_list_record.h + models/path_selection_delegate.h + models/percent_bar_delegate.h + models/pref_delegate.h + models/pref_models.h + models/profile_model.h + models/proto_tree_model.h + models/related_packet_delegate.h + models/resolved_addresses_models.h + models/sparkline_delegate.h + models/supported_protocols_model.h + models/timeline_delegate.h + models/tree_model_helpers.h + models/uat_delegate.h + models/uat_model.h + models/url_link_delegate.h + models/voip_calls_info_model.h +) + +# All .h files which inherit from QObject aka which use the Q_OBJECT macro +# need to go here. +set(WIRESHARK_QT_HEADERS + about_dialog.h + accordion_frame.h + address_editor_frame.h + bluetooth_att_server_attributes_dialog.h + bluetooth_device_dialog.h + bluetooth_devices_dialog.h + bluetooth_hci_summary_dialog.h + byte_view_tab.h + capture_file_dialog.h + capture_file_properties_dialog.h + capture_file.h + capture_filter_syntax_worker.h + capture_options_dialog.h + capture_preferences_frame.h + coloring_rules_dialog.h + column_editor_frame.h + column_preferences_frame.h + compiled_filter_output.h + conversation_colorize_action.h + conversation_dialog.h + conversation_hash_tables_dialog.h + credentials_dialog.h + decode_as_dialog.h + display_filter_expression_dialog.h + dissector_tables_dialog.h + enabled_protocols_dialog.h + endpoint_dialog.h + expert_info_dialog.h + export_dissection_dialog.h + export_object_action.h + export_object_dialog.h + export_pdu_dialog.h + extcap_argument_file.h + extcap_argument_multiselect.h + extcap_argument.h + extcap_options_dialog.h + file_set_dialog.h + filter_action.h + filter_dialog.h + filter_dialog.h + filter_expression_frame.h + firewall_rules_dialog.h + follow_stream_action.h + follow_stream_dialog.h + font_color_preferences_frame.h + funnel_statistics.h + funnel_string_dialog.h + funnel_text_dialog.h + geometry_state_dialog.h + glib_mainloop_on_qeventloop.h + gsm_map_summary_dialog.h + iax2_analysis_dialog.h + import_text_dialog.h + interface_frame.h + interface_toolbar_reader.h + interface_toolbar.h + io_console_dialog.h + io_graph_dialog.h + layout_preferences_frame.h + lbm_lbtrm_transport_dialog.h + lbm_lbtru_transport_dialog.h + lbm_stream_dialog.h + lte_mac_statistics_dialog.h + lte_rlc_graph_dialog.h + lte_rlc_statistics_dialog.h + main_application.h + main_status_bar.h + main_window_preferences_frame.h + main_window.h + manage_interfaces_dialog.h + manuf_dialog.h + module_preferences_scroll_area.h + mtp3_summary_dialog.h + multicast_statistics_dialog.h + packet_comment_dialog.h + packet_diagram.h + packet_dialog.h + packet_format_group_box.h + packet_list.h + packet_range_group_box.h + preference_editor_frame.h + preferences_dialog.h + print_dialog.h + profile_dialog.h + progress_frame.h + proto_tree.h + protocol_hierarchy_dialog.h + protocol_preferences_menu.h + recent_file_status.h + resolved_addresses_dialog.h + response_time_delay_dialog.h + rpc_service_response_time_dialog.h + rsa_keys_frame.h + rtp_analysis_dialog.h + rtp_audio_stream.h + rtp_player_dialog.h + rtp_stream_dialog.h + scsi_service_response_time_dialog.h + sctp_all_assocs_dialog.h + sctp_assoc_analyse_dialog.h + sctp_chunk_statistics_dialog.h + sctp_graph_arwnd_dialog.h + sctp_graph_byte_dialog.h + sctp_graph_dialog.h + search_frame.h + sequence_diagram.h + sequence_dialog.h + service_response_time_dialog.h + show_packet_bytes_dialog.h + simple_statistics_dialog.h + tlskeylog_launcher_dialog.h + stats_tree_dialog.h + strip_headers_dialog.h + supported_protocols_dialog.h + tabnav_tree_widget.h + tap_parameter_dialog.h + tcp_stream_dialog.h + time_shift_dialog.h + traffic_table_dialog.h + uat_dialog.h + uat_frame.h + voip_calls_dialog.h + welcome_page.h + wireless_frame.h + wireshark_application.h + wireshark_dialog.h + wireshark_main_window.h + wlan_statistics_dialog.h + ${WIRESHARK_CUSTOM_QT_HEADERS} +) + +if(ENABLE_PCAP) + list(APPEND WIRESHARK_QT_HEADERS + capture_info_dialog.h + ) + if(HAVE_PCAP_REMOTE) + list(APPEND WIRESHARK_QT_HEADERS + remote_capture_dialog.h + remote_settings_dialog.h + ) + endif() +endif() + +set(WIRESHARK_WIDGET_SRCS + widgets/additional_toolbar.cpp + widgets/apply_line_edit.cpp + widgets/byte_view_text.cpp + widgets/capture_filter_combo.cpp + widgets/capture_filter_edit.cpp + widgets/clickable_label.cpp + widgets/copy_from_profile_button.cpp + widgets/detachable_tabwidget.cpp + widgets/display_filter_combo.cpp + widgets/display_filter_edit.cpp + widgets/dissector_syntax_line_edit.cpp + widgets/dissector_tables_view.cpp + widgets/drag_drop_toolbar.cpp + widgets/drag_label.cpp + widgets/editor_file_dialog.cpp + widgets/elided_label.cpp + widgets/expert_info_view.cpp + widgets/export_objects_view.cpp + widgets/field_filter_edit.cpp + widgets/filter_expression_toolbar.cpp + widgets/find_line_edit.cpp + widgets/follow_stream_text.cpp + widgets/interface_toolbar_lineedit.cpp + widgets/label_stack.cpp + widgets/overlay_scroll_bar.cpp + widgets/packet_list_header.cpp + widgets/path_selection_edit.cpp + widgets/pref_module_view.cpp + widgets/profile_tree_view.cpp + widgets/range_syntax_lineedit.cpp + widgets/rtp_audio_graph.cpp + widgets/splash_overlay.cpp + widgets/stock_icon_tool_button.cpp + widgets/syntax_line_edit.cpp + widgets/tabnav_tree_view.cpp + widgets/traffic_tab.cpp + widgets/traffic_tree.cpp + widgets/traffic_types_list.cpp + widgets/wireless_timeline.cpp + widgets/wireshark_file_dialog.cpp +) + +set(WIRESHARK_3RD_PARTY_WIDGET_SRCS + widgets/qcustomplot.cpp +) + +set(WIRESHARK_MANAGER_SRCS + manager/preference_manager.cpp + manager/wireshark_preference.cpp +) + +set(WIRESHARK_UTILS_SRCS + utils/color_utils.cpp + utils/data_printer.cpp + utils/field_information.cpp + utils/frame_information.cpp + utils/proto_node.cpp + utils/qt_ui_utils.cpp + utils/rtp_audio_file.cpp + utils/rtp_audio_routing_filter.cpp + utils/rtp_audio_routing.cpp + utils/rtp_audio_silence_generator.cpp + utils/stock_icon.cpp + utils/wireshark_mime_data.cpp + utils/wireshark_zip_helper.cpp +) + +set(WIRESHARK_MODEL_SRCS + models/astringlist_list_model.cpp + models/atap_data_model.cpp + models/cache_proxy_model.cpp + models/coloring_rules_delegate.cpp + models/coloring_rules_model.cpp + models/column_list_model.cpp + models/credentials_model.cpp + models/decode_as_delegate.cpp + models/decode_as_model.cpp + models/dissector_tables_model.cpp + models/enabled_protocols_model.cpp + models/expert_info_model.cpp + models/expert_info_proxy_model.cpp + models/export_objects_model.cpp + models/fileset_entry_model.cpp + models/filter_list_model.cpp + models/info_proxy_model.cpp + models/interface_sort_filter_model.cpp + models/interface_tree_cache_model.cpp + models/interface_tree_model.cpp + models/manuf_table_model.cpp + models/numeric_value_chooser_delegate.cpp + models/packet_list_model.cpp + models/packet_list_record.cpp + models/path_selection_delegate.cpp + models/percent_bar_delegate.cpp + models/pref_delegate.cpp + models/pref_models.cpp + models/profile_model.cpp + models/proto_tree_model.cpp + models/related_packet_delegate.cpp + models/resolved_addresses_models.cpp + models/sparkline_delegate.cpp + models/supported_protocols_model.cpp + models/timeline_delegate.cpp + models/uat_delegate.cpp + models/uat_model.cpp + models/url_link_delegate.cpp + models/voip_calls_info_model.cpp +) + +set(WIRESHARK_QT_SRC + about_dialog.cpp + accordion_frame.cpp + address_editor_frame.cpp + bluetooth_att_server_attributes_dialog.cpp + bluetooth_device_dialog.cpp + bluetooth_devices_dialog.cpp + bluetooth_hci_summary_dialog.cpp + byte_view_tab.cpp + capture_file_dialog.cpp + capture_file_properties_dialog.cpp + capture_file.cpp + capture_filter_syntax_worker.cpp + capture_options_dialog.cpp + capture_preferences_frame.cpp + coloring_rules_dialog.cpp + column_editor_frame.cpp + column_preferences_frame.cpp + compiled_filter_output.cpp + conversation_colorize_action.cpp + conversation_dialog.cpp + conversation_hash_tables_dialog.cpp + credentials_dialog.cpp + decode_as_dialog.cpp + display_filter_expression_dialog.cpp + dissector_tables_dialog.cpp + enabled_protocols_dialog.cpp + endpoint_dialog.cpp + export_dissection_dialog.cpp + export_object_action.cpp + export_object_dialog.cpp + export_pdu_dialog.cpp + extcap_argument_file.cpp + extcap_argument_multiselect.cpp + extcap_argument.cpp + extcap_options_dialog.cpp + file_set_dialog.cpp + filter_action.cpp + filter_dialog.cpp + filter_expression_frame.cpp + firewall_rules_dialog.cpp + follow_stream_action.cpp + follow_stream_dialog.cpp + font_color_preferences_frame.cpp + funnel_string_dialog.cpp + funnel_text_dialog.cpp + geometry_state_dialog.cpp + glib_mainloop_on_qeventloop.cpp + iax2_analysis_dialog.cpp + import_text_dialog.cpp + interface_frame.cpp + interface_toolbar_reader.cpp + interface_toolbar.cpp + io_console_dialog.cpp + layout_preferences_frame.cpp + lbm_lbtrm_transport_dialog.cpp + lbm_lbtru_transport_dialog.cpp + lbm_stream_dialog.cpp + lte_mac_statistics_dialog.cpp + lte_rlc_graph_dialog.cpp + lte_rlc_statistics_dialog.cpp + main_application.cpp + main_status_bar.cpp + main_window_layout.cpp + main_window_preferences_frame.cpp + main_window.cpp + main.cpp + manage_interfaces_dialog.cpp + manuf_dialog.cpp + module_preferences_scroll_area.cpp + packet_comment_dialog.cpp + packet_diagram.cpp + packet_dialog.cpp + packet_format_group_box.cpp + packet_list.cpp + packet_range_group_box.cpp + preference_editor_frame.cpp + preferences_dialog.cpp + print_dialog.cpp + profile_dialog.cpp + progress_frame.cpp + proto_tree.cpp + protocol_hierarchy_dialog.cpp + protocol_preferences_menu.cpp + recent_file_status.cpp + resolved_addresses_dialog.cpp + response_time_delay_dialog.cpp + rpc_service_response_time_dialog.cpp + rsa_keys_frame.cpp + rtp_analysis_dialog.cpp + rtp_audio_stream.cpp + rtp_player_dialog.cpp + rtp_stream_dialog.cpp + scsi_service_response_time_dialog.cpp + sctp_all_assocs_dialog.cpp + sctp_assoc_analyse_dialog.cpp + sctp_chunk_statistics_dialog.cpp + sctp_graph_arwnd_dialog.cpp + sctp_graph_byte_dialog.cpp + sctp_graph_dialog.cpp + search_frame.cpp + sequence_diagram.cpp + sequence_dialog.cpp + service_response_time_dialog.cpp + show_packet_bytes_dialog.cpp + simple_dialog.cpp + simple_statistics_dialog.cpp + tlskeylog_launcher_dialog.cpp + strip_headers_dialog.cpp + supported_protocols_dialog.cpp + tabnav_tree_widget.cpp + tap_parameter_dialog.cpp + tcp_stream_dialog.cpp + time_shift_dialog.cpp + traffic_table_dialog.cpp + uat_dialog.cpp + uat_frame.cpp + voip_calls_dialog.cpp + welcome_page.cpp + wireless_frame.cpp + wireshark_application.cpp + wireshark_dialog.cpp + wireshark_main_window.cpp + wireshark_main_window_slots.cpp + ${WIRESHARK_CUSTOM_QT_SRCS} +) + +if(ENABLE_PCAP) + list(APPEND WIRESHARK_QT_SRC + capture_info_dialog.cpp + ) + if(HAVE_PCAP_REMOTE) + list(APPEND WIRESHARK_QT_SRC + remote_capture_dialog.cpp + remote_settings_dialog.cpp + ) + endif() +endif() + +set(WIRESHARK_QT_TAP_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/expert_info_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/funnel_statistics.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/gsm_map_summary_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/io_graph_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/lte_mac_statistics_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/lte_rlc_statistics_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mtp3_summary_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/multicast_statistics_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/rtp_stream_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/sctp_all_assocs_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/sctp_assoc_analyse_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/stats_tree_dialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/wlan_statistics_dialog.cpp + ${WIRESHARK_CUSTOM_TAP_SRC} +) + +set(WIRESHARK_QT_NONGENERATED_SRC + ${WIRESHARK_QT_SRC} + ${WIRESHARK_QT_TAP_SRC} + ${WIRESHARK_MODEL_SRCS} + ${WIRESHARK_UTILS_SRCS} + ${WIRESHARK_MANAGER_SRCS} + ${WIRESHARK_3RD_PARTY_WIDGET_SRCS} + ${WIRESHARK_WIDGET_SRCS} +) + +set(WIRESHARK_QT_UI + about_dialog.ui + address_editor_frame.ui + bluetooth_att_server_attributes_dialog.ui + bluetooth_device_dialog.ui + bluetooth_devices_dialog.ui + bluetooth_hci_summary_dialog.ui + capture_file_properties_dialog.ui + capture_info_dialog.ui + capture_options_dialog.ui + capture_preferences_frame.ui + coloring_rules_dialog.ui + column_editor_frame.ui + column_preferences_frame.ui + compiled_filter_output.ui + conversation_hash_tables_dialog.ui + credentials_dialog.ui + decode_as_dialog.ui + display_filter_expression_dialog.ui + dissector_tables_dialog.ui + enabled_protocols_dialog.ui + expert_info_dialog.ui + export_object_dialog.ui + export_pdu_dialog.ui + extcap_options_dialog.ui + file_set_dialog.ui + filter_dialog.ui + filter_expression_frame.ui + firewall_rules_dialog.ui + follow_stream_dialog.ui + font_color_preferences_frame.ui + funnel_string_dialog.ui + funnel_text_dialog.ui + gsm_map_summary_dialog.ui + iax2_analysis_dialog.ui + import_text_dialog.ui + interface_frame.ui + interface_toolbar.ui + io_console_dialog.ui + io_graph_dialog.ui + layout_preferences_frame.ui + lbm_lbtrm_transport_dialog.ui + lbm_lbtru_transport_dialog.ui + lbm_stream_dialog.ui + lte_rlc_graph_dialog.ui + main_window_preferences_frame.ui + manage_interfaces_dialog.ui + manuf_dialog.ui + module_preferences_scroll_area.ui + mtp3_summary_dialog.ui + packet_comment_dialog.ui + packet_dialog.ui + packet_format_group_box.ui + packet_range_group_box.ui + preference_editor_frame.ui + preferences_dialog.ui + print_dialog.ui + profile_dialog.ui + progress_frame.ui + protocol_hierarchy_dialog.ui + resolved_addresses_dialog.ui + rsa_keys_frame.ui + rtp_analysis_dialog.ui + rtp_player_dialog.ui + rtp_stream_dialog.ui + sctp_all_assocs_dialog.ui + sctp_assoc_analyse_dialog.ui + sctp_chunk_statistics_dialog.ui + sctp_graph_arwnd_dialog.ui + sctp_graph_byte_dialog.ui + sctp_graph_dialog.ui + search_frame.ui + sequence_dialog.ui + show_packet_bytes_dialog.ui + tlskeylog_launcher_dialog.ui + strip_headers_dialog.ui + supported_protocols_dialog.ui + tap_parameter_dialog.ui + tcp_stream_dialog.ui + time_shift_dialog.ui + traffic_table_dialog.ui + uat_dialog.ui + uat_frame.ui + voip_calls_dialog.ui + welcome_page.ui + widgets/splash_overlay.ui + wireless_frame.ui + wireshark_main_window.ui +) + +if(HAVE_PCAP_REMOTE) + list(APPEND WIRESHARK_QT_UI + remote_capture_dialog.ui + remote_settings_dialog.ui + ) +endif() + +set(WIRESHARK_QT_TS + wireshark_de.ts + wireshark_en.ts # lupdate -pluralonly + wireshark_es.ts + wireshark_fr.ts + wireshark_it.ts + wireshark_ja_JP.ts + wireshark_ko.ts + wireshark_pl.ts + wireshark_ru.ts + wireshark_sv.ts + wireshark_tr_TR.ts + wireshark_uk.ts + wireshark_zh_CN.ts +) + +foreach(_file ${WIRESHARK_QT_TS}) + get_filename_component(_qresource ${_file} NAME_WE) + set(_qresource_qm "${_qresource}.qm") + set(i18n_qresource "${i18n_qresource}\n <file>${_qresource_qm}</file>") +endforeach() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/i18n.qrc.in ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc) + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/authors.qrc" +"<RCC>\n" +" <qresource prefix=\"/about\">\n" +" <file compress-algo=\"zstd\">authors.csv</file>\n" +" </qresource>\n" +"</RCC>\n" +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/authors.csv + COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/make-authors-csv.py + < ${CMAKE_SOURCE_DIR}/AUTHORS + > ${CMAKE_CURRENT_BINARY_DIR}/authors.csv + DEPENDS + ${CMAKE_SOURCE_DIR}/tools/make-authors-csv.py + ${CMAKE_SOURCE_DIR}/AUTHORS +) + +set(WIRESHARK_QT_QRC + ../../resources/about.qrc + ../../resources/languages/languages.qrc + ../../resources/layout.qrc + ../../resources/stock_icons.qrc + ../../resources/wsicon.qrc + ${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc + ${CMAKE_CURRENT_BINARY_DIR}/authors.qrc + ${CMAKE_CURRENT_BINARY_DIR}/authors.csv +) + +if(NOT Qt${qtver}Widgets_VERSION VERSION_LESS "5.9") + # Drop the file modification time of source files from generated files + # to help with reproducible builds. We do not use QFileInfo.lastModified + # so this has no unwanted side effects. This mtime started appearing in + # Qt 5.8. The option to force the old file format without mtime was + # added in Qt 5.9. See https://bugreports.qt.io/browse/QTBUG-58769. + # Force the compression algorithm to zlib, since zstd requires format + # version 3. See https://gitlab.com/wireshark/wireshark/-/issues/18100. + # Use the number of dashes for each argument as documented at + # https://doc.qt.io/qt-6/rcc.html. + set(CMAKE_AUTORCC_OPTIONS --format-version 1) + if(Qt${qtver}Widgets_VERSION VERSION_GREATER_EQUAL "5.13") + list(APPEND CMAKE_AUTORCC_OPTIONS -compress-algo zlib) + endif() +endif() + +if (USE_qt6) + QT6_ADD_TRANSLATION(WIRESHARK_QT_QM ${WIRESHARK_QT_TS} OPTIONS -silent) +elseif(NOT Qt${qtver}Widgets_VERSION VERSION_LESS "5.11") + QT5_ADD_TRANSLATION(WIRESHARK_QT_QM ${WIRESHARK_QT_TS} OPTIONS -silent) +else() + QT5_ADD_TRANSLATION(WIRESHARK_QT_QM ${WIRESHARK_QT_TS}) +endif() + +if (WIN32) + add_custom_target(copy_qt_translations ALL) + add_custom_command(TARGET copy_qt_translations + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:wireshark>/translations + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${WIRESHARK_QT_QM} $<TARGET_FILE_DIR:wireshark>/translations + ) +endif() + +add_custom_target( + translations + DEPENDS + ${WIRESHARK_QT_QM} +) +set_target_properties(translations PROPERTIES FOLDER "UI") + +set_source_files_properties( + ${WIRESHARK_QT_NONGENERATED_SRC} + PROPERTIES + COMPILE_FLAGS "${WERROR_COMMON_FLAGS}" +) + +set_source_files_properties( + wireshark-tap-register.c + PROPERTIES + SKIP_AUTOGEN ON +) + +add_definitions(${QT5_DEFINITIONS}) + +register_tap_files(wireshark-tap-register.c + ${WIRESHARK_QT_TAP_SRC} +) + +source_group("ui\\UIC Files" FILES ${WIRESHARK_QT_UI}) +source_group("ui\\qrc" FILES ${WIRESHARK_QT_QRC}) +source_group("ui\\Header" FILES ${WIRESHARK_QT_HEADERS}) +source_group("ui\\Widget Header" FILES ${WIRESHARK_WIDGET_HEADERS}) +source_group("ui\\Widget Source" FILES ${WIRESHARK_WIDGET_SRCS}) +source_group("ui\\Utils Headers Files" FILES ${WIRESHARK_UTILS_HEADERS}) +source_group("ui\\Utils Source" FILES ${WIRESHARK_UTILS_SRCS}) +source_group("ui\\Models Headers" FILES ${WIRESHARK_MODEL_HEADERS}) +source_group("ui\\Models Source" FILES ${WIRESHARK_MODEL_SRCS}) +source_group("ui\\Manager Headers" FILES ${WIRESHARK_MANAGER_HEADERS}) +source_group("ui\\Manager Source" FILES ${WIRESHARK_MANAGER_SRCS}) + +add_library(qtui OBJECT + #Included so that Visual Studio can properly put header files in solution + ${WIRESHARK_QT_HEADERS} + ${WIRESHARK_WIDGET_HEADERS} + ${WIRESHARK_3RD_PARTY_WIDGET_HEADERS} + ${WIRESHARK_MANAGER_HEADERS} + ${WIRESHARK_UTILS_HEADERS} + ${WIRESHARK_MODEL_HEADERS} + + ${WIRESHARK_QT_NONGENERATED_SRC} + + # For AUTOUIC and AUTORCC. + ${WIRESHARK_QT_UI} + ${WIRESHARK_QT_QRC} + + ${WIRESHARK_QT_TAP_SRC} + wireshark-tap-register.c +) + +if(USE_qt6) + target_link_libraries(qtui PUBLIC + Qt6::Widgets + Qt6::Core5Compat + Qt6::Concurrent + Qt6::PrintSupport + ) + if(Qt6Multimedia_FOUND) + target_link_libraries(qtui PUBLIC Qt6::Multimedia) + endif() +endif() + +target_include_directories(qtui + SYSTEM PRIVATE + # Include Qt before anything else, see the comment about + # QT5_INCLUDE_DIRS in the top-level CMakeLists.txt + # Basically, qt@5 headers should be prioritized over qt@6 which + # would be found due to GCRYPT_INCLUDE_DIRS=/usr/local/include + ${QT5_INCLUDE_DIRS} + ${GCRYPT_INCLUDE_DIRS} + ${MINIZIP_INCLUDE_DIRS} + ${PCAP_INCLUDE_DIRS} + ${SPEEXDSP_INCLUDE_DIRS} + ${WINSPARKLE_INCLUDE_DIRS} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + +target_compile_definitions(qtui + PUBLIC + ${QT5_COMPILE_DEFINITIONS} +) + +set_target_properties(qtui PROPERTIES + LINK_FLAGS "${WS_LINK_FLAGS}" + FOLDER "UI" + AUTOMOC ON + AUTOUIC ON + AUTORCC ON + # Ensure .qm files are generated before autogenerating i18n.qrc + AUTOGEN_TARGET_DEPENDS "${WIRESHARK_QT_QM}" +) + +if(MSVC) + set_target_properties(qtui PROPERTIES LINK_FLAGS_DEBUG "${WS_MSVC_DEBUG_LINK_FLAGS}") +endif() + +CHECKAPI( + NAME + ui-qt + SWITCHES + --nocheck-shadow + SOURCES + # QCustomPlot (WIRESHARK_3RD_PARTY_WIDGET_{HEADERS,SRCS}) uses + # prohibited APIs. + ${WIRESHARK_QT_HEADERS} + ${WIRESHARK_WIDGET_HEADERS} + ${WIRESHARK_MANAGER_HEADERS} + ${WIRESHARK_UTILS_HEADERS} + ${WIRESHARK_MODEL_HEADERS} + + ${WIRESHARK_QT_SRC} + ${WIRESHARK_WIDGET_SRCS} + ${WIRESHARK_MANAGER_SRCS} + ${WIRESHARK_UTILS_SRCS} + ${WIRESHARK_MODEL_SRCS} + ${WIRESHARK_QT_TAP_SRC} +) + +# +# Editor modelines - https://www.wireshark.org/tools/modelines.html +# +# Local variables: +# c-basic-offset: 8 +# tab-width: 8 +# indent-tabs-mode: t +# End: +# +# vi: set shiftwidth=8 tabstop=8 noexpandtab: +# :indentSize=8:tabSize=8:noTabs=false: +# |