mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 01:23:24 -08:00
* [CrashReporting] Mock dialog, sentry skeleton and CI prerequisites Mock: DlgCrashReport preview dialog (no account needed, redacted log preview), CrashReportingMode Ask/Always/Never setting in DebugSettings, --simulate-crash flag and Help-menu preview entry. Send writes a local mock JSON only. Vendor sentry-native 0.17.3 via FetchContent behind WITH_CRASH_REPORTING (breakpad everywhere, backend none under sanitizers) plus a CrashReporter facade with early init and post-loop shutdown. DSN is a placeholder: empty CMake default with COCKATRICE_SENTRY_DSN env override, so SDK init is skipped and mock behavior is unchanged until a real DSN is configured. CI prerequisites riding here so every layer below builds green: libcurl dev plus CA bundles in the Linux images and CodeQL env, sentry Qt integration off (its own find_package cannot see the macOS thin Qt layout), and the StrFunc Using construction makensis requires. Tests: ctest green, format clean, code plus UI gates PASS. * [CrashReporting] Forward mode changes to SDK and fix Linux CI opt-in Connects PersonalSettings::crashReportingModeChanged to giveConsent()/revokeConsent() so switching from AlwaysSend to NeverSend (or Ask) mid-session reaches the SDK instead of leaving consent given until restart. Forwards WITH_CRASH_REPORTING into the docker container the way CCACHE_DIR is, so the Linux package leg actually builds with crash reporting ON instead of silently building OFF. * [CrashReporting] Give crash-report logging its own category per review * [CrashReporting] Drop unused DebugSettings constructor visibility per review * [CrashReporting] Document reporting modes on the enum per review * [CrashReporting] Match the dump scan to the writer's temp fallback Review nit: when the handler's SHGetKnownFolderPath lookup fails it writes to <temp>/../.., but the startup scan looked in QDir::tempPath(), so a dump produced through the fallback would never be found and its crash would never offer to be reported. Walk up the same two levels in the scan. The path is Windows-only (#ifdef Q_OS_WIN); the statements were compiled and run standalone against Qt 6 to confirm the API use. * [CrashReporting] Complete the dump-scan fallback path The previous commit walked the scan's fallback up two levels but dropped the CrashDumps/Cockatrice suffix that the writer appends unconditionally, so a dump written through the fallback was still invisible to the scan. Evaluate the writer's expression verbatim rather than mirroring it with QDir: cdUp() is existence-checked and silently leaves the path alone when the directory is missing, parent_path() is not, and QDir::absoluteFilePath() joins the shared suffix without risking a doubled separator when the walk lands on a root. Verified by compiling the block verbatim against Qt 6 with -Wextra -Werror and comparing it with the writer's join for both the normal and the fallback case. Also record that %LOCALAPPDATA% is the scan's stand-in for FOLDERID_LocalAppData and why the two normally agree. --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
827 lines
41 KiB
CMake
827 lines
41 KiB
CMake
# CMakeLists for cockatrice directory
|
|
#
|
|
# provides the cockatrice binary
|
|
|
|
project(Cockatrice VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
|
|
|
set(cockatrice_SOURCES
|
|
${VERSION_STRING_CPP}
|
|
# sort by alphabetical order, so that there is no debate about where to add new sources to the list
|
|
src/client/network/connection_controller/remote_connection_controller.cpp
|
|
src/client/network/update/client/update_downloader.cpp
|
|
src/client/network/interfaces/deck_stats_interface.cpp
|
|
src/client/network/interfaces/tapped_out_interface.cpp
|
|
src/client/network/parsers/deck_link_to_api_transformer.cpp
|
|
src/client/network/update/client/client_update_checker.cpp
|
|
src/client/network/update/client/release_channel.cpp
|
|
src/client/network/update/card_spoiler/spoiler_background_updater.cpp
|
|
src/client/crash/crash_reporter.cpp
|
|
src/client/latency_graph_widget.cpp
|
|
src/client/latency_status_widget.cpp
|
|
src/client/lag_monitor.cpp
|
|
src/client/sound_engine.cpp
|
|
src/client/settings/cache_settings.cpp
|
|
src/client/settings/card_counter_settings.cpp
|
|
src/client/settings/shortcut_treeview.cpp
|
|
src/client/settings/shortcuts_settings.cpp
|
|
src/interface/deck_loader/card_node_function.cpp
|
|
src/interface/deck_loader/deck_file_format.cpp
|
|
src/interface/deck_loader/deck_loader.cpp
|
|
src/interface/deck_loader/loaded_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_connect.cpp
|
|
src/interface/widgets/dialogs/dlg_convert_deck_to_cod_format.cpp
|
|
src/interface/widgets/dialogs/dlg_create_game.cpp
|
|
src/interface/widgets/dialogs/dlg_crash_report.cpp
|
|
src/interface/widgets/dialogs/dlg_default_tags_editor.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_avatar.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_password.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_tokens.cpp
|
|
src/interface/widgets/dialogs/dlg_edit_user.cpp
|
|
src/interface/widgets/dialogs/dlg_filter_games.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_challenge.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_request.cpp
|
|
src/interface/widgets/dialogs/dlg_forgot_password_reset.cpp
|
|
src/interface/widgets/dialogs/dlg_invite_to_game.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck_from_clipboard.cpp
|
|
src/interface/widgets/dialogs/dlg_load_deck_from_website.cpp
|
|
src/interface/widgets/dialogs/dlg_load_remote_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_local_game_options.cpp
|
|
src/interface/widgets/dialogs/dlg_login_prompt.cpp
|
|
src/interface/widgets/dialogs/dlg_manage_sets.cpp
|
|
src/interface/widgets/dialogs/dlg_my_reports.cpp
|
|
src/interface/widgets/dialogs/dlg_register.cpp
|
|
src/interface/widgets/dialogs/dlg_report_user.cpp
|
|
src/interface/widgets/dialogs/dlg_select_set_for_cards.cpp
|
|
src/interface/widgets/dialogs/dlg_share_deck.cpp
|
|
src/interface/widgets/dialogs/dlg_shared_decks_preview.cpp
|
|
src/interface/widgets/dialogs/dlg_settings.cpp
|
|
src/interface/widgets/dialogs/dlg_startup_card_check.cpp
|
|
src/interface/widgets/dialogs/dlg_tip_of_the_day.cpp
|
|
src/interface/widgets/dialogs/dlg_update.cpp
|
|
src/interface/widgets/dialogs/dlg_view_log.cpp
|
|
src/interface/widgets/dialogs/override_printing_warning.cpp
|
|
src/interface/widgets/dialogs/path_safety_warning.cpp
|
|
src/interface/widgets/dialogs/settings_view.cpp
|
|
src/interface/widgets/dialogs/tip_of_the_day.cpp
|
|
src/interface/widgets/deck_share/deck_share_utils.cpp
|
|
src/interface/widgets/deck_share/shared_deck_preview_widget.cpp
|
|
src/interface/widgets/deck_share/share_bar_widget.cpp
|
|
src/filters/deck_filter_string.cpp
|
|
src/filters/filter_builder.cpp
|
|
src/filters/filter_tree_model.cpp
|
|
src/filters/syntax_help.cpp
|
|
src/game/abstract_game.cpp
|
|
src/game/arrow_registry.cpp
|
|
src/game_graphics/board/abstract_card_drag_item.cpp
|
|
src/game_graphics/board/abstract_card_item.cpp
|
|
src/game_graphics/board/abstract_counter.cpp
|
|
src/game/board/arrow_data.cpp
|
|
src/game_graphics/board/arrow_item.cpp
|
|
src/game_graphics/board/arrow_target.cpp
|
|
src/game_graphics/board/card_drag_item.cpp
|
|
src/game_graphics/board/card_item.cpp
|
|
src/game/board/card_list.cpp
|
|
src/game/board/card_state.cpp
|
|
src/game_graphics/board/counter_general.cpp
|
|
src/game/board/counter_state.cpp
|
|
src/game_graphics/board/translate_counter_name.cpp
|
|
src/game_graphics/deckview/deck_view.cpp
|
|
src/game_graphics/deckview/deck_view_container.cpp
|
|
src/game_graphics/deckview/tabbed_deck_view_container.cpp
|
|
src/game_graphics/dialogs/dlg_create_token.cpp
|
|
src/game_graphics/dialogs/dlg_move_top_cards_until.cpp
|
|
src/game_graphics/dialogs/dlg_roll_dice.cpp
|
|
src/game/game.cpp
|
|
src/game/game_event_handler.cpp
|
|
src/game/game_meta_info.cpp
|
|
src/game_graphics/game_scene.cpp
|
|
src/game/game_state.cpp
|
|
src/game_graphics/game_view.cpp
|
|
src/game_graphics/hand_counter.cpp
|
|
src/game_graphics/log/message_log_widget.cpp
|
|
src/game/phase.cpp
|
|
src/game_graphics/phases_toolbar.cpp
|
|
src/game_graphics/player/menu/card_menu.cpp
|
|
src/game_graphics/player/menu/custom_zone_menu.cpp
|
|
src/game_graphics/player/menu/grave_menu.cpp
|
|
src/game_graphics/player/menu/hand_menu.cpp
|
|
src/game_graphics/player/menu/library_menu.cpp
|
|
src/game_graphics/player/menu/move_menu.cpp
|
|
src/game_graphics/player/menu/player_menu.cpp
|
|
src/game_graphics/player/menu/pt_menu.cpp
|
|
src/game_graphics/player/menu/rfg_menu.cpp
|
|
src/game_graphics/player/menu/say_menu.cpp
|
|
src/game_graphics/player/menu/sideboard_menu.cpp
|
|
src/game_graphics/player/menu/tally_menu.cpp
|
|
src/game_graphics/player/menu/utility_menu.cpp
|
|
src/game_graphics/tally/stats_tally.cpp
|
|
src/game_graphics/tally/subtype_tally.cpp
|
|
src/game_graphics/tally/tally.cpp
|
|
src/game/player/player_actions.cpp
|
|
src/game_graphics/player/player_area.cpp
|
|
src/game_graphics/player/player_dialogs.cpp
|
|
src/game/player/player_event_handler.cpp
|
|
src/game_graphics/player/player_graphics_item.cpp
|
|
src/game/player/player_info.cpp
|
|
src/game_graphics/player/player_list_widget.cpp
|
|
src/game/player/player_logic.cpp
|
|
src/game/player/player_manager.cpp
|
|
src/game_graphics/player/player_target.cpp
|
|
src/game/replay.cpp
|
|
src/game/zones/card_zone_logic.cpp
|
|
src/game/zones/hand_zone_logic.cpp
|
|
src/game/zones/pile_zone_logic.cpp
|
|
src/game/zones/stack_zone_logic.cpp
|
|
src/game/zones/table_zone_logic.cpp
|
|
src/game/zones/view_zone_logic.cpp
|
|
src/game_graphics/zones/card_zone.cpp
|
|
src/game_graphics/zones/hand_zone.cpp
|
|
src/game_graphics/zones/pile_zone.cpp
|
|
src/game_graphics/zones/select_zone.cpp
|
|
src/game_graphics/zones/stack_zone.cpp
|
|
src/game_graphics/zones/table_zone.cpp
|
|
src/game_graphics/zones/view_zone.cpp
|
|
src/game_graphics/zones/view_zone_widget.cpp
|
|
src/game_graphics/board/abstract_graphics_item.cpp
|
|
src/interface/at_risk_data_warning.cpp
|
|
src/interface/at_risk_data_warning.h
|
|
src/interface/card_database_update/card_database_update_status_bar.cpp
|
|
src/interface/card_database_update/card_database_update_status_bar.h
|
|
src/interface/card_database_update/card_update_progress.cpp
|
|
src/interface/card_database_update/card_update_progress.h
|
|
src/interface/card_picture_loader/card_picture_loader.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_local.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_request_status_display_widget.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_status_bar.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_worker.cpp
|
|
src/interface/card_picture_loader/card_picture_loader_worker_work.cpp
|
|
src/interface/card_picture_loader/card_picture_to_load.cpp
|
|
src/interface/intents/intent.cpp
|
|
src/interface/intents/intent.h
|
|
src/interface/intents/intent_open_local_deck.cpp
|
|
src/interface/intents/intent_open_local_deck.h
|
|
src/interface/intents/intent_wait_for_database_load.cpp
|
|
src/interface/intents/intent_wait_for_database_load.h
|
|
src/interface/layouts/flow_layout.cpp
|
|
src/interface/layouts/overlap_layout.cpp
|
|
src/interface/widgets/utility/card_completer_delegate.cpp
|
|
src/interface/widgets/utility/card_completer_styler.cpp
|
|
src/interface/widgets/utility/completer_utils.cpp
|
|
src/interface/widgets/utility/line_edit_completer.cpp
|
|
src/interface/widgets/utility/reversed_completer_model.cpp
|
|
src/interface/pixel_map_generator.cpp
|
|
src/interface/theme_config.cpp
|
|
src/interface/theme_manager.cpp
|
|
src/interface/palette_editor/color_button.cpp
|
|
src/interface/palette_editor/palette_generator.cpp
|
|
src/interface/palette_editor/quick_setup_panel.cpp
|
|
src/interface/palette_editor/palette_grid_widget.cpp
|
|
src/interface/palette_editor/palette_editor_dialog.cpp
|
|
src/interface/widgets/cards/additional_info/color_identity_widget.cpp
|
|
src/interface/widgets/cards/additional_info/deck_color_identity.cpp
|
|
src/interface/widgets/cards/additional_info/mana_cost_widget.cpp
|
|
src/interface/widgets/cards/additional_info/mana_symbol_widget.cpp
|
|
src/interface/widgets/cards/art_crop_attribution.cpp
|
|
src/interface/widgets/cards/card_art_utils.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/flat_card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_group_display_widgets/overlapped_card_group_display_widget.cpp
|
|
src/interface/widgets/cards/card_info_display_widget.cpp
|
|
src/interface/widgets/cards/card_info_frame_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_art_crop_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_enlarged_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_widget.cpp
|
|
src/interface/widgets/cards/card_info_picture_with_text_overlay_widget.cpp
|
|
src/interface/widgets/cards/card_info_text_widget.cpp
|
|
src/interface/widgets/cards/card_size_widget.cpp
|
|
src/interface/widgets/cards/deck_card_zone_display_widget.cpp
|
|
src/interface/widgets/cards/deck_preview_card_picture_widget.cpp
|
|
src/interface/widgets/deck_analytics/abstract_analytics_panel_widget.cpp
|
|
src/interface/widgets/deck_analytics/add_analytics_panel_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analytics_panel_widget_factory.cpp
|
|
src/interface/widgets/deck_analytics/analytics_panel_widget_registrar.cpp
|
|
src/interface/widgets/deck_analytics/deck_analytics_widget.cpp
|
|
src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp
|
|
src/interface/widgets/deck_analytics/resizable_panel.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/draw_probability/draw_probability_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_base/mana_base_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_devotion/mana_devotion_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_config_dialog.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp
|
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp
|
|
src/interface/widgets/deck_editor/card_database_view.cpp
|
|
src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_filter_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.cpp
|
|
src/interface/widgets/deck_editor/deck_list_style_proxy.cpp
|
|
src/interface/widgets/deck_editor/deck_state_manager.cpp
|
|
src/interface/widgets/deck_editor/deck_zone_dialog.cpp
|
|
src/interface/widgets/deck_editor/printing_disabled_info_widget.cpp
|
|
src/interface/widgets/general/background_sources.cpp
|
|
src/interface/widgets/general/display/background_plate_widget.cpp
|
|
src/interface/widgets/general/display/banner_widget.cpp
|
|
src/interface/widgets/general/display/dynamic_font_size_label.cpp
|
|
src/interface/widgets/general/display/dynamic_font_size_push_button.cpp
|
|
src/interface/widgets/general/display/labeled_input.cpp
|
|
src/interface/widgets/general/display/shadow_background_label.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/color_bar.cpp
|
|
src/interface/widgets/general/display/charts/bars/percent_bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_chart_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/bar_chart_background_widget.cpp
|
|
src/interface/widgets/general/display/charts/bars/segmented_bar_widget.cpp
|
|
src/interface/widgets/general/display/charts/pies/color_pie.cpp
|
|
src/interface/widgets/general/home_styled_button.cpp
|
|
src/interface/widgets/general/home_tab_button_color.h
|
|
src/interface/widgets/general/home_widget.cpp
|
|
src/interface/widgets/general/layout_containers/flow_widget.cpp
|
|
src/interface/widgets/general/layout_containers/overlap_control_widget.cpp
|
|
src/interface/widgets/general/layout_containers/overlap_widget.cpp
|
|
src/interface/widgets/menus/deck_editor_menu.cpp
|
|
src/interface/widgets/printing_selector/all_zones_card_amount_widget.cpp
|
|
src/interface/widgets/printing_selector/card_amount_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_display_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_overlay_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_placeholder_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_search_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_selection_widget.cpp
|
|
src/interface/widgets/printing_selector/printing_selector_card_sorting_widget.cpp
|
|
src/interface/widgets/printing_selector/set_name_and_collectors_number_display_widget.cpp
|
|
src/interface/widgets/playmat/playmat_collection_dialog.cpp
|
|
src/interface/widgets/playmat/playmat_collection_dialog.h
|
|
src/interface/widgets/playmat/playmat_preview_widget.cpp
|
|
src/interface/widgets/playmat/playmat_settings_dialog.cpp
|
|
src/interface/widgets/quick_settings/settings_button_widget.cpp
|
|
src/interface/widgets/quick_settings/settings_popup_widget.cpp
|
|
src/interface/widgets/replay/replay_manager.cpp
|
|
src/interface/widgets/replay/replay_quick_settings_widget.cpp
|
|
src/interface/widgets/replay/replay_timeline_widget.cpp
|
|
src/interface/widgets/replay/replay_widget.cpp
|
|
src/interface/widgets/server/chat_view/chat_view.cpp
|
|
src/interface/widgets/server/game_filter_configs.cpp
|
|
src/interface/widgets/server/game_link.cpp
|
|
src/interface/widgets/server/game_selector.cpp
|
|
src/interface/widgets/server/game_selector_quick_filter_toolbar.cpp
|
|
src/interface/widgets/server/games_model.cpp
|
|
src/interface/widgets/server/handle_public_servers.cpp
|
|
src/interface/widgets/server/remote/remote_decklist_tree_widget.cpp
|
|
src/interface/widgets/server/remote/remote_replay_list_tree_widget.cpp
|
|
src/interface/widgets/server/user/user_avatar_provider.cpp
|
|
src/interface/widgets/server/user/user_card_art_provider.cpp
|
|
src/interface/widgets/server/user/user_card_settings_dialog.cpp
|
|
src/interface/widgets/server/user/user_context_menu.cpp
|
|
src/interface/widgets/server/user/user_info_box.cpp
|
|
src/interface/widgets/server/user/user_info_connection.cpp
|
|
src/interface/widgets/server/user/user_list_dialog.cpp
|
|
src/interface/widgets/server/user/user_list_manager.cpp
|
|
src/interface/widgets/server/user/user_list_painter.cpp
|
|
src/interface/widgets/server/user/user_list_panel_widget.cpp
|
|
src/interface/widgets/server/user/user_list_widget.cpp
|
|
src/interface/widgets/settings_page/abstract_settings_page.cpp
|
|
src/interface/widgets/settings_page/appearance_settings_page.cpp
|
|
src/interface/widgets/settings_page/deck_editor_settings_page.cpp
|
|
src/interface/widgets/settings_page/general_settings_page.cpp
|
|
src/interface/widgets/settings_page/messages_settings_page.cpp
|
|
src/interface/widgets/settings_page/settings_search_delegate.cpp
|
|
src/interface/widgets/settings_page/settings_search_model.cpp
|
|
src/interface/widgets/settings_page/shortcut_settings_page.cpp
|
|
src/interface/widgets/settings_page/sound_settings_page.cpp
|
|
src/interface/widgets/settings_page/storage_settings_page.cpp
|
|
src/interface/widgets/settings_page/user_interface_settings_page.cpp
|
|
src/interface/widgets/utility/custom_line_edit.cpp
|
|
src/interface/widgets/utility/get_text_with_max.cpp
|
|
src/interface/widgets/utility/report_utils.cpp
|
|
src/interface/widgets/utility/report_utils.h
|
|
src/interface/widgets/utility/sequence_edit.cpp
|
|
src/interface/widgets/utility/visibility_change_listener.cpp
|
|
src/interface/widgets/utility/visibility_change_listener.h
|
|
src/interface/widgets/visual_database_display/visual_database_display_color_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_filter_save_load_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_name_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_set_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_sub_type_filter_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_display_widget.cpp
|
|
src/interface/widgets/visual_database_display/visual_database_filter_display_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_display_options_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_sample_hand_widget.cpp
|
|
src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_color_identity_filter_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_addition_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_dialog.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_tag_item_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/deck_preview/public_deck_preview_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/remote_public_decks_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_folder_display_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_quick_settings_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_filter_proxy_model.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_tag_filter_widget.cpp
|
|
src/interface/widgets/visual_deck_storage/visual_deck_storage_widget.cpp
|
|
src/interface/window_main.cpp
|
|
src/main.cpp
|
|
src/single_instance_manager.cpp
|
|
src/interface/widgets/tabs/abstract_tab_deck_editor.cpp
|
|
src/interface/widgets/tabs/api/archidekt/tab_archidekt.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/archidekt_deck_listing_api_response.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/archidekt_formats.h
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_card_entry.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/card/archidekt_api_response_edition.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck/archidekt_api_response_deck_category.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_listing_container.cpp
|
|
src/interface/widgets/tabs/api/archidekt/api_response/deck_listings/archidekt_api_response_deck_owner.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_listings_display_widget.cpp
|
|
src/interface/widgets/tabs/api/archidekt/display/archidekt_deck_preview_image_display_widget.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/card_in_deck_request.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_deck_request.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_card_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_variant_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/api_response/commander_spellbook_estimate_bracket_result.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_spellbook_api_accessor.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/archidekt_links/edhrec_api_response_archidekt_links.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_average_deck_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/average_deck/edhrec_deck_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/card_prices/edhrec_api_response_card_prices.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_container.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_details.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_api_response_card_list.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/cards/edhrec_commander_api_response_commander_details.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/commander/edhrec_commander_api_response_average_deck_statistics.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_cards/edhrec_top_cards_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_commanders/edhrec_top_commanders_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/api_response/top_tags/edhrec_top_tags_api_response.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/card_prices/edhrec_api_response_card_prices_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_details_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_inclusion_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_list_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/cards/edhrec_api_response_card_synergy_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_api_response_commander_details_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_cards/edhrec_top_cards_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_commander/edhrec_top_commanders_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/top_tags/edhrec_top_tags_api_response_display_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/tab_edhrec.cpp
|
|
src/interface/widgets/tabs/api/edhrec/tab_edhrec_main.cpp
|
|
src/interface/widgets/tabs/tab.cpp
|
|
src/interface/widgets/tabs/tab_account.cpp
|
|
src/interface/widgets/tabs/tab_admin.cpp
|
|
src/interface/widgets/tabs/tab_card_art_rules.cpp
|
|
src/interface/widgets/tabs/tab_deck_editor.cpp
|
|
src/interface/widgets/tabs/tab_deck_storage.cpp
|
|
src/interface/widgets/tabs/tab_developer.cpp
|
|
src/interface/widgets/tabs/tab_game.cpp
|
|
src/interface/widgets/tabs/tab_home.cpp
|
|
src/interface/widgets/tabs/tab_logs.cpp
|
|
src/interface/widgets/tabs/tab_message.cpp
|
|
src/interface/widgets/tabs/tab_moderation.cpp
|
|
src/interface/widgets/tabs/tab_public_decks.cpp
|
|
src/interface/widgets/tabs/tab_report.cpp
|
|
src/interface/widgets/tabs/tab_replays.cpp
|
|
src/interface/widgets/tabs/tab_room.cpp
|
|
src/interface/widgets/tabs/tab_server.cpp
|
|
src/interface/widgets/tabs/tab_supervisor.cpp
|
|
src/interface/widgets/tabs/tab_visual_database_display.cpp
|
|
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual.cpp
|
|
src/interface/widgets/tabs/visual_deck_editor/tab_deck_editor_visual_tab_widget.cpp
|
|
src/interface/widgets/tabs/visual_deck_storage/tab_deck_storage_visual.cpp
|
|
src/interface/key_signals.cpp
|
|
src/interface/logger.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_service.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/commander_bracket_widget.cpp
|
|
src/interface/widgets/tabs/api/commander_spellbook/handle_commander_brackets.cpp
|
|
src/interface/widgets/onboarding/banner_shader_config.h
|
|
src/interface/widgets/onboarding/brand_colors.h
|
|
src/interface/widgets/onboarding/first_run_wizard.cpp
|
|
src/interface/widgets/onboarding/first_run_wizard.h
|
|
src/interface/widgets/onboarding/first_run_wizard_page.cpp
|
|
src/interface/widgets/onboarding/first_run_wizard_page.h
|
|
src/interface/widgets/onboarding/pages/account_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/account_setup_page.h
|
|
src/interface/widgets/onboarding/pages/card_database_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/card_database_setup_page.h
|
|
src/interface/widgets/onboarding/pages/finish_page.cpp
|
|
src/interface/widgets/onboarding/pages/finish_page.h
|
|
src/interface/widgets/onboarding/pages/preferences_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/preferences_setup_page.h
|
|
src/interface/widgets/onboarding/pages/theme_setup_page.cpp
|
|
src/interface/widgets/onboarding/pages/theme_setup_page.h
|
|
src/interface/widgets/onboarding/pages/welcome_page.cpp
|
|
src/interface/widgets/onboarding/pages/welcome_page.h
|
|
src/interface/widgets/onboarding/shader_banner_widget.cpp
|
|
src/interface/widgets/onboarding/shader_banner_widget.h
|
|
src/interface/widgets/onboarding/step_indicator_widget.cpp
|
|
src/interface/widgets/onboarding/step_indicator_widget.h
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp
|
|
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h
|
|
src/interface/widgets/utility/compact_push_button.cpp
|
|
src/interface/widgets/utility/compact_push_button.h
|
|
src/single_instance_manager.h
|
|
src/client/url_scheme_event_filter.h
|
|
src/interface/intents/intent_connect_to_server.cpp
|
|
src/interface/intents/intent_connect_to_server.h
|
|
src/interface/intents/intent_disconnect_from_server.cpp
|
|
src/interface/intents/intent_disconnect_from_server.h
|
|
src/interface/intents/intent_join_server_game.cpp
|
|
src/interface/intents/intent_join_server_game.h
|
|
src/interface/intents/intent_join_server_room.cpp
|
|
src/interface/intents/intent_join_server_room.h
|
|
src/interface/intents/intent_login.cpp
|
|
src/interface/intents/intent_login.h
|
|
src/interface/intents/intent_open_server_room_by_name.cpp
|
|
src/interface/intents/intent_open_server_room_by_name.h
|
|
src/interface/intents/intent_open_shared_deck.cpp
|
|
src/interface/intents/intent_open_shared_deck.h
|
|
src/interface/intents/url_parser.cpp
|
|
src/interface/intents/url_parser.h
|
|
src/interface/widgets/server/user/user_info_popup.cpp
|
|
src/interface/widgets/server/user/user_info_popup.h
|
|
)
|
|
|
|
add_subdirectory(sounds)
|
|
add_subdirectory(themes)
|
|
configure_file(
|
|
${CMAKE_SOURCE_DIR}/cockatrice/resources/config/qtlogging.ini ${CMAKE_BINARY_DIR}/cockatrice/qtlogging.ini COPYONLY
|
|
)
|
|
|
|
set(cockatrice_RESOURCES cockatrice.qrc)
|
|
|
|
if(UPDATE_TRANSLATIONS)
|
|
# Cockatrice main sources
|
|
file(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp
|
|
${CMAKE_SOURCE_DIR}/cockatrice/src/*.h
|
|
)
|
|
|
|
# All libcockatrice_* libraries (recursively)
|
|
file(GLOB_RECURSE translate_lib_SRCS ${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.cpp
|
|
${CMAKE_SOURCE_DIR}/libcockatrice_*/**/*.h
|
|
)
|
|
|
|
# Combine all sources for translation
|
|
set(translate_SRCS ${translate_cockatrice_SRCS} ${translate_lib_SRCS})
|
|
|
|
set(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice_en@source.ts")
|
|
else()
|
|
file(GLOB cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts")
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc)
|
|
endif(WIN32)
|
|
|
|
if(APPLE)
|
|
set(MACOSX_BUNDLE_ICON_FILE appicon.icns)
|
|
set_source_files_properties(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources
|
|
)
|
|
set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
|
|
endif(APPLE)
|
|
|
|
qt6_add_resources(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
|
|
|
|
# Declare path variables
|
|
set(ICONDIR
|
|
share/icons
|
|
CACHE STRING "icon dir"
|
|
)
|
|
set(DESKTOPDIR
|
|
share/applications
|
|
CACHE STRING "desktop file destination"
|
|
)
|
|
|
|
set(MIMEDIR
|
|
share/mime/packages
|
|
CACHE STRING "mime file destination"
|
|
)
|
|
|
|
set(COCKATRICE_MAC_QM_INSTALL_DIR "cockatrice.app/Contents/Resources/translations")
|
|
set(COCKATRICE_UNIX_QM_INSTALL_DIR "share/cockatrice/translations")
|
|
set(COCKATRICE_WIN32_QM_INSTALL_DIR "translations")
|
|
|
|
qt6_add_executable(
|
|
cockatrice
|
|
WIN32
|
|
MACOSX_BUNDLE
|
|
${cockatrice_SOURCES}
|
|
${cockatrice_RESOURCES_RCC}
|
|
${cockatrice_MOC_SRCS}
|
|
MANUAL_FINALIZATION
|
|
)
|
|
|
|
target_precompile_headers(cockatrice PRIVATE "${CMAKE_SOURCE_DIR}/cmake/pch/qtwidgets_pch.h")
|
|
|
|
qt6_add_shaders(
|
|
cockatrice
|
|
"onboarding_shaders"
|
|
PREFIX
|
|
"/onboarding/shaders"
|
|
BASE
|
|
"src/interface/widgets/onboarding/shaders"
|
|
FILES
|
|
src/interface/widgets/onboarding/shaders/brand_banner.frag
|
|
src/interface/widgets/onboarding/shaders/brand_plate.frag
|
|
)
|
|
|
|
qt6_add_resources(
|
|
cockatrice
|
|
"onboarding_qml"
|
|
PREFIX
|
|
"/onboarding/qml"
|
|
BASE
|
|
"src/interface/widgets/onboarding/qml"
|
|
FILES
|
|
src/interface/widgets/onboarding/qml/BrandBanner.qml
|
|
)
|
|
|
|
target_link_libraries(
|
|
cockatrice
|
|
PUBLIC libcockatrice_card
|
|
libcockatrice_deck_list
|
|
libcockatrice_filters
|
|
libcockatrice_utility
|
|
libcockatrice_network
|
|
libcockatrice_models
|
|
libcockatrice_rng
|
|
libcockatrice_settings
|
|
${COCKATRICE_QT_MODULES}
|
|
)
|
|
|
|
cockatrice_target_enable_crash_reporting(cockatrice)
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
|
|
set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}")
|
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
|
|
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
|
|
|
|
set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist)
|
|
|
|
install(TARGETS cockatrice BUNDLE DESTINATION ./)
|
|
else()
|
|
# Assume linux
|
|
install(TARGETS cockatrice RUNTIME DESTINATION bin/)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.png DESTINATION ${ICONDIR}/hicolor/48x48/apps)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/cockatrice.svg DESTINATION ${ICONDIR}/hicolor/scalable/apps)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice.desktop DESTINATION ${DESKTOPDIR})
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cockatrice-cod.xml DESTINATION ${MIMEDIR})
|
|
|
|
# Refresh the freedesktop databases so the file associations and scheme
|
|
# handler register without requiring the user to run them manually. The
|
|
# tools may be missing on minimal systems; that is fine, packaging systems
|
|
# usually refresh these databases through their own triggers.
|
|
find_program(UPDATE_MIME_DATABASE update-mime-database)
|
|
if(UPDATE_MIME_DATABASE)
|
|
install(CODE "execute_process(COMMAND \"${UPDATE_MIME_DATABASE}\" \"${CMAKE_INSTALL_PREFIX}/share/mime\")")
|
|
endif()
|
|
|
|
find_program(UPDATE_DESKTOP_DATABASE update-desktop-database)
|
|
if(UPDATE_DESKTOP_DATABASE)
|
|
install(
|
|
CODE "execute_process(COMMAND \"${UPDATE_DESKTOP_DATABASE}\" \"${CMAKE_INSTALL_PREFIX}/share/applications\")"
|
|
)
|
|
endif()
|
|
endif()
|
|
elseif(WIN32)
|
|
install(TARGETS cockatrice RUNTIME DESTINATION ./)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
# these needs to be relative to CMAKE_INSTALL_PREFIX
|
|
set(plugin_dest_dir cockatrice.app/Contents/Plugins)
|
|
set(qtconf_dest_dir cockatrice.app/Contents/Resources)
|
|
|
|
# Qt plugins: audio, iconengines, imageformats, multimedia, platforms, printsupport, styles, tls
|
|
install(
|
|
DIRECTORY "${QT_PLUGINS_DIR}/"
|
|
DESTINATION ${plugin_dest_dir}
|
|
COMPONENT Runtime
|
|
FILES_MATCHING
|
|
PATTERN "*.dSYM" EXCLUDE
|
|
PATTERN "*_debug.dylib" EXCLUDE
|
|
PATTERN "audio/*.dylib"
|
|
PATTERN "iconengines/*.dylib"
|
|
PATTERN "imageformats/*.dylib"
|
|
PATTERN "multimedia/*.dylib"
|
|
PATTERN "platforms/*.dylib"
|
|
PATTERN "printsupport/*.dylib"
|
|
PATTERN "styles/*.dylib"
|
|
PATTERN "tls/*.dylib"
|
|
)
|
|
|
|
install(
|
|
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
|
|
DESTINATION ${qtconf_dest_dir}/
|
|
FILES_MATCHING
|
|
PATTERN "*.ini"
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
|
|
Plugins = Plugins
|
|
Translations = Resources/translations
|
|
Data = Resources\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(GLOB_RECURSE QTPLUGINS
|
|
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dylib\")
|
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
include(BundleUtilities)
|
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.app\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
# these needs to be relative to CMAKE_INSTALL_PREFIX
|
|
set(plugin_dest_dir Plugins)
|
|
set(qtconf_dest_dir .)
|
|
|
|
install(
|
|
DIRECTORY "$<TARGET_FILE_DIR:cockatrice>/"
|
|
DESTINATION ./
|
|
FILES_MATCHING
|
|
PATTERN "*.dll"
|
|
PATTERN "*.pdb" EXCLUDE
|
|
PATTERN "*.dir*" EXCLUDE
|
|
PATTERN "*_autogen*" EXCLUDE
|
|
PATTERN "*.tlog*" EXCLUDE
|
|
PATTERN "CMakeFiles*" EXCLUDE
|
|
PATTERN "x64*" EXCLUDE
|
|
PATTERN ".qt*" EXCLUDE
|
|
PATTERN ".qsb*" EXCLUDE
|
|
PATTERN ".lupdate*" EXCLUDE
|
|
)
|
|
|
|
# fixup_bundle further down copies only the DLLs it can find in Cockatrice.exe's
|
|
# import table, and the glob above only sees DLLs that were already copied next
|
|
# to the executable. Qt6::Concurrent is linked but never imported - QtConcurrent::run
|
|
# and QFutureWatcher are header-only in Qt 6 - so neither step ships
|
|
# Qt6Concurrent.dll, even though required-runtime.txt lists it and the
|
|
# Windows package check then fails on a package that is fine to run.
|
|
# Qt6::ShaderTools is skipped for the same reason.
|
|
#
|
|
# Install the runtime of every linked module explicitly. An unused DLL costs a
|
|
# few hundred kilobytes; a missing one is what stops the client starting after
|
|
# an update, and it stays invisible until then.
|
|
foreach(_qt_module IN LISTS COCKATRICE_QT_MODULES)
|
|
get_target_property(_qt_module_type ${_qt_module} TYPE)
|
|
if(_qt_module_type STREQUAL "SHARED_LIBRARY")
|
|
install(FILES "$<TARGET_FILE:${_qt_module}>" DESTINATION ./)
|
|
endif()
|
|
endforeach()
|
|
|
|
install(
|
|
DIRECTORY "${CMAKE_BINARY_DIR}/cockatrice/"
|
|
DESTINATION ./
|
|
FILES_MATCHING
|
|
PATTERN "*.ini"
|
|
PATTERN "CMakeFiles*" EXCLUDE
|
|
PATTERN "*.dir*" EXCLUDE
|
|
PATTERN "*_autogen*" EXCLUDE
|
|
PATTERN "*.tlog*" EXCLUDE
|
|
PATTERN "*.pdb" EXCLUDE
|
|
PATTERN "x64*" EXCLUDE
|
|
PATTERN ".qt*" EXCLUDE
|
|
PATTERN ".qsb*" EXCLUDE
|
|
PATTERN ".lupdate*" EXCLUDE
|
|
)
|
|
|
|
# Qt plugins: audio, iconengines, imageformats, multimedia, platforms, printsupport, styles, tls
|
|
install(
|
|
DIRECTORY "${QT_PLUGINS_DIR}/"
|
|
DESTINATION ${plugin_dest_dir}
|
|
COMPONENT Runtime
|
|
FILES_MATCHING
|
|
PATTERN "audio/qtaudio_wasapi.dll"
|
|
PATTERN "audio/qtaudio_windows.dll"
|
|
PATTERN "iconengines/qsvgicon.dll"
|
|
PATTERN "imageformats/*.dll"
|
|
PATTERN "mediaservice/dsengine.dll"
|
|
PATTERN "mediaservice/wmfengine.dll"
|
|
PATTERN "multimedia/*.dll"
|
|
PATTERN "platforms/qdirect2d.dll"
|
|
PATTERN "platforms/qminimal.dll"
|
|
PATTERN "platforms/qoffscreen.dll"
|
|
PATTERN "platforms/qwindows.dll"
|
|
PATTERN "printsupport/windowsprintersupport.dll"
|
|
PATTERN "styles/qcertonlybackend.dll"
|
|
PATTERN "styles/qopensslbackend.dll"
|
|
PATTERN "styles/qschannelbackend.dll"
|
|
PATTERN "styles/qwindowsvistastyle.dll"
|
|
PATTERN "styles/qwindows11style.dll"
|
|
PATTERN "styles/qmodernwindowsstyle.dll"
|
|
PATTERN "styles/qmodernwindowsstyled.dll"
|
|
PATTERN "tls/qcertonlybackend.dll"
|
|
PATTERN "tls/qopensslbackend.dll"
|
|
PATTERN "tls/qschannelbackend.dll"
|
|
)
|
|
|
|
# The Windows install has no Resources directory: the .qm files go to
|
|
# ${COCKATRICE_WIN32_QM_INSTALL_DIR} and main.cpp looks for them at
|
|
# applicationDirPath() + "/translations". The macOS bundle above keeps
|
|
# Resources/translations, which is correct for it.
|
|
install(
|
|
CODE "
|
|
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
|
|
Plugins = Plugins
|
|
Translations = translations
|
|
Data = Resources\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
|
|
install(
|
|
CODE "
|
|
file(GLOB_RECURSE QTPLUGINS
|
|
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\")
|
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
|
include(BundleUtilities)
|
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
|
|
"
|
|
COMPONENT Runtime
|
|
)
|
|
endif()
|
|
|
|
if(Qt6LinguistTools_FOUND)
|
|
#Qt6 Translations happen after the executable is built up
|
|
if(UPDATE_TRANSLATIONS)
|
|
qt6_add_translations(
|
|
cockatrice
|
|
TS_FILES
|
|
${cockatrice_TS}
|
|
SOURCES
|
|
${translate_SRCS}
|
|
QM_FILES_OUTPUT_VARIABLE
|
|
cockatrice_QM
|
|
)
|
|
else()
|
|
qt6_add_translations(cockatrice TS_FILES ${cockatrice_TS} QM_FILES_OUTPUT_VARIABLE cockatrice_QM)
|
|
endif()
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_MAC_QM_INSTALL_DIR})
|
|
else()
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_UNIX_QM_INSTALL_DIR})
|
|
endif()
|
|
elseif(WIN32)
|
|
install(FILES ${cockatrice_QM} DESTINATION ${COCKATRICE_WIN32_QM_INSTALL_DIR})
|
|
endif()
|
|
|
|
# Qt attaches the .qm files to the default build target only, so building the executable on its own
|
|
# (CLion, --target cockatrice) leaves it without any translations: nothing is translated and the
|
|
# language selector stays empty.
|
|
# Depend on Qt's own lrelease target instead of attaching the .qm custom commands to a second
|
|
# target: two independent targets owning the same outputs race on MSBuild/Makefiles and are an
|
|
# error on Xcode. Older Qt versions already add this dependency themselves.
|
|
foreach(_lrelease_target Cockatrice_lrelease cockatrice_lrelease)
|
|
if(TARGET ${_lrelease_target})
|
|
add_dependencies(cockatrice ${_lrelease_target})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
qt6_finalize_target(cockatrice)
|