2026-01-20 18:31:28 +01:00
|
|
|
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
2025-03-31 18:33:05 +02:00
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
2022-05-15 02:06:02 +02:00
|
|
|
|
2014-08-18 14:35:44 +10:00
|
|
|
set(CMAKE_AUTOMOC ON)
|
2026-03-18 07:26:22 +00:00
|
|
|
set(CMAKE_AUTORCC OFF)
|
2019-07-29 16:06:33 -04:00
|
|
|
set(CMAKE_AUTOUIC ON)
|
2014-08-18 14:35:44 +10:00
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
|
|
2021-05-19 17:18:33 -04:00
|
|
|
# Set the RPATH for Qt Libraries
|
|
|
|
|
# This must be done before the `yuzu` target is created
|
2026-08-10 04:57:38 +02:00
|
|
|
if (YUZU_USE_BUNDLED_QT AND LINUX)
|
2021-05-19 17:18:33 -04:00
|
|
|
set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}/bin/lib/")
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-11-09 18:07:38 +01:00
|
|
|
find_package(Qt6 REQUIRED COMPONENTS Widgets)
|
|
|
|
|
|
2018-01-17 19:37:34 -05:00
|
|
|
add_executable(yuzu
|
|
|
|
|
Info.plist
|
|
|
|
|
about_dialog.cpp
|
|
|
|
|
about_dialog.h
|
2019-07-29 16:06:33 -04:00
|
|
|
aboutdialog.ui
|
2022-11-13 15:14:08 -06:00
|
|
|
applets/qt_amiibo_settings.cpp
|
|
|
|
|
applets/qt_amiibo_settings.h
|
|
|
|
|
applets/qt_amiibo_settings.ui
|
2021-07-14 00:29:12 -04:00
|
|
|
applets/qt_controller.cpp
|
|
|
|
|
applets/qt_controller.h
|
|
|
|
|
applets/qt_controller.ui
|
|
|
|
|
applets/qt_error.cpp
|
|
|
|
|
applets/qt_error.h
|
|
|
|
|
applets/qt_profile_select.cpp
|
|
|
|
|
applets/qt_profile_select.h
|
|
|
|
|
applets/qt_software_keyboard.cpp
|
|
|
|
|
applets/qt_software_keyboard.h
|
|
|
|
|
applets/qt_software_keyboard.ui
|
|
|
|
|
applets/qt_web_browser.cpp
|
|
|
|
|
applets/qt_web_browser.h
|
|
|
|
|
applets/qt_web_browser_scripts.h
|
2018-01-17 19:37:34 -05:00
|
|
|
bootmanager.cpp
|
|
|
|
|
bootmanager.h
|
2020-07-09 22:42:09 -04:00
|
|
|
configuration/configuration_shared.cpp
|
|
|
|
|
configuration/configuration_shared.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure.ui
|
2024-01-26 23:28:24 -05:00
|
|
|
configuration/configure_applets.cpp
|
|
|
|
|
configuration/configure_applets.h
|
|
|
|
|
configuration/configure_applets.ui
|
2018-07-30 23:57:53 -04:00
|
|
|
configuration/configure_audio.cpp
|
|
|
|
|
configuration/configure_audio.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_audio.ui
|
2022-06-18 23:34:28 -05:00
|
|
|
configuration/configure_camera.cpp
|
|
|
|
|
configuration/configure_camera.h
|
|
|
|
|
configuration/configure_camera.ui
|
2020-07-11 14:26:36 +01:00
|
|
|
configuration/configure_cpu.cpp
|
|
|
|
|
configuration/configure_cpu.h
|
|
|
|
|
configuration/configure_cpu.ui
|
2020-07-12 12:06:04 +01:00
|
|
|
configuration/configure_cpu_debug.cpp
|
|
|
|
|
configuration/configure_cpu_debug.h
|
|
|
|
|
configuration/configure_cpu_debug.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_debug.cpp
|
|
|
|
|
configuration/configure_debug.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_debug.ui
|
2020-07-22 10:39:53 -04:00
|
|
|
configuration/configure_debug_controller.cpp
|
|
|
|
|
configuration/configure_debug_controller.h
|
|
|
|
|
configuration/configure_debug_controller.ui
|
2021-07-08 16:56:44 -04:00
|
|
|
configuration/configure_debug_tab.cpp
|
|
|
|
|
configuration/configure_debug_tab.h
|
|
|
|
|
configuration/configure_debug_tab.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_dialog.cpp
|
|
|
|
|
configuration/configure_dialog.h
|
2019-04-23 08:36:35 -04:00
|
|
|
configuration/configure_filesystem.cpp
|
|
|
|
|
configuration/configure_filesystem.h
|
2019-09-21 18:43:11 -04:00
|
|
|
configuration/configure_filesystem.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_general.cpp
|
|
|
|
|
configuration/configure_general.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_general.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_graphics.cpp
|
|
|
|
|
configuration/configure_graphics.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_graphics.ui
|
2020-02-23 19:01:17 -05:00
|
|
|
configuration/configure_graphics_advanced.cpp
|
|
|
|
|
configuration/configure_graphics_advanced.h
|
|
|
|
|
configuration/configure_graphics_advanced.ui
|
2025-04-24 16:19:38 -04:00
|
|
|
configuration/configure_graphics_extensions.cpp
|
|
|
|
|
configuration/configure_graphics_extensions.h
|
|
|
|
|
configuration/configure_graphics_extensions.ui
|
2019-02-16 16:19:29 +01:00
|
|
|
configuration/configure_hotkeys.cpp
|
|
|
|
|
configuration/configure_hotkeys.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_hotkeys.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_input.cpp
|
|
|
|
|
configuration/configure_input.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_input.ui
|
2020-07-22 10:39:53 -04:00
|
|
|
configuration/configure_input_advanced.cpp
|
|
|
|
|
configuration/configure_input_advanced.h
|
|
|
|
|
configuration/configure_input_advanced.ui
|
2022-11-17 19:23:48 -05:00
|
|
|
configuration/configure_input_per_game.cpp
|
|
|
|
|
configuration/configure_input_per_game.h
|
|
|
|
|
configuration/configure_input_per_game.ui
|
2020-08-21 07:39:24 -04:00
|
|
|
configuration/configure_input_player.cpp
|
|
|
|
|
configuration/configure_input_player.h
|
|
|
|
|
configuration/configure_input_player.ui
|
2021-01-12 21:09:59 -06:00
|
|
|
configuration/configure_input_player_widget.cpp
|
|
|
|
|
configuration/configure_input_player_widget.h
|
2020-10-26 03:28:03 -04:00
|
|
|
configuration/configure_input_profile_dialog.cpp
|
|
|
|
|
configuration/configure_input_profile_dialog.h
|
|
|
|
|
configuration/configure_input_profile_dialog.ui
|
2023-05-29 14:51:56 +02:00
|
|
|
configuration/configure_mouse_panning.cpp
|
|
|
|
|
configuration/configure_mouse_panning.h
|
|
|
|
|
configuration/configure_mouse_panning.ui
|
2020-07-14 19:01:36 +02:00
|
|
|
configuration/configure_motion_touch.cpp
|
|
|
|
|
configuration/configure_motion_touch.h
|
|
|
|
|
configuration/configure_motion_touch.ui
|
2020-07-09 22:42:09 -04:00
|
|
|
configuration/configure_per_game.cpp
|
|
|
|
|
configuration/configure_per_game.h
|
|
|
|
|
configuration/configure_per_game.ui
|
|
|
|
|
configuration/configure_per_game_addons.cpp
|
|
|
|
|
configuration/configure_per_game_addons.h
|
|
|
|
|
configuration/configure_per_game_addons.ui
|
2019-01-04 17:32:13 -05:00
|
|
|
configuration/configure_profile_manager.cpp
|
|
|
|
|
configuration/configure_profile_manager.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_profile_manager.ui
|
2022-01-08 23:23:40 -06:00
|
|
|
configuration/configure_ringcon.cpp
|
|
|
|
|
configuration/configure_ringcon.h
|
|
|
|
|
configuration/configure_ringcon.ui
|
2021-08-12 21:32:53 +02:00
|
|
|
configuration/configure_network.cpp
|
|
|
|
|
configuration/configure_network.h
|
|
|
|
|
configuration/configure_network.ui
|
2018-01-17 19:37:34 -05:00
|
|
|
configuration/configure_system.cpp
|
|
|
|
|
configuration/configure_system.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_system.ui
|
2021-06-19 14:38:49 -05:00
|
|
|
configuration/configure_tas.cpp
|
|
|
|
|
configuration/configure_tas.h
|
|
|
|
|
configuration/configure_tas.ui
|
2020-07-14 19:01:36 +02:00
|
|
|
configuration/configure_touch_from_button.cpp
|
|
|
|
|
configuration/configure_touch_from_button.h
|
|
|
|
|
configuration/configure_touch_from_button.ui
|
2018-11-01 22:10:51 -04:00
|
|
|
configuration/configure_touchscreen_advanced.cpp
|
|
|
|
|
configuration/configure_touchscreen_advanced.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_touchscreen_advanced.ui
|
2020-07-14 19:01:36 +02:00
|
|
|
configuration/configure_touch_widget.h
|
2020-01-24 00:15:51 +01:00
|
|
|
configuration/configure_ui.cpp
|
|
|
|
|
configuration/configure_ui.h
|
|
|
|
|
configuration/configure_ui.ui
|
2020-10-17 09:38:12 -04:00
|
|
|
configuration/configure_vibration.cpp
|
|
|
|
|
configuration/configure_vibration.h
|
|
|
|
|
configuration/configure_vibration.ui
|
2018-09-16 20:05:51 +02:00
|
|
|
configuration/configure_web.cpp
|
|
|
|
|
configuration/configure_web.h
|
2019-07-29 16:06:33 -04:00
|
|
|
configuration/configure_web.ui
|
2020-09-23 09:52:25 -04:00
|
|
|
configuration/input_profiles.cpp
|
|
|
|
|
configuration/input_profiles.h
|
2023-05-08 22:37:03 -04:00
|
|
|
configuration/shared_widget.cpp
|
|
|
|
|
configuration/shared_widget.h
|
2018-07-02 11:10:41 -06:00
|
|
|
debugger/console.cpp
|
|
|
|
|
debugger/console.h
|
2021-01-21 18:51:24 -06:00
|
|
|
debugger/controller.cpp
|
|
|
|
|
debugger/controller.h
|
2025-10-15 05:05:03 +02:00
|
|
|
|
2026-06-02 04:08:24 +02:00
|
|
|
game/game_list.cpp game/game_list.h
|
|
|
|
|
game/game_grid.cpp game/game_grid.h
|
|
|
|
|
|
|
|
|
|
game/game_tree.h game/game_tree.cpp
|
|
|
|
|
game/game_card.h game/game_card.cpp
|
|
|
|
|
game/search_field.h game/search_field.cpp
|
2026-02-06 19:51:01 +01:00
|
|
|
|
2020-04-16 23:27:38 -04:00
|
|
|
hotkeys.cpp
|
|
|
|
|
hotkeys.h
|
|
|
|
|
install_dialog.cpp
|
|
|
|
|
install_dialog.h
|
2019-01-17 00:01:00 -07:00
|
|
|
loading_screen.cpp
|
|
|
|
|
loading_screen.h
|
2019-07-29 16:06:33 -04:00
|
|
|
loading_screen.ui
|
2025-11-09 18:07:38 +01:00
|
|
|
|
2018-01-17 19:37:34 -05:00
|
|
|
main.cpp
|
2025-11-09 18:07:38 +01:00
|
|
|
|
2021-12-25 20:27:52 +01:00
|
|
|
multiplayer/chat_room.cpp
|
|
|
|
|
multiplayer/chat_room.h
|
|
|
|
|
multiplayer/chat_room.ui
|
|
|
|
|
multiplayer/client_room.h
|
|
|
|
|
multiplayer/client_room.cpp
|
|
|
|
|
multiplayer/client_room.ui
|
|
|
|
|
multiplayer/direct_connect.cpp
|
|
|
|
|
multiplayer/direct_connect.h
|
|
|
|
|
multiplayer/direct_connect.ui
|
|
|
|
|
multiplayer/host_room.cpp
|
|
|
|
|
multiplayer/host_room.h
|
|
|
|
|
multiplayer/host_room.ui
|
|
|
|
|
multiplayer/lobby.cpp
|
|
|
|
|
multiplayer/lobby.h
|
|
|
|
|
multiplayer/lobby.ui
|
|
|
|
|
multiplayer/lobby_p.h
|
|
|
|
|
multiplayer/message.cpp
|
|
|
|
|
multiplayer/message.h
|
|
|
|
|
multiplayer/moderation_dialog.cpp
|
|
|
|
|
multiplayer/moderation_dialog.h
|
|
|
|
|
multiplayer/moderation_dialog.ui
|
|
|
|
|
multiplayer/state.cpp
|
|
|
|
|
multiplayer/state.h
|
|
|
|
|
multiplayer/validation.h
|
2022-07-10 11:46:53 -04:00
|
|
|
startup_checks.cpp
|
|
|
|
|
startup_checks.h
|
2025-10-17 22:47:43 +02:00
|
|
|
set_play_time_dialog.cpp
|
|
|
|
|
set_play_time_dialog.h
|
2021-12-25 20:27:52 +01:00
|
|
|
util/clickable_label.cpp
|
|
|
|
|
util/clickable_label.h
|
2021-11-27 23:26:51 -06:00
|
|
|
util/controller_navigation.cpp
|
|
|
|
|
util/controller_navigation.h
|
2018-10-28 18:11:17 -04:00
|
|
|
util/limitable_input_dialog.cpp
|
|
|
|
|
util/limitable_input_dialog.h
|
2021-03-20 07:57:31 -04:00
|
|
|
util/overlay_dialog.cpp
|
|
|
|
|
util/overlay_dialog.h
|
|
|
|
|
util/overlay_dialog.ui
|
2019-02-16 16:19:29 +01:00
|
|
|
util/sequence_dialog/sequence_dialog.cpp
|
|
|
|
|
util/sequence_dialog/sequence_dialog.h
|
2020-11-23 00:06:31 -05:00
|
|
|
util/url_request_interceptor.cpp
|
|
|
|
|
util/url_request_interceptor.h
|
2018-01-17 19:37:34 -05:00
|
|
|
util/util.cpp
|
|
|
|
|
util/util.h
|
2026-06-02 04:08:24 +02:00
|
|
|
|
|
|
|
|
user_data_migration.h user_data_migration.cpp
|
2025-05-08 22:16:07 +00:00
|
|
|
|
2021-02-14 00:20:41 -08:00
|
|
|
yuzu.qrc
|
2018-01-17 19:37:34 -05:00
|
|
|
yuzu.rc
|
2025-05-10 15:40:15 +00:00
|
|
|
migration_dialog.h migration_dialog.cpp
|
2026-06-02 04:08:24 +02:00
|
|
|
migration_worker.h migration_worker.cpp
|
|
|
|
|
libqt_common.h libqt_common.cpp
|
2025-08-11 22:27:29 +02:00
|
|
|
|
2026-06-02 04:08:24 +02:00
|
|
|
deps_dialog.cpp deps_dialog.h deps_dialog.ui
|
2025-10-15 04:54:41 +02:00
|
|
|
|
|
|
|
|
data_dialog.h data_dialog.cpp data_dialog.ui
|
|
|
|
|
data_widget.ui
|
2025-10-28 03:46:47 +01:00
|
|
|
ryujinx_dialog.h ryujinx_dialog.cpp ryujinx_dialog.ui
|
2026-02-06 19:51:01 +01:00
|
|
|
main_window.h main_window.cpp main.ui
|
2026-01-29 17:17:28 +01:00
|
|
|
|
|
|
|
|
configuration/system/new_user_dialog.h configuration/system/new_user_dialog.cpp configuration/system/new_user_dialog.ui
|
|
|
|
|
configuration/system/profile_avatar_dialog.h configuration/system/profile_avatar_dialog.cpp
|
2026-02-06 06:37:30 +01:00
|
|
|
configuration/addon/mod_select_dialog.h configuration/addon/mod_select_dialog.cpp configuration/addon/mod_select_dialog.ui
|
2026-02-15 19:22:19 +01:00
|
|
|
|
|
|
|
|
render/performance_overlay.h render/performance_overlay.cpp render/performance_overlay.ui
|
2026-06-19 22:55:29 +02:00
|
|
|
updater/update_dialog.h updater/update_dialog.cpp updater/update_dialog.ui
|
2026-06-22 21:04:47 +02:00
|
|
|
game/common.h
|
|
|
|
|
game/carousel.h game/carousel.cpp
|
|
|
|
|
)
|
2014-03-31 22:26:50 -04:00
|
|
|
|
2025-04-01 18:35:37 +02:00
|
|
|
set_target_properties(yuzu PROPERTIES OUTPUT_NAME "eden")
|
|
|
|
|
|
2023-10-04 13:11:05 -04:00
|
|
|
if (YUZU_CRASH_DUMPS)
|
2022-07-10 11:29:10 -04:00
|
|
|
target_sources(yuzu PRIVATE
|
2023-10-04 13:11:05 -04:00
|
|
|
breakpad.cpp
|
2026-01-14 19:29:13 +01:00
|
|
|
breakpad.h)
|
2022-07-10 11:29:10 -04:00
|
|
|
|
2023-10-04 13:11:05 -04:00
|
|
|
target_link_libraries(yuzu PRIVATE libbreakpad_client)
|
|
|
|
|
target_compile_definitions(yuzu PRIVATE YUZU_CRASH_DUMPS)
|
2022-07-10 11:29:10 -04:00
|
|
|
endif()
|
|
|
|
|
|
2025-09-09 20:47:49 +02:00
|
|
|
if (CXX_CLANG)
|
2023-06-18 19:57:14 -04:00
|
|
|
target_compile_definitions(yuzu PRIVATE
|
2026-01-14 19:29:13 +01:00
|
|
|
$<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>)
|
2023-06-18 19:57:14 -04:00
|
|
|
endif()
|
|
|
|
|
|
2018-10-20 17:08:26 -04:00
|
|
|
file(GLOB_RECURSE ICONS ${PROJECT_SOURCE_DIR}/dist/icons/*)
|
|
|
|
|
file(GLOB_RECURSE THEMES ${PROJECT_SOURCE_DIR}/dist/qt_themes/*)
|
2017-06-24 02:39:42 +02:00
|
|
|
|
2026-03-18 07:26:22 +00:00
|
|
|
file(GLOB QRC_COMPAT_LIST ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc)
|
|
|
|
|
file(GLOB_RECURSE QRC_ICONS ${PROJECT_SOURCE_DIR}/dist/icons/*.qrc)
|
|
|
|
|
file(GLOB_RECURSE QRC_THEMES ${PROJECT_SOURCE_DIR}/dist/qt_themes/*.qrc)
|
|
|
|
|
|
2025-10-21 23:36:35 +02:00
|
|
|
if (ENABLE_UPDATE_CHECKER)
|
|
|
|
|
target_compile_definitions(yuzu PUBLIC ENABLE_UPDATE_CHECKER)
|
2025-05-28 02:23:51 +00:00
|
|
|
endif()
|
|
|
|
|
|
2020-01-26 00:26:07 +01:00
|
|
|
if (ENABLE_QT_TRANSLATION)
|
|
|
|
|
set(YUZU_QT_LANGUAGES "${PROJECT_SOURCE_DIR}/dist/languages" CACHE PATH "Path to the translation bundle for the Qt frontend")
|
|
|
|
|
option(GENERATE_QT_TRANSLATION "Generate en.ts as the translation source file" OFF)
|
2023-11-08 11:27:13 -05:00
|
|
|
option(WORKAROUND_BROKEN_LUPDATE "Run lupdate directly through CMake if Qt's convenience wrappers don't work" OFF)
|
2020-01-26 00:26:07 +01:00
|
|
|
|
|
|
|
|
# Update source TS file if enabled
|
|
|
|
|
if (GENERATE_QT_TRANSLATION)
|
|
|
|
|
get_target_property(SRCS yuzu SOURCES)
|
2022-06-24 21:16:34 -07:00
|
|
|
# these calls to qt_create_translation also creates a rule to generate en.qm which conflicts with providing english plurals
|
|
|
|
|
# so we have to set a OUTPUT_LOCATION so that we don't have multiple rules to generate en.qm
|
|
|
|
|
set_source_files_properties(${YUZU_QT_LANGUAGES}/en.ts PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
|
2023-11-08 11:27:13 -05:00
|
|
|
if (WORKAROUND_BROKEN_LUPDATE)
|
|
|
|
|
add_custom_command(OUTPUT ${YUZU_QT_LANGUAGES}/en.ts
|
|
|
|
|
COMMAND lupdate
|
|
|
|
|
-source-language en_US
|
|
|
|
|
-target-language en_US
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
-ts ${YUZU_QT_LANGUAGES}/en.ts
|
|
|
|
|
DEPENDS
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
WORKING_DIRECTORY
|
2026-01-14 19:29:13 +01:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
2023-11-08 11:27:13 -05:00
|
|
|
else()
|
|
|
|
|
qt_create_translation(QM_FILES
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
${YUZU_QT_LANGUAGES}/en.ts
|
|
|
|
|
OPTIONS
|
|
|
|
|
-source-language en_US
|
2026-01-14 19:29:13 +01:00
|
|
|
-target-language en_US)
|
2023-11-08 11:27:13 -05:00
|
|
|
endif()
|
2022-06-24 21:16:34 -07:00
|
|
|
|
|
|
|
|
# Generate plurals into dist/english_plurals/generated_en.ts so it can be used to revise dist/english_plurals/en.ts
|
|
|
|
|
set(GENERATED_PLURALS_FILE ${PROJECT_SOURCE_DIR}/dist/english_plurals/generated_en.ts)
|
|
|
|
|
set_source_files_properties(${GENERATED_PLURALS_FILE} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/plurals")
|
2023-11-08 11:27:13 -05:00
|
|
|
if (WORKAROUND_BROKEN_LUPDATE)
|
|
|
|
|
add_custom_command(OUTPUT ${GENERATED_PLURALS_FILE}
|
|
|
|
|
COMMAND lupdate
|
|
|
|
|
-source-language en_US
|
|
|
|
|
-target-language en_US
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
-ts ${GENERATED_PLURALS_FILE}
|
|
|
|
|
DEPENDS
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
WORKING_DIRECTORY
|
2026-01-14 19:29:13 +01:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR})
|
2023-11-08 11:27:13 -05:00
|
|
|
else()
|
|
|
|
|
qt_create_translation(QM_FILES ${SRCS} ${UIS} ${GENERATED_PLURALS_FILE} OPTIONS -pluralonly -source-language en_US -target-language en_US)
|
|
|
|
|
endif()
|
2022-06-24 21:16:34 -07:00
|
|
|
|
|
|
|
|
add_custom_target(translation ALL DEPENDS ${YUZU_QT_LANGUAGES}/en.ts ${GENERATED_PLURALS_FILE})
|
2020-01-26 00:26:07 +01:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Find all TS files except en.ts
|
|
|
|
|
file(GLOB_RECURSE LANGUAGES_TS ${YUZU_QT_LANGUAGES}/*.ts)
|
|
|
|
|
list(REMOVE_ITEM LANGUAGES_TS ${YUZU_QT_LANGUAGES}/en.ts)
|
|
|
|
|
|
|
|
|
|
# Compile TS files to QM files
|
2022-05-12 07:03:37 -07:00
|
|
|
qt_add_translation(LANGUAGES_QM ${LANGUAGES_TS})
|
2020-01-26 00:26:07 +01:00
|
|
|
|
2022-06-24 21:16:34 -07:00
|
|
|
# Compile english plurals TS file to en.qm
|
|
|
|
|
qt_add_translation(LANGUAGES_QM ${PROJECT_SOURCE_DIR}/dist/english_plurals/en.ts)
|
|
|
|
|
|
2020-01-26 00:26:07 +01:00
|
|
|
# Build a QRC file from the QM file list
|
2026-03-18 07:26:22 +00:00
|
|
|
set(QRC_LANGUAGES ${CMAKE_CURRENT_BINARY_DIR}/languages.qrc)
|
|
|
|
|
file(WRITE ${QRC_LANGUAGES} "<RCC><qresource prefix=\"languages\">\n")
|
2020-01-26 00:26:07 +01:00
|
|
|
foreach (QM ${LANGUAGES_QM})
|
|
|
|
|
get_filename_component(QM_FILE ${QM} NAME)
|
2026-03-18 07:26:22 +00:00
|
|
|
file(APPEND ${QRC_LANGUAGES} "<file>${QM_FILE}</file>\n")
|
2020-01-26 00:26:07 +01:00
|
|
|
endforeach (QM)
|
2026-03-18 07:26:22 +00:00
|
|
|
file(APPEND ${QRC_LANGUAGES} "</qresource></RCC>")
|
2020-01-26 00:26:07 +01:00
|
|
|
else()
|
|
|
|
|
set(LANGUAGES)
|
|
|
|
|
endif()
|
2014-03-31 22:26:50 -04:00
|
|
|
|
2018-01-17 19:37:34 -05:00
|
|
|
target_sources(yuzu
|
|
|
|
|
PRIVATE
|
|
|
|
|
${ICONS}
|
2020-01-26 00:26:07 +01:00
|
|
|
${LANGUAGES}
|
2026-01-14 19:29:13 +01:00
|
|
|
${THEMES})
|
|
|
|
|
|
2026-03-26 07:59:53 +01:00
|
|
|
# TODO(crueter): Move Assets.car/icon/icns handling to its own Module.
|
2015-03-07 16:07:49 -08:00
|
|
|
if (APPLE)
|
2026-03-26 07:59:53 +01:00
|
|
|
# Xcode will automatically generate the Assets.car and icns file for us.
|
|
|
|
|
set(_dist "${CMAKE_SOURCE_DIR}/dist")
|
|
|
|
|
if (CMAKE_GENERATOR MATCHES "Xcode")
|
|
|
|
|
set(_icons "${_dist}/eden.icon")
|
|
|
|
|
|
|
|
|
|
set_target_properties(eden PROPERTIES
|
|
|
|
|
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME eden
|
|
|
|
|
MACOSX_BUNDLE_ICON_FILE eden
|
|
|
|
|
# Also force xcode to manage signing for us.
|
|
|
|
|
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED ON
|
|
|
|
|
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED ON)
|
|
|
|
|
# Otherwise, we'll use our own.
|
|
|
|
|
else()
|
|
|
|
|
set(_icons "${_dist}/eden.icns" "${_dist}/Assets.car")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set_source_files_properties(${_icons} PROPERTIES
|
|
|
|
|
MACOSX_PACKAGE_LOCATION Resources)
|
|
|
|
|
target_sources(yuzu PRIVATE ${_icons})
|
2025-11-25 22:37:04 +01:00
|
|
|
|
2018-01-17 19:37:34 -05:00
|
|
|
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
|
2018-01-11 19:21:20 -07:00
|
|
|
set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
|
2023-08-17 09:17:56 +08:00
|
|
|
|
2025-11-11 06:22:33 +01:00
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
|
2023-08-17 09:17:56 +08:00
|
|
|
find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED)
|
|
|
|
|
message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.")
|
|
|
|
|
|
2025-11-11 06:22:33 +01:00
|
|
|
set_source_files_properties(${MOLTENVK_LIBRARY} PROPERTIES
|
|
|
|
|
MACOSX_PACKAGE_LOCATION Frameworks
|
|
|
|
|
XCODE_FILE_ATTRIBUTES "CodeSignOnCopy")
|
|
|
|
|
target_sources(yuzu PRIVATE ${MOLTENVK_LIBRARY})
|
2018-07-02 11:10:41 -06:00
|
|
|
elseif(WIN32)
|
|
|
|
|
# compile as a win32 gui application instead of a console application
|
2025-03-31 18:33:05 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Qt6::EntryPointPrivate)
|
2018-07-02 11:10:41 -06:00
|
|
|
if(MSVC)
|
2022-06-10 20:37:47 -07:00
|
|
|
target_link_libraries(yuzu PRIVATE version.lib)
|
2018-07-02 11:10:41 -06:00
|
|
|
set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
|
|
|
|
|
elseif(MINGW)
|
2022-05-28 04:02:35 -04:00
|
|
|
set_target_properties(yuzu PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")
|
2025-10-26 17:28:14 +01:00
|
|
|
target_link_libraries(yuzu PRIVATE dwmapi)
|
2018-07-02 11:10:41 -06:00
|
|
|
endif()
|
2015-03-07 16:07:49 -08:00
|
|
|
endif()
|
2018-01-17 19:37:34 -05:00
|
|
|
|
2025-08-14 20:30:30 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE nlohmann_json::nlohmann_json)
|
2025-09-15 17:21:18 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE common core input_common frontend_common network video_core qt_common)
|
2026-05-06 03:23:27 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Boost::headers Qt6::Widgets Qt6::Charts Qt6::Concurrent)
|
2018-01-11 19:21:20 -07:00
|
|
|
target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
2026-05-06 03:23:27 +02:00
|
|
|
if (ENABLE_OPENGL)
|
|
|
|
|
target_link_libraries(yuzu PRIVATE glad)
|
|
|
|
|
endif()
|
2014-03-31 22:26:50 -04:00
|
|
|
|
2022-11-04 12:12:46 +00:00
|
|
|
if (UNIX AND NOT APPLE)
|
2025-08-23 19:42:49 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Qt6::DBus)
|
2021-12-21 02:47:24 -07:00
|
|
|
endif()
|
2020-04-02 02:32:58 -03:00
|
|
|
|
2022-07-15 19:45:35 +02:00
|
|
|
if (ENABLE_WEB_SERVICE)
|
2025-09-08 19:21:38 +02:00
|
|
|
target_compile_definitions(yuzu PRIVATE ENABLE_WEB_SERVICE)
|
2022-07-15 19:45:35 +02:00
|
|
|
endif()
|
|
|
|
|
|
2026-02-28 01:06:59 +01:00
|
|
|
if (YUZU_USE_QT_MULTIMEDIA)
|
|
|
|
|
target_link_libraries(yuzu PRIVATE Qt6::Multimedia)
|
|
|
|
|
target_compile_definitions(yuzu PRIVATE YUZU_USE_QT_MULTIMEDIA)
|
|
|
|
|
endif ()
|
2022-10-17 16:55:40 -07:00
|
|
|
|
2018-12-24 16:23:31 -05:00
|
|
|
if (YUZU_USE_QT_WEB_ENGINE)
|
2025-09-08 19:21:38 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Qt6::WebEngineCore Qt6::WebEngineWidgets)
|
|
|
|
|
target_compile_definitions(yuzu PRIVATE YUZU_USE_QT_WEB_ENGINE)
|
2018-12-24 16:23:31 -05:00
|
|
|
endif ()
|
|
|
|
|
|
2016-10-10 05:58:05 +00:00
|
|
|
if(UNIX AND NOT APPLE)
|
2022-03-27 15:09:03 +02:00
|
|
|
install(TARGETS yuzu)
|
2015-07-09 20:19:02 +01:00
|
|
|
endif()
|
2015-02-25 21:36:02 -07:00
|
|
|
|
2026-02-22 03:09:23 +01:00
|
|
|
if (WIN32 AND NOT YUZU_USE_BUNDLED_QT)
|
2023-05-13 23:58:17 +04:00
|
|
|
set(YUZU_EXE_DIR "$<TARGET_FILE_DIR:yuzu>")
|
2025-05-13 14:44:29 -04:00
|
|
|
add_custom_command(TARGET yuzu POST_BUILD COMMAND ${WINDEPLOYQT_EXECUTABLE} "${YUZU_EXE_DIR}/eden.exe" --dir "${YUZU_EXE_DIR}" --libdir "${YUZU_EXE_DIR}" --plugindir "${YUZU_EXE_DIR}/plugins" --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler --no-translations --verbose 0)
|
2022-10-17 16:55:40 -07:00
|
|
|
endif()
|
|
|
|
|
|
2022-11-06 16:45:36 -05:00
|
|
|
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
|
2022-11-25 19:35:46 +01:00
|
|
|
target_link_libraries(yuzu PRIVATE dynarmic::dynarmic)
|
2022-05-31 14:37:37 -04:00
|
|
|
endif()
|
2022-11-22 18:38:23 -05:00
|
|
|
|
2025-05-19 21:30:10 +00:00
|
|
|
if (YUZU_ROOM)
|
|
|
|
|
target_link_libraries(yuzu PRIVATE yuzu-room)
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-11-11 06:22:33 +01:00
|
|
|
if (NOT MSVC AND (APPLE OR NOT YUZU_STATIC_BUILD))
|
|
|
|
|
# needed for vma
|
|
|
|
|
target_compile_options(yuzu PRIVATE
|
2026-03-26 04:46:43 +01:00
|
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
|
|
|
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-variable>
|
|
|
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
|
|
|
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-missing-field-initializers>)
|
2025-11-11 06:22:33 +01:00
|
|
|
endif()
|
|
|
|
|
|
2026-01-20 18:31:28 +01:00
|
|
|
# Remember that the linker is incredibly stupid.
|
2026-05-18 19:07:41 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE OpenSSL::SSL OpenSSL::Crypto SDL3::SDL3)
|
2025-11-11 06:22:33 +01:00
|
|
|
|
2024-01-26 15:29:04 +00:00
|
|
|
create_target_directory_groups(yuzu)
|