if(NOT wxWidgets_FOUND) return() endif() set(SRCS AboutDolphin.cpp ControllerConfigDiag.cpp Cheats/ActionReplayCodesPanel.cpp Cheats/ARCodeAddEdit.cpp Cheats/CheatSearchTab.cpp Cheats/CheatsWindow.cpp Cheats/CreateCodeDialog.cpp Cheats/GeckoCodeDiag.cpp Config/AddUSBDeviceDiag.cpp Config/AdvancedConfigPane.cpp Config/AudioConfigPane.cpp Config/ConfigMain.cpp Config/GameCubeConfigPane.cpp Config/GCAdapterConfigDiag.cpp Config/GeneralConfigPane.cpp Config/InterfaceConfigPane.cpp Config/PathConfigPane.cpp Config/WiiConfigPane.cpp Debugger/AssemblerEntryDialog.cpp Debugger/BreakpointDlg.cpp Debugger/BreakpointView.cpp Debugger/BreakpointWindow.cpp Debugger/CodeView.cpp Debugger/CodeWindow.cpp Debugger/CodeWindowFunctions.cpp Debugger/DSPDebugWindow.cpp Debugger/DSPRegisterView.cpp Debugger/DebuggerPanel.cpp Debugger/DebuggerUIUtil.cpp Debugger/JitWindow.cpp Debugger/MemoryCheckDlg.cpp Debugger/MemoryView.cpp Debugger/MemoryWindow.cpp Debugger/RegisterView.cpp Debugger/RegisterWindow.cpp Debugger/WatchView.cpp Debugger/WatchWindow.cpp ISOProperties/FilesystemPanel.cpp ISOProperties/InfoPanel.cpp ISOProperties/ISOProperties.cpp NetPlay/ChangeGameDialog.cpp NetPlay/MD5Dialog.cpp NetPlay/NetPlayLauncher.cpp NetPlay/NetPlaySetupFrame.cpp NetPlay/NetWindow.cpp NetPlay/PadMapDialog.cpp Input/InputConfigDiag.cpp Input/InputConfigDiagBitmaps.cpp Input/HotkeyInputConfigDiag.cpp Input/GCPadInputConfigDiag.cpp Input/MicButtonConfigDiag.cpp Input/GCKeyboardInputConfigDiag.cpp Input/WiimoteInputConfigDiag.cpp Input/NunchukInputConfigDiag.cpp Input/ClassicInputConfigDiag.cpp Input/GuitarInputConfigDiag.cpp Input/DrumsInputConfigDiag.cpp Input/TurntableInputConfigDiag.cpp DolphinSlider.cpp FifoPlayerDlg.cpp Frame.cpp FrameAui.cpp FrameTools.cpp GameListCtrl.cpp ISOFile.cpp LogConfigWindow.cpp LogWindow.cpp Main.cpp MainMenuBar.cpp MainToolBar.cpp MemcardManager.cpp PatchAddEdit.cpp PostProcessingConfigDiag.cpp SoftwareVideoConfigDialog.cpp TASInputDlg.cpp UINeedsControllerState.cpp VideoConfigDiag.cpp WxEventUtils.cpp WxUtils.cpp ) set(LIBS core uicommon cpp-optparse wxWidgets::wxWidgets ) if(APPLE) # Add resource files to application bundle. set(RESOURCES resources/Dolphin.icns) list(APPEND SRCS ${RESOURCES}) set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) endif() if(WIN32) list(APPEND SRCS DolphinWX.manifest DolphinWX.rc ) endif() add_executable(dolphin-emu ${SRCS}) target_link_libraries(dolphin-emu PRIVATE ${LIBS}) if(USE_X11) find_package(GTK2 REQUIRED) target_link_libraries(dolphin-emu PRIVATE ${GTK2_LIBRARIES}) target_include_directories(dolphin-emu PRIVATE ${GTK2_INCLUDE_DIRS}) 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 mkdir -p ${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) # 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 resources in 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) # Install bundle into systemwide /Applications directory. install(TARGETS dolphin-emu DESTINATION /Applications) elseif(WIN32) set_target_properties(dolphin-emu PROPERTIES WIN32_EXECUTABLE ON ) add_custom_command(TARGET dolphin-emu COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Data/Sys $/Sys ) else() install(TARGETS dolphin-emu RUNTIME DESTINATION ${bindir}) endif() set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} dolphin-emu)