2025-06-09 01:40:21 +00:00
|
|
|
# SPDX-FileCopyrightText: Copyright 2025 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)
|
2017-06-24 02:39:42 +02:00
|
|
|
set(CMAKE_AUTORCC ON)
|
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
|
2025-08-20 00:21:16 +02:00
|
|
|
if (YUZU_USE_BUNDLED_QT AND PLATFORM_LINUX)
|
2021-05-19 17:18:33 -04:00
|
|
|
set(CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR}/bin/lib/")
|
|
|
|
|
endif()
|
|
|
|
|
|
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
|
2019-07-29 16:06:33 -04:00
|
|
|
compatdb.ui
|
2018-09-09 19:09:37 -04:00
|
|
|
compatibility_list.cpp
|
|
|
|
|
compatibility_list.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
|
2024-01-02 19:59:03 +01:00
|
|
|
configuration/configure_linux_tab.cpp
|
|
|
|
|
configuration/configure_linux_tab.h
|
|
|
|
|
configuration/configure_linux_tab.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
|
2018-01-17 19:37:34 -05:00
|
|
|
debugger/wait_tree.cpp
|
|
|
|
|
debugger/wait_tree.h
|
2025-10-15 05:05:03 +02:00
|
|
|
|
2018-01-17 19:37:34 -05:00
|
|
|
game_list.cpp
|
|
|
|
|
game_list.h
|
|
|
|
|
game_list_p.h
|
2018-09-07 16:08:08 -04:00
|
|
|
game_list_worker.cpp
|
|
|
|
|
game_list_worker.h
|
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
|
2018-01-17 19:37:34 -05:00
|
|
|
main.cpp
|
|
|
|
|
main.h
|
2019-07-29 16:06:33 -04:00
|
|
|
main.ui
|
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
|
2023-05-28 21:46:02 +00:00
|
|
|
vk_device_info.cpp
|
|
|
|
|
vk_device_info.h
|
2018-09-16 20:05:51 +02:00
|
|
|
compatdb.cpp
|
|
|
|
|
compatdb.h
|
2025-05-08 22:16:07 +00:00
|
|
|
user_data_migration.cpp
|
|
|
|
|
user_data_migration.h
|
|
|
|
|
|
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
|
2025-05-11 23:58:25 +00:00
|
|
|
migration_worker.h
|
|
|
|
|
migration_worker.cpp
|
2025-08-11 22:27:29 +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
|
2018-01-17 19:37:34 -05:00
|
|
|
)
|
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
|
|
|
|
|
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
|
2023-06-20 19:26:12 -04:00
|
|
|
$<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>
|
2023-06-18 19:57:14 -04:00
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2018-08-29 15:42:53 +02:00
|
|
|
file(GLOB COMPAT_LIST
|
2018-10-20 17:08:26 -04:00
|
|
|
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
|
|
|
|
|
${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
else()
|
|
|
|
|
qt_create_translation(QM_FILES
|
|
|
|
|
${SRCS}
|
|
|
|
|
${UIS}
|
|
|
|
|
${YUZU_QT_LANGUAGES}/en.ts
|
|
|
|
|
OPTIONS
|
|
|
|
|
-source-language en_US
|
|
|
|
|
-target-language en_US
|
|
|
|
|
)
|
|
|
|
|
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
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
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
|
|
|
|
|
set(LANGUAGES_QRC ${CMAKE_CURRENT_BINARY_DIR}/languages.qrc)
|
|
|
|
|
file(WRITE ${LANGUAGES_QRC} "<RCC><qresource prefix=\"languages\">\n")
|
|
|
|
|
foreach (QM ${LANGUAGES_QM})
|
|
|
|
|
get_filename_component(QM_FILE ${QM} NAME)
|
|
|
|
|
file(APPEND ${LANGUAGES_QRC} "<file>${QM_FILE}</file>\n")
|
|
|
|
|
endforeach (QM)
|
|
|
|
|
file(APPEND ${LANGUAGES_QRC} "</qresource></RCC>")
|
|
|
|
|
|
|
|
|
|
# Add the QRC file to package in all QM files
|
2022-05-12 07:03:37 -07:00
|
|
|
qt_add_resources(LANGUAGES ${LANGUAGES_QRC})
|
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
|
2018-08-29 15:42:53 +02:00
|
|
|
${COMPAT_LIST}
|
2018-01-17 19:37:34 -05:00
|
|
|
${ICONS}
|
2020-01-26 00:26:07 +01:00
|
|
|
${LANGUAGES}
|
2020-02-15 17:21:19 +01:00
|
|
|
${THEMES}
|
2018-01-17 19:37:34 -05:00
|
|
|
)
|
|
|
|
|
|
2015-03-07 16:07:49 -08:00
|
|
|
if (APPLE)
|
2025-06-21 21:01:05 +00:00
|
|
|
set(MACOSX_ICON "../../dist/eden.icns")
|
2015-09-11 22:08:42 +02:00
|
|
|
set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
2018-01-17 19:37:34 -05:00
|
|
|
target_sources(yuzu PRIVATE ${MACOSX_ICON})
|
|
|
|
|
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-10-01 16:36:07 +02:00
|
|
|
if (YUZU_USE_BUNDLED_MOLTENVK)
|
2023-08-17 09:17:56 +08:00
|
|
|
set(MOLTENVK_PLATFORM "macOS")
|
2025-06-21 21:01:05 +00:00
|
|
|
set(MOLTENVK_VERSION "v1.3.0")
|
2025-09-30 02:51:48 +02:00
|
|
|
download_moltenvk(${MOLTENVK_PLATFORM} ${MOLTENVK_VERSION})
|
2023-08-17 09:17:56 +08:00
|
|
|
endif()
|
|
|
|
|
find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED)
|
|
|
|
|
message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.")
|
|
|
|
|
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)
|
2025-10-15 04:54:41 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Boost::headers glad Qt6::Widgets Qt6::Concurrent)
|
2018-01-11 19:21:20 -07:00
|
|
|
target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
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
|
|
|
|
2018-09-29 02:51:28 +02:00
|
|
|
if (YUZU_ENABLE_COMPATIBILITY_REPORTING)
|
2025-09-08 19:21:38 +02:00
|
|
|
target_compile_definitions(yuzu PRIVATE YUZU_ENABLE_COMPATIBILITY_REPORTING)
|
2018-09-29 02:51:28 +02:00
|
|
|
endif()
|
|
|
|
|
|
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()
|
|
|
|
|
|
2022-10-17 16:55:40 -07:00
|
|
|
if (YUZU_USE_QT_MULTIMEDIA)
|
2025-09-08 19:21:38 +02:00
|
|
|
target_link_libraries(yuzu PRIVATE Qt6::Multimedia)
|
|
|
|
|
target_compile_definitions(yuzu PRIVATE YUZU_USE_QT_MULTIMEDIA)
|
2022-10-17 16:55:40 -07:00
|
|
|
endif ()
|
|
|
|
|
|
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
|
|
|
|
2025-05-20 15:57:19 -04:00
|
|
|
if (WIN32 AND NOT YUZU_USE_BUNDLED_QT AND QT_VERSION VERSION_GREATER_EQUAL 6)
|
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()
|
|
|
|
|
|
2025-09-08 19:21:38 +02:00
|
|
|
# TODO(crueter): this can be done with system qt in a better way
|
2025-05-20 15:57:19 -04:00
|
|
|
if (YUZU_USE_BUNDLED_QT)
|
2025-07-16 23:17:34 +02:00
|
|
|
include(CopyYuzuQt6Deps)
|
|
|
|
|
copy_yuzu_Qt6_deps(yuzu)
|
2021-05-19 17:18:33 -04:00
|
|
|
endif()
|
|
|
|
|
|
2021-10-30 01:21:26 -04:00
|
|
|
if (ENABLE_SDL2)
|
2022-12-06 00:44:52 +01:00
|
|
|
target_link_libraries(yuzu PRIVATE SDL2::SDL2)
|
2021-10-30 01:21:26 -04:00
|
|
|
target_compile_definitions(yuzu PRIVATE HAVE_SDL2)
|
|
|
|
|
endif()
|
|
|
|
|
|
2021-05-19 17:18:33 -04:00
|
|
|
if (MSVC)
|
2018-01-13 21:17:42 -07:00
|
|
|
include(CopyYuzuSDLDeps)
|
2020-10-26 23:07:36 -04:00
|
|
|
include(CopyYuzuFFmpegDeps)
|
2018-01-13 22:14:04 +00:00
|
|
|
copy_yuzu_SDL_deps(yuzu)
|
2020-10-26 23:07:36 -04:00
|
|
|
copy_yuzu_FFmpeg_deps(yuzu)
|
2015-02-25 21:36:02 -07:00
|
|
|
endif()
|
2020-01-21 16:40:53 -03:00
|
|
|
|
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()
|
|
|
|
|
|
2024-01-26 15:29:04 +00:00
|
|
|
create_target_directory_groups(yuzu)
|