dolphin/Source/Core/DolphinQt/CMakeLists.txt

316 lines
10 KiB
CMake
Raw Normal View History

2018-07-09 01:17:33 -06:00
find_package(Qt5 5.9 REQUIRED COMPONENTS Gui Widgets)
2017-09-04 11:35:38 -06:00
set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES "")
message(STATUS "Found Qt version ${Qt5Core_VERSION}")
2015-11-27 01:33:07 -07:00
set(CMAKE_AUTOMOC ON)
add_executable(dolphin-emu
AboutDialog.cpp
2018-03-25 20:17:47 -06:00
CheatsManager.cpp
2018-07-03 15:50:08 -06:00
DiscordHandler.cpp
DiscordJoinRequestDialog.cpp
2018-05-14 14:01:23 -06:00
FIFO/FIFOPlayerWindow.cpp
FIFO/FIFOAnalyzer.cpp
HotkeyScheduler.cpp
Host.cpp
Main.cpp
MainWindow.cpp
MenuBar.cpp
RenderWidget.cpp
Resources.cpp
2018-03-21 04:13:53 -06:00
SearchBar.cpp
Settings.cpp
ToolBar.cpp
2017-07-17 15:50:40 -06:00
Translation.cpp
WiiUpdate.cpp
WiiUpdate.h
Config/CheatCodeEditor.cpp
2018-01-01 13:01:58 -07:00
Config/ARCodeWidget.cpp
Config/CheatWarningWidget.cpp
2017-05-09 10:49:10 -06:00
Config/ControllersWindow.cpp
Config/FilesystemWidget.cpp
2018-07-13 04:56:58 -06:00
Config/GameConfigEdit.cpp
Config/GameConfigHighlighter.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
2017-05-20 09:53:17 -06:00
Config/Mapping/GCKeyboardEmu.cpp
Config/Mapping/GCMicrophone.cpp
2017-05-20 09:53:17 -06:00
Config/Mapping/GCPadEmu.cpp
Config/Mapping/GCPadWiiUConfigDialog.cpp
Config/Mapping/Hotkey3D.cpp
Config/Mapping/HotkeyControllerProfile.cpp
2018-02-14 15:25:01 -07:00
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
2017-05-20 09:53:17 -06:00
Config/Mapping/MappingButton.cpp
Config/Mapping/MappingCommon.cpp
2018-02-07 10:16:15 -07:00
Config/Mapping/MappingIndicator.cpp
2017-05-20 09:53:17 -06:00
Config/Mapping/MappingNumeric.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
2019-03-21 16:04:56 -06:00
Config/VerifyWidget.cpp
Debugger/BreakpointWidget.cpp
2018-02-14 15:25:01 -07:00
Debugger/CodeViewWidget.cpp
Debugger/CodeWidget.cpp
2018-04-09 07:31:20 -06:00
Debugger/JITWidget.cpp
2018-03-16 05:39:53 -06:00
Debugger/MemoryViewWidget.cpp
Debugger/MemoryWidget.cpp
Debugger/NewBreakpointDialog.cpp
Debugger/PatchInstructionDialog.cpp
Debugger/RegisterColumn.cpp
Debugger/RegisterWidget.cpp
2017-09-27 00:53:05 -06:00
Debugger/WatchWidget.cpp
GameList/GameList.cpp
GameList/GameListModel.cpp
GameList/GameTracker.cpp
GameList/GridProxyModel.cpp
GameList/ListProxyModel.cpp
2018-01-25 11:54:50 -07:00
GCMemcardManager.cpp
2017-06-26 23:44:10 -06:00
QtUtils/BlockUserInputFilter.cpp
NetPlay/ChunkedProgressDialog.cpp
2017-07-21 14:48:21 -06:00
NetPlay/GameListDialog.cpp
NetPlay/MD5Dialog.cpp
2019-03-30 07:50:57 -06:00
NetPlay/NetPlayBrowser.cpp
2017-07-21 14:48:21 -06:00
NetPlay/NetPlayDialog.cpp
NetPlay/NetPlaySetupDialog.cpp
NetPlay/PadMappingDialog.cpp
QtUtils/DoubleClickEventFilter.cpp
2017-05-31 00:08:14 -06:00
QtUtils/ElidedButton.cpp
QtUtils/FlowLayout.cpp
2019-03-04 12:48:40 -07:00
QtUtils/ModalMessageBox.cpp
QtUtils/ImageConverter.cpp
QtUtils/WindowActivationEventFilter.cpp
2018-03-26 00:13:15 -06:00
QtUtils/WinIconHelper.cpp
2018-03-17 09:07:51 -06:00
QtUtils/WrapInScrollArea.cpp
2018-01-27 06:35:02 -07:00
QtUtils/AspectRatioWidget.cpp
2019-03-30 20:49:57 -06:00
ResourcePackManager.cpp
2017-06-27 22:36:27 -06:00
Settings/AdvancedPane.cpp
2017-06-21 02:27:21 -06:00
Settings/AudioPane.cpp
2018-01-03 17:41:31 -07:00
Settings/GameCubePane.cpp
Settings/GeneralPane.cpp
Settings/InterfacePane.cpp
Settings/PathPane.cpp
Settings/WiiPane.cpp
Settings/USBDeviceAddToWhitelistDialog.cpp
2018-01-27 06:35:02 -07:00
TAS/GCTASInputWindow.cpp
2018-01-31 04:35:09 -07:00
TAS/WiiTASInputWindow.cpp
2019-03-30 20:49:57 -06:00
TAS/TASCheckBox.cpp
TAS/TASInputWindow.cpp
2018-01-27 06:35:02 -07:00
TAS/StickWidget.cpp
2018-02-06 04:10:28 -07:00
TAS/IRWidget.cpp
2018-03-22 05:20:15 -06:00
Updater.cpp
)
2015-11-27 01:33:07 -07:00
if (NOT WIN32)
target_sources(dolphin-emu PRIVATE QtUtils/SignalDaemon.cpp)
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
2018-10-10 05:41:52 -06:00
imgui
)
2015-11-27 01:33:07 -07:00
if(WIN32)
2019-05-08 15:55:44 -06:00
target_sources(dolphin-emu PRIVATE DolphinQt.manifest DolphinQt.rc)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(Dolphin_NAME "DolphinD")
else()
set(Dolphin_NAME "Dolphin")
endif()
set_target_properties(dolphin-emu PROPERTIES
WIN32_EXECUTABLE TRUE
OUTPUT_NAME ${Dolphin_NAME}
)
2019-05-08 16:18:09 -06:00
target_compile_options(dolphin-emu PRIVATE "-D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING")
2019-05-08 15:55:44 -06:00
# Copy Sys dir
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})
configure_file("${CMAKE_SOURCE_DIR}/Data/${res}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${res}" COPYONLY)
endforeach()
# Copy qt.conf
configure_file(qt.conf.win "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qt.conf" COPYONLY)
# Copy plugins
set (Qt5_PLUGINS_DIR "${Qt5_DIR}/../../../plugins")
file(GLOB_RECURSE plugins RELATIVE "${Qt5_PLUGINS_DIR}" "${Qt5_PLUGINS_DIR}/*.dll")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
list(FILTER plugins INCLUDE REGEX ".*d.dll")
else()
list(FILTER plugins EXCLUDE REGEX ".*d.dll")
endif()
foreach(plugin ${plugins})
configure_file("${Qt5_PLUGINS_DIR}/${plugin}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/QtPlugins/${plugin}" COPYONLY)
endforeach()
# Copy DLLs
set (Qt5_DLL_DIR "${Qt5_DIR}/../../../bin")
file(GLOB_RECURSE dlls RELATIVE "${Qt5_DLL_DIR}" "${Qt5_DLL_DIR}/*.dll")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
list(FILTER dlls INCLUDE REGEX ".*d.dll")
else()
list(FILTER dlls EXCLUDE REGEX ".*d.dll")
endif()
foreach(dll ${dlls})
configure_file("${Qt5_DLL_DIR}/${dll}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${dll}" COPYONLY)
endforeach()
endif()
2017-07-17 15:50:40 -06:00
# Handle localization
find_package(Gettext)
2019-05-08 15:55:44 -06:00
if(WIN32 AND NOT Gettext_FOUND)
message(STATUS "Using Gettext from Externals")
set(GETTEXT_MSGFMT_EXECUTABLE "${CMAKE_SOURCE_DIR}/Externals/gettext/msgfmt.exe")
endif()
2017-07-17 15:50:40 -06:00
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})
2017-07-17 15:50:40 -06:00
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})
2017-07-17 15:50:40 -06:00
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()
2019-05-08 15:55:44 -06:00
if(WIN32)
add_custom_command(OUTPUT ${mo}
COMMAND ${CMAKE_COMMAND} -E make_directory ${mo_dir}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po}
COMMAND ${CMAKE_COMMAND} -E copy ${mo} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Languages/${lang}/dolphin-emu.mo
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()
2017-07-17 15:50:40 -06:00
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)
2018-02-24 13:12:22 -07:00
# Copy icon into the bundle
target_sources(dolphin-emu PRIVATE "${CMAKE_SOURCE_DIR}/Data/Dolphin.icns")
2018-02-24 13:12:22 -07:00
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)
2018-02-24 10:48:29 -07:00
get_target_property(qtmacstyle_location Qt5::QMacStylePlugin LOCATION)
target_sources(dolphin-emu PRIVATE "${qtmacstyle_location}")
2018-02-24 10:48:29 -07:00
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)
else()
install(TARGETS dolphin-emu RUNTIME DESTINATION ${bindir})
endif()
if(USE_DISCORD_PRESENCE)
target_compile_definitions(dolphin-emu PRIVATE -DUSE_DISCORD_PRESENCE)
endif()