mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-16 02:59:11 +01:00
7036299a92
Most settings which affect determinism will now be synced on NetPlay. Additionally, there's a strict sync mode which will sync various enhancements to prevent desync in games that use EFB reads. This also adds a check for all players having the IPL.bin file, and doesn't load it for anyone if someone is missing it. This prevents desyncs caused by mismatched system fonts. Additionally, the NetPlay window was getting too wide with checkboxes, so FlowLayout has been introduced to make the checkboxes take up multiple rows dynamically. However, there's some minor vertical centering issues I haven't been able to solve, but it's better than a ridiculously wide window.
230 lines
7.2 KiB
CMake
230 lines
7.2 KiB
CMake
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
|
|
CheatsManager.cpp
|
|
FIFO/FIFOPlayerWindow.cpp
|
|
FIFO/FIFOAnalyzer.cpp
|
|
HotkeyScheduler.cpp
|
|
Host.cpp
|
|
Main.cpp
|
|
MainWindow.cpp
|
|
MenuBar.cpp
|
|
RenderWidget.cpp
|
|
Resources.cpp
|
|
SearchBar.cpp
|
|
Settings.cpp
|
|
ToolBar.cpp
|
|
Translation.cpp
|
|
WiiUpdate.cpp
|
|
WiiUpdate.h
|
|
Config/CheatCodeEditor.cpp
|
|
Config/ARCodeWidget.cpp
|
|
Config/CheatWarningWidget.cpp
|
|
Config/ControllersWindow.cpp
|
|
Config/FilesystemWidget.cpp
|
|
Config/GameConfigWidget.cpp
|
|
Config/GeckoCodeWidget.cpp
|
|
Config/Graphics/AdvancedWidget.cpp
|
|
Config/Graphics/EnhancementsWidget.cpp
|
|
Config/Graphics/GeneralWidget.cpp
|
|
Config/Graphics/HacksWidget.cpp
|
|
Config/Graphics/GraphicsBool.cpp
|
|
Config/Graphics/GraphicsChoice.cpp
|
|
Config/Graphics/GraphicsRadio.cpp
|
|
Config/Graphics/GraphicsSlider.cpp
|
|
Config/Graphics/GraphicsWidget.cpp
|
|
Config/Graphics/GraphicsWindow.cpp
|
|
Config/Graphics/PostProcessingConfigWindow.cpp
|
|
Config/Graphics/SoftwareRendererWidget.cpp
|
|
Config/InfoWidget.cpp
|
|
Config/LogConfigWidget.cpp
|
|
Config/LogWidget.cpp
|
|
Config/Mapping/GCKeyboardEmu.cpp
|
|
Config/Mapping/GCMicrophone.cpp
|
|
Config/Mapping/GCPadEmu.cpp
|
|
Config/Mapping/GCPadWiiUConfigDialog.cpp
|
|
Config/Mapping/Hotkey3D.cpp
|
|
Config/Mapping/HotkeyControllerProfile.cpp
|
|
Config/Mapping/HotkeyDebugging.cpp
|
|
Config/Mapping/HotkeyGeneral.cpp
|
|
Config/Mapping/HotkeyGraphics.cpp
|
|
Config/Mapping/HotkeyStates.cpp
|
|
Config/Mapping/HotkeyStatesOther.cpp
|
|
Config/Mapping/HotkeyTAS.cpp
|
|
Config/Mapping/HotkeyWii.cpp
|
|
Config/Mapping/IOWindow.cpp
|
|
Config/Mapping/MappingBool.cpp
|
|
Config/Mapping/MappingButton.cpp
|
|
Config/Mapping/MappingCommon.cpp
|
|
Config/Mapping/MappingIndicator.cpp
|
|
Config/Mapping/MappingNumeric.cpp
|
|
Config/Mapping/MappingRadio.cpp
|
|
Config/Mapping/MappingWidget.cpp
|
|
Config/Mapping/MappingWindow.cpp
|
|
Config/Mapping/WiimoteEmuExtension.cpp
|
|
Config/Mapping/WiimoteEmuGeneral.cpp
|
|
Config/Mapping/WiimoteEmuMotionControl.cpp
|
|
Config/NewPatchDialog.cpp
|
|
Config/PatchesWidget.cpp
|
|
Config/PropertiesDialog.cpp
|
|
Config/SettingsWindow.cpp
|
|
Debugger/BreakpointWidget.cpp
|
|
Debugger/CodeViewWidget.cpp
|
|
Debugger/CodeWidget.cpp
|
|
Debugger/JITWidget.cpp
|
|
Debugger/MemoryViewWidget.cpp
|
|
Debugger/MemoryWidget.cpp
|
|
Debugger/NewBreakpointDialog.cpp
|
|
Debugger/RegisterColumn.cpp
|
|
Debugger/RegisterWidget.cpp
|
|
Debugger/WatchWidget.cpp
|
|
GameList/GameList.cpp
|
|
GameList/GameListModel.cpp
|
|
GameList/GameTracker.cpp
|
|
GameList/GridProxyModel.cpp
|
|
GameList/ListProxyModel.cpp
|
|
GCMemcardManager.cpp
|
|
QtUtils/BlockUserInputFilter.cpp
|
|
NetPlay/GameListDialog.cpp
|
|
NetPlay/MD5Dialog.cpp
|
|
NetPlay/NetPlayDialog.cpp
|
|
NetPlay/NetPlaySetupDialog.cpp
|
|
NetPlay/PadMappingDialog.cpp
|
|
QtUtils/DoubleClickEventFilter.cpp
|
|
QtUtils/ElidedButton.cpp
|
|
QtUtils/FlowLayout.cpp
|
|
QtUtils/ImageConverter.cpp
|
|
QtUtils/SignalDaemon.cpp
|
|
QtUtils/WindowActivationEventFilter.cpp
|
|
QtUtils/WinIconHelper.cpp
|
|
QtUtils/WrapInScrollArea.cpp
|
|
QtUtils/AspectRatioWidget.cpp
|
|
Settings/AdvancedPane.cpp
|
|
Settings/AudioPane.cpp
|
|
Settings/GameCubePane.cpp
|
|
Settings/GeneralPane.cpp
|
|
Settings/InterfacePane.cpp
|
|
Settings/PathPane.cpp
|
|
Settings/WiiPane.cpp
|
|
Settings/USBDeviceAddToWhitelistDialog.cpp
|
|
TAS/GCTASInputWindow.cpp
|
|
TAS/WiiTASInputWindow.cpp
|
|
TAS/TASInputWindow.cpp
|
|
TAS/StickWidget.cpp
|
|
TAS/IRWidget.cpp
|
|
Updater.cpp
|
|
)
|
|
|
|
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
|
|
)
|
|
|
|
if(WIN32)
|
|
target_sources(dolphin-emu PRIVATE DolphinQt.manifest)
|
|
endif()
|
|
|
|
# Handle localization
|
|
find_package(Gettext)
|
|
if(GETTEXT_MSGMERGE_EXECUTABLE AND 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)
|
|
set(mo_dir ${CMAKE_CURRENT_BINARY_DIR}/${lang})
|
|
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()
|
|
|
|
add_custom_command(OUTPUT ${mo}
|
|
COMMAND cmake -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}
|
|
)
|
|
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
|
|
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()
|
|
|
|
# Update library references to make the bundle portable
|
|
include(DolphinPostprocessBundle)
|
|
dolphin_postprocess_bundle(dolphin-emu)
|
|
else()
|
|
install(TARGETS dolphin-emu RUNTIME DESTINATION ${bindir})
|
|
endif()
|
|
|
|
if(USE_DISCORD_PRESENCE)
|
|
target_compile_definitions(dolphin-emu PRIVATE -DUSE_DISCORD_PRESENCE)
|
|
endif()
|