CMakeLists.txt 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. set(GUI_SRCS
  2. ARCodeAddEdit.cpp
  3. AboutDolphin.cpp
  4. ControllerConfigDiag.cpp
  5. Cheats/CheatSearchTab.cpp
  6. Cheats/CheatsWindow.cpp
  7. Cheats/CreateCodeDialog.cpp
  8. Cheats/GeckoCodeDiag.cpp
  9. Config/AdvancedConfigPane.cpp
  10. Config/AudioConfigPane.cpp
  11. Config/ConfigMain.cpp
  12. Config/GameCubeConfigPane.cpp
  13. Config/GeneralConfigPane.cpp
  14. Config/InterfaceConfigPane.cpp
  15. Config/PathConfigPane.cpp
  16. Config/WiiConfigPane.cpp
  17. Debugger/BreakpointDlg.cpp
  18. Debugger/BreakpointView.cpp
  19. Debugger/BreakpointWindow.cpp
  20. Debugger/CodeView.cpp
  21. Debugger/CodeWindow.cpp
  22. Debugger/CodeWindowFunctions.cpp
  23. Debugger/DSPDebugWindow.cpp
  24. Debugger/DSPRegisterView.cpp
  25. Debugger/DebuggerPanel.cpp
  26. Debugger/DebuggerUIUtil.cpp
  27. Debugger/JitWindow.cpp
  28. Debugger/MemoryCheckDlg.cpp
  29. Debugger/MemoryView.cpp
  30. Debugger/MemoryWindow.cpp
  31. Debugger/RegisterView.cpp
  32. Debugger/RegisterWindow.cpp
  33. Debugger/WatchView.cpp
  34. Debugger/WatchWindow.cpp
  35. NetPlay/ChangeGameDialog.cpp
  36. NetPlay/NetPlaySetupFrame.cpp
  37. NetPlay/NetWindow.cpp
  38. NetPlay/PadMapDialog.cpp
  39. FifoPlayerDlg.cpp
  40. Frame.cpp
  41. FrameAui.cpp
  42. FrameTools.cpp
  43. GameListCtrl.cpp
  44. ISOFile.cpp
  45. ISOProperties.cpp
  46. InputConfigDiag.cpp
  47. InputConfigDiagBitmaps.cpp
  48. LogConfigWindow.cpp
  49. LogWindow.cpp
  50. Main.cpp
  51. MemcardManager.cpp
  52. PatchAddEdit.cpp
  53. PostProcessingConfigDiag.cpp
  54. SoftwareVideoConfigDialog.cpp
  55. TASInputDlg.cpp
  56. VideoConfigDiag.cpp
  57. WXInputBase.cpp
  58. WxUtils.cpp)
  59. set(NOGUI_SRCS MainNoGUI.cpp)
  60. if(USE_X11)
  61. set(GUI_SRCS ${GUI_SRCS} X11Utils.cpp)
  62. set(NOGUI_SRCS ${NOGUI_SRCS} X11Utils.cpp)
  63. endif()
  64. set(WXLIBS ${wxWidgets_LIBRARIES})
  65. if(NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
  66. set(WXLIBS ${WXLIBS} dl)
  67. endif()
  68. list(APPEND LIBS core uicommon)
  69. if(ANDROID)
  70. list(APPEND LIBS png)
  71. endif()
  72. set(ANDROID_SRCS Android/ButtonManager.cpp
  73. MainAndroid.cpp)
  74. if(APPLE)
  75. if(wxWidgets_FOUND)
  76. list(APPEND WXLIBS
  77. ${APPSERV_LIBRARY}
  78. ${COCOA_LIBRARY}
  79. )
  80. endif()
  81. # Add resource files to application bundle.
  82. set(RESOURCES resources/Dolphin.icns)
  83. list(APPEND SRCS ${RESOURCES})
  84. set_source_files_properties(${RESOURCES} PROPERTIES
  85. MACOSX_PACKAGE_LOCATION Resources)
  86. endif()
  87. if(APPLE)
  88. set(DOLPHIN_EXE_BASE Dolphin)
  89. else()
  90. set(DOLPHIN_EXE_BASE dolphin-emu)
  91. endif()
  92. set(DOLPHIN_EXE ${DOLPHIN_EXE_BASE})
  93. include(FindGettext)
  94. if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND wxWidgets_FOUND)
  95. file(GLOB LINGUAS ${CMAKE_SOURCE_DIR}/Languages/po/*.po)
  96. add_custom_target(translations ALL)
  97. GETTEXT_CREATE_TRANSLATIONS(${CMAKE_SOURCE_DIR}/Languages/po/dolphin-emu.pot ${LINGUAS})
  98. endif()
  99. if(ANDROID)
  100. set(DOLPHIN_EXE main)
  101. add_library(${DOLPHIN_EXE} SHARED ${SRCS} ${ANDROID_SRCS})
  102. target_link_libraries(${DOLPHIN_EXE}
  103. log
  104. android
  105. "-Wl,--no-warn-mismatch"
  106. "-Wl,--whole-archive"
  107. ${LIBS}
  108. "-Wl,--no-whole-archive"
  109. )
  110. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  111. COMMAND mkdir ARGS -p ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/jniLibs/${ANDROID_NDK_ABI_NAME}
  112. )
  113. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  114. COMMAND mkdir ARGS -p ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/
  115. )
  116. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  117. COMMAND cp ARGS ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME}/lib${DOLPHIN_EXE}.so ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/jniLibs/${ANDROID_NDK_ABI_NAME}/
  118. )
  119. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  120. COMMAND cp ARGS ${CMAKE_SOURCE_DIR}/Data/Sys/GC/* ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/
  121. )
  122. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  123. COMMAND cp ARGS -r ${CMAKE_SOURCE_DIR}/Data/Sys/Shaders ${CMAKE_SOURCE_DIR}/Source/Android/app/src/main/assets/
  124. )
  125. set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} ${DOLPHIN_EXE})
  126. elseif(wxWidgets_FOUND)
  127. add_executable(${DOLPHIN_EXE} ${SRCS} ${GUI_SRCS})
  128. target_link_libraries(${DOLPHIN_EXE} ${LIBS} ${WXLIBS})
  129. if(APPLE)
  130. include(BundleUtilities)
  131. set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${DOLPHIN_EXE}.app)
  132. # Ask for an application bundle.
  133. set_target_properties(${DOLPHIN_EXE} PROPERTIES
  134. MACOSX_BUNDLE true
  135. MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
  136. )
  137. # get rid of any old copies
  138. file (REMOVE_RECURSE ${BUNDLE_PATH}/Contents/Resources/Sys)
  139. if(NOT SKIP_POSTPROCESS_BUNDLE)
  140. # Fix up the bundle after it is finished.
  141. # There does not seem to be an easy way to run CMake commands post-build,
  142. # so we invoke CMake again on a generated script.
  143. file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/postprocess_bundle.cmake "
  144. include(BundleUtilities)
  145. message(\"Fixing up application bundle: ${BUNDLE_PATH}\")
  146. message(\"(Note: This is only necessary to produce a redistributable binary.\")
  147. message(\"To skip, pass -DSKIP_POSTPROCESS_BUNDLE=1 to cmake.)\")
  148. set(BU_CHMOD_BUNDLE_ITEMS ON)
  149. execute_process(COMMAND ${CMAKE_SOURCE_DIR}/Tools/deploy-mac.py \"${BUNDLE_PATH}\")
  150. file(INSTALL \"${CMAKE_SOURCE_DIR}/Data/Sys\"
  151. DESTINATION \"${BUNDLE_PATH}/Contents/Resources\"
  152. )
  153. ")
  154. add_custom_command(TARGET ${DOLPHIN_EXE} POST_BUILD
  155. COMMAND ${CMAKE_COMMAND} -P postprocess_bundle.cmake
  156. )
  157. else()
  158. add_custom_command(OUTPUT ${BUNDLE_PATH}/Contents/Resources/Sys
  159. COMMAND ln -nfs ${CMAKE_SOURCE_DIR}/Data/Sys ${BUNDLE_PATH}/Contents/Resources/Sys
  160. VERBATIM
  161. )
  162. add_custom_target(CopyDataIntoBundleWx ALL
  163. DEPENDS ${BUNDLE_PATH}/Contents/Resources/Sys
  164. )
  165. endif()
  166. if(GETTEXT_MSGMERGE_EXECUTABLE AND GETTEXT_MSGFMT_EXECUTABLE AND wxWidgets_FOUND)
  167. file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/copy_translations_into_bundle.cmake "
  168. file(GLOB TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}
  169. ${CMAKE_CURRENT_BINARY_DIR}/*.gmo
  170. )
  171. foreach(TRANSLATION_FILE \${TRANSLATION_FILES})
  172. string(REPLACE \".gmo\" \".lproj\" TRANSLATION_DIR
  173. \${TRANSLATION_FILE}
  174. )
  175. # It would be better to copy to the new name as a single action,
  176. # but I can't figure out a way to let CMake do that.
  177. file(COPY ${CMAKE_CURRENT_BINARY_DIR}/\${TRANSLATION_FILE}
  178. DESTINATION ${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}
  179. NO_SOURCE_PERMISSIONS
  180. )
  181. file(RENAME
  182. ${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}/\${TRANSLATION_FILE}
  183. ${BUNDLE_PATH}/Contents/Resources/\${TRANSLATION_DIR}/dolphin-emu.mo
  184. )
  185. endforeach(TRANSLATION_FILE)
  186. ")
  187. file(GLOB PO_FILES RELATIVE ${CMAKE_SOURCE_DIR}/Languages/po
  188. ${CMAKE_SOURCE_DIR}/Languages/po/*.po
  189. )
  190. string(REPLACE .po .gmo GMO_FILES "${PO_FILES}")
  191. add_custom_command(OUTPUT ${BUNDLE_PATH}/Contents/Resources/en.lproj
  192. COMMAND ${CMAKE_COMMAND} -P copy_translations_into_bundle.cmake
  193. DEPENDS ${GMO_FILES}
  194. ${CMAKE_SOURCE_DIR}/Data/Sys
  195. VERBATIM
  196. )
  197. add_custom_target(CopyTranslationsIntoBundleWx ALL
  198. DEPENDS ${BUNDLE_PATH}/Contents/Resources/en.lproj
  199. )
  200. endif()
  201. # Install bundle into systemwide /Applications directory.
  202. install(DIRECTORY ${BUNDLE_PATH} DESTINATION /Applications
  203. USE_SOURCE_PERMISSIONS
  204. )
  205. else()
  206. install(TARGETS ${DOLPHIN_EXE} RUNTIME DESTINATION ${bindir})
  207. endif()
  208. set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} ${DOLPHIN_EXE})
  209. endif()
  210. if(USE_X11)
  211. set(DOLPHIN_NOGUI_EXE ${DOLPHIN_EXE_BASE}-nogui)
  212. add_executable(${DOLPHIN_NOGUI_EXE} ${SRCS} ${NOGUI_SRCS})
  213. target_link_libraries(${DOLPHIN_NOGUI_EXE} ${LIBS})
  214. set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} ${DOLPHIN_NOGUI_EXE})
  215. install(TARGETS ${DOLPHIN_NOGUI_EXE} RUNTIME DESTINATION ${bindir})
  216. endif()