mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-18 03:59:14 +01:00
839b04014e
Previously, if you have "Hotkeys Require Window Focus" disabled, you could repeatedly use the "Open" hotkey, for example, to stack File Open windows over top of each other over and over. This commit allows the hotkey manager to disable/enable on QFileDialog creation and destruction.
572 lines
19 KiB
CMake
572 lines
19 KiB
CMake
if (NOT Qt5_DIR AND MSVC)
|
|
if(_M_ARM_64)
|
|
set(Qt5_DIR "${CMAKE_SOURCE_DIR}/Externals/Qt/Qt5.15.0/msvc2019_arm64/lib/cmake/Qt5")
|
|
else()
|
|
set(Qt5_DIR "${CMAKE_SOURCE_DIR}/Externals/Qt/Qt5.15.0/msvc2019_64/lib/cmake/Qt5")
|
|
endif()
|
|
endif()
|
|
|
|
find_package(Qt5 5.9 REQUIRED COMPONENTS Gui Widgets)
|
|
|
|
set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES "")
|
|
message(STATUS "Found Qt version ${Qt5Core_VERSION}")
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
add_executable(dolphin-emu
|
|
AboutDialog.cpp
|
|
AboutDialog.h
|
|
CheatSearchFactoryWidget.cpp
|
|
CheatSearchFactoryWidget.h
|
|
CheatSearchWidget.cpp
|
|
CheatSearchWidget.h
|
|
CheatsManager.cpp
|
|
CheatsManager.h
|
|
ConvertDialog.cpp
|
|
ConvertDialog.h
|
|
DiscordHandler.cpp
|
|
DiscordHandler.h
|
|
DiscordJoinRequestDialog.cpp
|
|
DiscordJoinRequestDialog.h
|
|
FIFO/FIFOPlayerWindow.cpp
|
|
FIFO/FIFOPlayerWindow.h
|
|
FIFO/FIFOAnalyzer.cpp
|
|
FIFO/FIFOAnalyzer.h
|
|
Host.cpp
|
|
Host.h
|
|
HotkeyScheduler.cpp
|
|
HotkeyScheduler.h
|
|
Main.cpp
|
|
MainWindow.cpp
|
|
MainWindow.h
|
|
MenuBar.cpp
|
|
MenuBar.h
|
|
NKitWarningDialog.cpp
|
|
NKitWarningDialog.h
|
|
RenderWidget.cpp
|
|
RenderWidget.h
|
|
Resources.cpp
|
|
Resources.h
|
|
SearchBar.cpp
|
|
SearchBar.h
|
|
Settings.cpp
|
|
Settings.h
|
|
ToolBar.cpp
|
|
ToolBar.h
|
|
Translation.cpp
|
|
Translation.h
|
|
WiiUpdate.cpp
|
|
WiiUpdate.h
|
|
Config/ARCodeWidget.cpp
|
|
Config/ARCodeWidget.h
|
|
Config/CheatCodeEditor.cpp
|
|
Config/CheatCodeEditor.h
|
|
Config/CheatWarningWidget.cpp
|
|
Config/CheatWarningWidget.h
|
|
Config/CommonControllersWidget.cpp
|
|
Config/CommonControllersWidget.h
|
|
Config/ControllerInterface/DualShockUDPClientAddServerDialog.cpp
|
|
Config/ControllerInterface/DualShockUDPClientAddServerDialog.h
|
|
Config/ControllerInterface/DualShockUDPClientWidget.cpp
|
|
Config/ControllerInterface/DualShockUDPClientWidget.h
|
|
Config/ControllerInterface/ControllerInterfaceWindow.cpp
|
|
Config/ControllerInterface/ControllerInterfaceWindow.h
|
|
Config/ControllerInterface/ServerStringValidator.cpp
|
|
Config/ControllerInterface/ServerStringValidator.h
|
|
Config/ControllersWindow.cpp
|
|
Config/ControllersWindow.h
|
|
Config/FilesystemWidget.cpp
|
|
Config/FilesystemWidget.h
|
|
Config/FreeLookWidget.cpp
|
|
Config/FreeLookWidget.h
|
|
Config/FreeLookWindow.cpp
|
|
Config/FreeLookWindow.h
|
|
Config/GamecubeControllersWidget.cpp
|
|
Config/GamecubeControllersWidget.h
|
|
Config/GameConfigEdit.cpp
|
|
Config/GameConfigEdit.h
|
|
Config/GameConfigHighlighter.cpp
|
|
Config/GameConfigHighlighter.h
|
|
Config/GameConfigWidget.cpp
|
|
Config/GameConfigWidget.h
|
|
Config/GeckoCodeWidget.cpp
|
|
Config/GeckoCodeWidget.h
|
|
Config/Graphics/AdvancedWidget.cpp
|
|
Config/Graphics/AdvancedWidget.h
|
|
Config/Graphics/BalloonTip.cpp
|
|
Config/Graphics/BalloonTip.h
|
|
Config/Graphics/EnhancementsWidget.cpp
|
|
Config/Graphics/EnhancementsWidget.h
|
|
Config/Graphics/GeneralWidget.cpp
|
|
Config/Graphics/GeneralWidget.h
|
|
Config/Graphics/GraphicsBool.cpp
|
|
Config/Graphics/GraphicsBool.h
|
|
Config/Graphics/GraphicsChoice.cpp
|
|
Config/Graphics/GraphicsChoice.h
|
|
Config/Graphics/GraphicsInteger.cpp
|
|
Config/Graphics/GraphicsInteger.h
|
|
Config/Graphics/GraphicsRadio.cpp
|
|
Config/Graphics/GraphicsRadio.h
|
|
Config/Graphics/GraphicsSlider.cpp
|
|
Config/Graphics/GraphicsSlider.h
|
|
Config/Graphics/GraphicsWidget.h
|
|
Config/Graphics/GraphicsWindow.cpp
|
|
Config/Graphics/GraphicsWindow.h
|
|
Config/Graphics/HacksWidget.cpp
|
|
Config/Graphics/HacksWidget.h
|
|
Config/Graphics/PostProcessingConfigWindow.cpp
|
|
Config/Graphics/PostProcessingConfigWindow.h
|
|
Config/Graphics/SoftwareRendererWidget.cpp
|
|
Config/Graphics/SoftwareRendererWidget.h
|
|
Config/InfoWidget.cpp
|
|
Config/InfoWidget.h
|
|
Config/LogConfigWidget.cpp
|
|
Config/LogConfigWidget.h
|
|
Config/LogWidget.cpp
|
|
Config/LogWidget.h
|
|
Config/Mapping/FreeLookGeneral.cpp
|
|
Config/Mapping/FreeLookGeneral.h
|
|
Config/Mapping/FreeLookRotation.cpp
|
|
Config/Mapping/FreeLookRotation.h
|
|
Config/Mapping/GBAPadEmu.cpp
|
|
Config/Mapping/GBAPadEmu.h
|
|
Config/Mapping/GCKeyboardEmu.cpp
|
|
Config/Mapping/GCKeyboardEmu.h
|
|
Config/Mapping/GCMicrophone.cpp
|
|
Config/Mapping/GCMicrophone.h
|
|
Config/Mapping/GCPadEmu.cpp
|
|
Config/Mapping/GCPadEmu.h
|
|
Config/Mapping/GCPadWiiUConfigDialog.cpp
|
|
Config/Mapping/GCPadWiiUConfigDialog.h
|
|
Config/Mapping/Hotkey3D.cpp
|
|
Config/Mapping/Hotkey3D.h
|
|
Config/Mapping/HotkeyControllerProfile.cpp
|
|
Config/Mapping/HotkeyControllerProfile.h
|
|
Config/Mapping/HotkeyDebugging.cpp
|
|
Config/Mapping/HotkeyDebugging.h
|
|
Config/Mapping/HotkeyGBA.cpp
|
|
Config/Mapping/HotkeyGBA.h
|
|
Config/Mapping/HotkeyGeneral.cpp
|
|
Config/Mapping/HotkeyGeneral.h
|
|
Config/Mapping/HotkeyGraphics.cpp
|
|
Config/Mapping/HotkeyGraphics.h
|
|
Config/Mapping/HotkeyStates.cpp
|
|
Config/Mapping/HotkeyStates.h
|
|
Config/Mapping/HotkeyStatesOther.cpp
|
|
Config/Mapping/HotkeyStatesOther.h
|
|
Config/Mapping/HotkeyTAS.cpp
|
|
Config/Mapping/HotkeyTAS.h
|
|
Config/Mapping/HotkeyWii.cpp
|
|
Config/Mapping/HotkeyWii.h
|
|
Config/Mapping/IOWindow.cpp
|
|
Config/Mapping/MappingButton.cpp
|
|
Config/Mapping/MappingButton.h
|
|
Config/Mapping/MappingCommon.cpp
|
|
Config/Mapping/MappingCommon.h
|
|
Config/Mapping/MappingIndicator.cpp
|
|
Config/Mapping/MappingIndicator.h
|
|
Config/Mapping/MappingNumeric.cpp
|
|
Config/Mapping/MappingNumeric.h
|
|
Config/Mapping/MappingWidget.cpp
|
|
Config/Mapping/MappingWidget.h
|
|
Config/Mapping/MappingWindow.cpp
|
|
Config/Mapping/MappingWindow.h
|
|
Config/Mapping/WiimoteEmuExtension.cpp
|
|
Config/Mapping/WiimoteEmuExtension.h
|
|
Config/Mapping/WiimoteEmuExtensionMotionInput.cpp
|
|
Config/Mapping/WiimoteEmuExtensionMotionInput.h
|
|
Config/Mapping/WiimoteEmuExtensionMotionSimulation.cpp
|
|
Config/Mapping/WiimoteEmuExtensionMotionSimulation.h
|
|
Config/Mapping/WiimoteEmuGeneral.cpp
|
|
Config/Mapping/WiimoteEmuGeneral.h
|
|
Config/Mapping/WiimoteEmuMotionControl.cpp
|
|
Config/Mapping/WiimoteEmuMotionControl.h
|
|
Config/Mapping/WiimoteEmuMotionControlIMU.cpp
|
|
Config/Mapping/WiimoteEmuMotionControlIMU.h
|
|
Config/NewPatchDialog.cpp
|
|
Config/NewPatchDialog.h
|
|
Config/PatchesWidget.cpp
|
|
Config/PatchesWidget.h
|
|
Config/PropertiesDialog.cpp
|
|
Config/PropertiesDialog.h
|
|
Config/SettingsWindow.cpp
|
|
Config/SettingsWindow.h
|
|
Config/ToolTipControls/ToolTipCheckBox.cpp
|
|
Config/ToolTipControls/ToolTipCheckBox.h
|
|
Config/ToolTipControls/ToolTipComboBox.cpp
|
|
Config/ToolTipControls/ToolTipComboBox.h
|
|
Config/ToolTipControls/ToolTipRadioButton.cpp
|
|
Config/ToolTipControls/ToolTipRadioButton.h
|
|
Config/ToolTipControls/ToolTipSlider.cpp
|
|
Config/ToolTipControls/ToolTipSlider.h
|
|
Config/ToolTipControls/ToolTipSpinBox.cpp
|
|
Config/ToolTipControls/ToolTipSpinBox.h
|
|
Config/ToolTipControls/ToolTipWidget.h
|
|
Config/VerifyWidget.cpp
|
|
Config/VerifyWidget.h
|
|
Config/WiimoteControllersWidget.cpp
|
|
Config/WiimoteControllersWidget.h
|
|
Debugger/BreakpointWidget.cpp
|
|
Debugger/BreakpointWidget.h
|
|
Debugger/CodeViewWidget.cpp
|
|
Debugger/CodeViewWidget.h
|
|
Debugger/CodeWidget.cpp
|
|
Debugger/CodeWidget.h
|
|
Debugger/JITWidget.cpp
|
|
Debugger/JITWidget.h
|
|
Debugger/MemoryViewWidget.cpp
|
|
Debugger/MemoryViewWidget.h
|
|
Debugger/MemoryWidget.cpp
|
|
Debugger/MemoryWidget.h
|
|
Debugger/NetworkWidget.cpp
|
|
Debugger/NetworkWidget.h
|
|
Debugger/NewBreakpointDialog.cpp
|
|
Debugger/NewBreakpointDialog.h
|
|
Debugger/PatchInstructionDialog.cpp
|
|
Debugger/PatchInstructionDialog.h
|
|
Debugger/RegisterColumn.cpp
|
|
Debugger/RegisterColumn.h
|
|
Debugger/RegisterWidget.cpp
|
|
Debugger/RegisterWidget.h
|
|
Debugger/ThreadWidget.cpp
|
|
Debugger/ThreadWidget.h
|
|
Debugger/WatchWidget.cpp
|
|
Debugger/WatchWidget.h
|
|
GameList/GameList.cpp
|
|
GameList/GameList.h
|
|
GameList/GameListModel.cpp
|
|
GameList/GameListModel.h
|
|
GameList/GameTracker.cpp
|
|
GameList/GameTracker.h
|
|
GameList/GridProxyModel.cpp
|
|
GameList/GridProxyModel.h
|
|
GameList/ListProxyModel.cpp
|
|
GameList/ListProxyModel.h
|
|
GCMemcardCreateNewDialog.cpp
|
|
GCMemcardCreateNewDialog.h
|
|
GCMemcardManager.cpp
|
|
GCMemcardManager.h
|
|
QtUtils/BlockUserInputFilter.cpp
|
|
QtUtils/BlockUserInputFilter.h
|
|
NetPlay/ChunkedProgressDialog.cpp
|
|
NetPlay/ChunkedProgressDialog.h
|
|
NetPlay/GameListDialog.cpp
|
|
NetPlay/GameListDialog.h
|
|
NetPlay/MD5Dialog.cpp
|
|
NetPlay/MD5Dialog.h
|
|
NetPlay/NetPlayBrowser.cpp
|
|
NetPlay/NetPlayBrowser.h
|
|
NetPlay/NetPlayDialog.cpp
|
|
NetPlay/NetPlayDialog.h
|
|
NetPlay/NetPlaySetupDialog.cpp
|
|
NetPlay/NetPlaySetupDialog.h
|
|
NetPlay/PadMappingDialog.cpp
|
|
NetPlay/PadMappingDialog.h
|
|
QtUtils/DolphinFileDialog.cpp
|
|
QtUtils/DolphinFileDialog.h
|
|
QtUtils/DoubleClickEventFilter.cpp
|
|
QtUtils/DoubleClickEventFilter.h
|
|
QtUtils/ElidedButton.cpp
|
|
QtUtils/ElidedButton.h
|
|
QtUtils/FileOpenEventFilter.cpp
|
|
QtUtils/FileOpenEventFilter.h
|
|
QtUtils/FlowLayout.cpp
|
|
QtUtils/FlowLayout.h
|
|
QtUtils/ModalMessageBox.cpp
|
|
QtUtils/ModalMessageBox.h
|
|
QtUtils/ParallelProgressDialog.h
|
|
QtUtils/PartiallyClosableTabWidget.cpp
|
|
QtUtils/PartiallyClosableTabWidget.h
|
|
QtUtils/ImageConverter.cpp
|
|
QtUtils/ImageConverter.h
|
|
QtUtils/UTF8CodePointCountValidator.cpp
|
|
QtUtils/UTF8CodePointCountValidator.h
|
|
QtUtils/WindowActivationEventFilter.cpp
|
|
QtUtils/WindowActivationEventFilter.h
|
|
QtUtils/WinIconHelper.cpp
|
|
QtUtils/WinIconHelper.h
|
|
QtUtils/WrapInScrollArea.cpp
|
|
QtUtils/WrapInScrollArea.h
|
|
QtUtils/AspectRatioWidget.cpp
|
|
QtUtils/AspectRatioWidget.h
|
|
ResourcePackManager.cpp
|
|
ResourcePackManager.h
|
|
Settings/AdvancedPane.cpp
|
|
Settings/AdvancedPane.h
|
|
Settings/AudioPane.cpp
|
|
Settings/AudioPane.h
|
|
Settings/BroadbandAdapterSettingsDialog.cpp
|
|
Settings/BroadbandAdapterSettingsDialog.h
|
|
Settings/GameCubePane.cpp
|
|
Settings/GameCubePane.h
|
|
Settings/GeneralPane.cpp
|
|
Settings/GeneralPane.h
|
|
Settings/InterfacePane.cpp
|
|
Settings/InterfacePane.h
|
|
Settings/PathPane.cpp
|
|
Settings/PathPane.h
|
|
Settings/WiiPane.cpp
|
|
Settings/WiiPane.h
|
|
Settings/USBDeviceAddToWhitelistDialog.cpp
|
|
Settings/USBDeviceAddToWhitelistDialog.h
|
|
TAS/GCTASInputWindow.cpp
|
|
TAS/GCTASInputWindow.h
|
|
TAS/WiiTASInputWindow.cpp
|
|
TAS/WiiTASInputWindow.h
|
|
TAS/TASCheckBox.cpp
|
|
TAS/TASCheckBox.h
|
|
TAS/TASInputWindow.cpp
|
|
TAS/TASInputWindow.h
|
|
TAS/TASSlider.cpp
|
|
TAS/TASSlider.h
|
|
TAS/StickWidget.cpp
|
|
TAS/StickWidget.h
|
|
TAS/IRWidget.cpp
|
|
TAS/IRWidget.h
|
|
Updater.cpp
|
|
Updater.h
|
|
)
|
|
|
|
if (NOT WIN32)
|
|
target_sources(dolphin-emu PRIVATE
|
|
QtUtils/SignalDaemon.cpp
|
|
QtUtils/SignalDaemon.h
|
|
)
|
|
endif()
|
|
|
|
target_compile_definitions(dolphin-emu
|
|
PRIVATE
|
|
-DQT_USE_QSTRINGBUILDER
|
|
-DQT_NO_CAST_FROM_ASCII
|
|
-DQT_NO_CAST_TO_ASCII
|
|
)
|
|
|
|
target_include_directories(dolphin-emu
|
|
PRIVATE
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${Qt5Gui_PRIVATE_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(dolphin-emu
|
|
PRIVATE
|
|
core
|
|
Qt5::Widgets
|
|
uicommon
|
|
imgui
|
|
)
|
|
|
|
if (WIN32)
|
|
target_link_libraries(dolphin-emu
|
|
PRIVATE
|
|
gdi32.lib
|
|
shell32.lib
|
|
)
|
|
endif()
|
|
|
|
if (MSVC)
|
|
# Don't propogate warnings in qt headers to Dolphin
|
|
target_compile_options(dolphin-emu PRIVATE /experimental:external)
|
|
target_compile_options(dolphin-emu PRIVATE /external:W0)
|
|
target_compile_options(dolphin-emu PRIVATE "/external:I${Qt5Gui_PRIVATE_INCLUDE_DIRS}")
|
|
target_compile_options(dolphin-emu PRIVATE "/external:I${Qt5Widgets_PRIVATE_INCLUDE_DIRS}")
|
|
endif()
|
|
|
|
if(WIN32)
|
|
target_sources(dolphin-emu PRIVATE DolphinQt.manifest DolphinQt.rc)
|
|
|
|
set_target_properties(dolphin-emu PROPERTIES
|
|
DEBUG_POSTFIX D
|
|
OUTPUT_NAME Dolphin
|
|
WIN32_EXECUTABLE TRUE
|
|
)
|
|
|
|
# Copy Sys dir
|
|
add_custom_command(TARGET dolphin-emu POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/Data/Sys" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Sys"
|
|
)
|
|
|
|
# Copy COPYING
|
|
add_custom_command(TARGET dolphin-emu POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/COPYING" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/COPYING"
|
|
)
|
|
|
|
# Copy Licenses dir
|
|
add_custom_command(TARGET dolphin-emu POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/LICENSES" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Licenses"
|
|
)
|
|
|
|
# Copy qt.conf
|
|
add_custom_command(TARGET dolphin-emu POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.win" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf"
|
|
)
|
|
|
|
# Delegate to Qt's official deployment binary on Windows to copy over the necessary Qt-specific libraries, etc.
|
|
get_target_property(MOC_EXECUTABLE_LOCATION Qt5::moc IMPORTED_LOCATION)
|
|
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)
|
|
find_program(WINDEPLOYQT_EXE windeployqt HINTS "${QT_BINARY_DIRECTORY}")
|
|
|
|
# Note: We set the PATH for the duration of this command so that the
|
|
# deployment application is able to locate the Qt libraries to copy.
|
|
# if the necessary paths aren't already set beforehand.
|
|
#
|
|
# For example, consider a hypothetical emulation project named Orca.
|
|
# Orca supplies its own version of Qt instead of having developers actually
|
|
# install the officially supported Qt libraries -- a method that would make
|
|
# wrangling around with Qt through CMake much nicer and lessen the external
|
|
# library maintenance burden of the project, but alas.
|
|
#
|
|
# In this case, as Qt is not installed through the official binary, this also
|
|
# means proper path variables will not be set up, thus the need to ensure they're
|
|
# always set up.
|
|
#
|
|
add_custom_command(TARGET dolphin-emu POST_BUILD
|
|
COMMAND "${CMAKE_COMMAND}" -E env PATH="${QT_BINARY_DIRECTORY}"
|
|
"${WINDEPLOYQT_EXE}" --libdir="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
|
|
--plugindir="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/QtPlugins"
|
|
$<IF:$<CONFIG:Debug>,--debug,--release>
|
|
--no-translations
|
|
--no-compiler-runtime
|
|
--no-system-d3d-compiler
|
|
--no-angle
|
|
--no-opengl-sw
|
|
"$<TARGET_FILE:dolphin-emu>"
|
|
)
|
|
endif()
|
|
|
|
# Handle localization
|
|
find_package(Gettext)
|
|
|
|
if(WIN32 AND NOT Gettext_FOUND)
|
|
message(STATUS "Using Gettext from Externals")
|
|
set(GETTEXT_MSGFMT_EXECUTABLE "${CMAKE_SOURCE_DIR}/Externals/gettext/msgfmt.exe")
|
|
endif()
|
|
|
|
if(GETTEXT_MSGFMT_EXECUTABLE)
|
|
set(pot_file "${CMAKE_SOURCE_DIR}/Languages/po/dolphin-emu.pot")
|
|
file(GLOB LINGUAS ${CMAKE_SOURCE_DIR}/Languages/po/*.po)
|
|
|
|
target_sources(dolphin-emu PRIVATE ${pot_file} ${LINGUAS})
|
|
source_group("Localization" FILES ${LINGUAS})
|
|
source_group("Localization\\\\Generated" FILES ${pot_file})
|
|
|
|
foreach(po ${LINGUAS})
|
|
get_filename_component(lang ${po} NAME_WE)
|
|
if(WIN32)
|
|
set(mo_dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Languages/${lang})
|
|
else()
|
|
set(mo_dir ${CMAKE_CURRENT_BINARY_DIR}/${lang})
|
|
endif()
|
|
set(mo ${mo_dir}/dolphin-emu.mo)
|
|
|
|
target_sources(dolphin-emu PRIVATE ${mo})
|
|
source_group("Localization\\\\Generated" FILES ${mo})
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
set_source_files_properties(${mo} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/${lang}.lproj")
|
|
else()
|
|
install(FILES ${mo} DESTINATION share/locale/${lang}/LC_MESSAGES)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
add_custom_command(OUTPUT ${mo}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${mo_dir}
|
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po}
|
|
DEPENDS ${po}
|
|
)
|
|
else()
|
|
add_custom_command(OUTPUT ${mo}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${mo_dir}
|
|
COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${po} ${pot_file}
|
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po}
|
|
DEPENDS ${po}
|
|
)
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
if(APPLE)
|
|
include(BundleUtilities)
|
|
set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Dolphin.app)
|
|
|
|
# Ask for an application bundle.
|
|
set_target_properties(dolphin-emu PROPERTIES
|
|
MACOSX_BUNDLE true
|
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
|
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/DolphinEmu.entitlements"
|
|
XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep --options=runtime"
|
|
OUTPUT_NAME Dolphin
|
|
)
|
|
|
|
# Copy qt.conf into the bundle
|
|
target_sources(dolphin-emu PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/qt.conf")
|
|
set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/qt.conf" PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
|
|
|
# Copy icon into the bundle
|
|
target_sources(dolphin-emu PRIVATE "${CMAKE_SOURCE_DIR}/Data/Dolphin.icns")
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/Data/Dolphin.icns" PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
|
|
|
# Copy Qt plugins into the bundle
|
|
get_target_property(qtcocoa_location Qt5::QCocoaIntegrationPlugin LOCATION)
|
|
target_sources(dolphin-emu PRIVATE "${qtcocoa_location}")
|
|
set_source_files_properties("${qtcocoa_location}" PROPERTIES MACOSX_PACKAGE_LOCATION MacOS/platforms)
|
|
|
|
get_target_property(qtmacstyle_location Qt5::QMacStylePlugin LOCATION)
|
|
target_sources(dolphin-emu PRIVATE "${qtmacstyle_location}")
|
|
set_source_files_properties("${qtmacstyle_location}" PROPERTIES MACOSX_PACKAGE_LOCATION MacOS/styles)
|
|
|
|
# Copy resources into the bundle
|
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/Data/Sys")
|
|
file(GLOB_RECURSE resources RELATIVE "${CMAKE_SOURCE_DIR}/Data" "${CMAKE_SOURCE_DIR}/Data/Sys/*")
|
|
foreach(res ${resources})
|
|
target_sources(dolphin-emu PRIVATE "${CMAKE_SOURCE_DIR}/Data/${res}")
|
|
get_filename_component(resdir "${res}" DIRECTORY)
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/Data/${res}" PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION "Resources/${resdir}")
|
|
source_group("Resources" FILES "${CMAKE_SOURCE_DIR}/Data/${res}")
|
|
endforeach()
|
|
|
|
# Copy MoltenVK into the bundle
|
|
target_sources(dolphin-emu PRIVATE "${CMAKE_SOURCE_DIR}/Externals/MoltenVK/libvulkan.dylib")
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/Externals/MoltenVK/libvulkan.dylib" PROPERTIES MACOSX_PACKAGE_LOCATION Frameworks)
|
|
|
|
# Update library references to make the bundle portable
|
|
include(DolphinPostprocessBundle)
|
|
dolphin_postprocess_bundle(dolphin-emu)
|
|
# Fix rpath
|
|
add_custom_command(TARGET dolphin-emu
|
|
POST_BUILD COMMAND
|
|
${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../Frameworks/"
|
|
$<TARGET_FILE:dolphin-emu>)
|
|
|
|
if(MACOS_CODE_SIGNING)
|
|
# Code sign make file builds
|
|
add_custom_command(TARGET dolphin-emu
|
|
POST_BUILD COMMAND
|
|
/usr/bin/codesign -f -s "${MACOS_CODE_SIGNING_IDENTITY}" --deep --options=runtime --entitlements "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmu$<$<CONFIG:Debug>:Debug>.entitlements" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Dolphin.app" || true)
|
|
|
|
# Code sign builds for build systems that do have release/debug variants (Xcode)
|
|
add_custom_command(TARGET dolphin-emu
|
|
POST_BUILD COMMAND
|
|
/usr/bin/codesign -f -s "${MACOS_CODE_SIGNING_IDENTITY}" --deep --options=runtime --entitlements "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmuDebug.entitlements" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/Dolphin.app" || true)
|
|
|
|
add_custom_command(TARGET dolphin-emu
|
|
POST_BUILD COMMAND
|
|
/usr/bin/codesign -f -s "${MACOS_CODE_SIGNING_IDENTITY}" --deep --options=runtime --entitlements "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmu.entitlements" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/Dolphin.app" || true)
|
|
endif()
|
|
else()
|
|
install(TARGETS dolphin-emu RUNTIME DESTINATION ${bindir})
|
|
endif()
|
|
|
|
if(USE_MGBA)
|
|
target_sources(dolphin-emu PRIVATE
|
|
GBAHost.cpp
|
|
GBAHost.h
|
|
GBAWidget.cpp
|
|
GBAWidget.h
|
|
)
|
|
endif()
|
|
|
|
if(USE_DISCORD_PRESENCE)
|
|
target_compile_definitions(dolphin-emu PRIVATE -DUSE_DISCORD_PRESENCE)
|
|
endif()
|