CopySuyuQt5Deps.cmake 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. # SPDX-FileCopyrightText: 2016 Citra Emulator Project
  2. # SPDX-FileCopyrightText: 2024 suyu Emulator Project
  3. # SPDX-License-Identifier: GPL-2.0-or-later
  4. function(copy_suyu_Qt5_deps target_dir)
  5. include(WindowsCopyFiles)
  6. set(Qt5_BASE_PATH "${Qt5_DIR}/../../..")
  7. if (NOT EXISTS "${Qt5_BASE_PATH}/bin")
  8. set(Qt5_BASE_PATH "${Qt5_DIR}/../../qt5")
  9. endif()
  10. if (MSVC)
  11. set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
  12. set(Qt5_DLL_DIR "${Qt5_BASE_PATH}/bin")
  13. else()
  14. set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/")
  15. set(Qt5_DLL_DIR "${Qt5_BASE_PATH}/lib/")
  16. endif()
  17. set(Qt5_PLATFORMS_DIR "${Qt5_BASE_PATH}/plugins/platforms/")
  18. set(Qt5_PLATFORMTHEMES_DIR "${Qt5_BASE_PATH}/plugins/platformthemes/")
  19. set(Qt5_PLATFORMINPUTCONTEXTS_DIR "${Qt5_BASE_PATH}/plugins/platforminputcontexts/")
  20. set(Qt5_MEDIASERVICE_DIR "${Qt5_BASE_PATH}/plugins/mediaservice/")
  21. set(Qt5_XCBGLINTEGRATIONS_DIR "${Qt5_BASE_PATH}/plugins/xcbglintegrations/")
  22. set(Qt5_STYLES_DIR "${Qt5_BASE_PATH}/plugins/styles/")
  23. set(Qt5_IMAGEFORMATS_DIR "${Qt5_BASE_PATH}/plugins/imageformats/")
  24. set(Qt5_RESOURCES_DIR "${Qt5_BASE_PATH}/resources/")
  25. set(PLATFORMS ${DLL_DEST}plugins/platforms/)
  26. set(MEDIASERVICE ${DLL_DEST}mediaservice/)
  27. set(STYLES ${DLL_DEST}plugins/styles/)
  28. set(IMAGEFORMATS ${DLL_DEST}plugins/imageformats/)
  29. if (MSVC)
  30. windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST}
  31. Qt5Core$<$<CONFIG:Debug>:d>.*
  32. Qt5Gui$<$<CONFIG:Debug>:d>.*
  33. Qt5Widgets$<$<CONFIG:Debug>:d>.*
  34. Qt5Network$<$<CONFIG:Debug>:d>.*
  35. )
  36. if (SUYU_USE_QT_MULTIMEDIA)
  37. windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST}
  38. Qt5Multimedia$<$<CONFIG:Debug>:d>.*
  39. )
  40. endif()
  41. if (SUYU_USE_QT_WEB_ENGINE)
  42. windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST}
  43. Qt5Network$<$<CONFIG:Debug>:d>.*
  44. Qt5Positioning$<$<CONFIG:Debug>:d>.*
  45. Qt5PrintSupport$<$<CONFIG:Debug>:d>.*
  46. Qt5Qml$<$<CONFIG:Debug>:d>.*
  47. Qt5QmlModels$<$<CONFIG:Debug>:d>.*
  48. Qt5Quick$<$<CONFIG:Debug>:d>.*
  49. Qt5QuickWidgets$<$<CONFIG:Debug>:d>.*
  50. Qt5WebChannel$<$<CONFIG:Debug>:d>.*
  51. Qt5WebEngineCore$<$<CONFIG:Debug>:d>.*
  52. Qt5WebEngineWidgets$<$<CONFIG:Debug>:d>.*
  53. QtWebEngineProcess$<$<CONFIG:Debug>:d>.*
  54. )
  55. windows_copy_files(${target_dir} ${Qt5_RESOURCES_DIR} ${DLL_DEST}
  56. icudtl.dat
  57. qtwebengine_devtools_resources.pak
  58. qtwebengine_resources.pak
  59. qtwebengine_resources_100p.pak
  60. qtwebengine_resources_200p.pak
  61. )
  62. endif ()
  63. windows_copy_files(suyu ${Qt5_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$<CONFIG:Debug>:d>.*)
  64. windows_copy_files(suyu ${Qt5_STYLES_DIR} ${STYLES} qwindowsvistastyle$<$<CONFIG:Debug>:d>.*)
  65. windows_copy_files(suyu ${Qt5_IMAGEFORMATS_DIR} ${IMAGEFORMATS}
  66. qjpeg$<$<CONFIG:Debug>:d>.*
  67. qgif$<$<CONFIG:Debug>:d>.*
  68. )
  69. windows_copy_files(suyu ${Qt5_MEDIASERVICE_DIR} ${MEDIASERVICE}
  70. dsengine$<$<CONFIG:Debug>:d>.*
  71. wmfengine$<$<CONFIG:Debug>:d>.*
  72. )
  73. else()
  74. set(Qt5_DLLS
  75. "${Qt5_DLL_DIR}libQt5Core.so.5"
  76. "${Qt5_DLL_DIR}libQt5DBus.so.5"
  77. "${Qt5_DLL_DIR}libQt5Gui.so.5"
  78. "${Qt5_DLL_DIR}libQt5Widgets.so.5"
  79. "${Qt5_DLL_DIR}libQt5XcbQpa.so.5"
  80. "${Qt5_DLL_DIR}libicudata.so.60"
  81. "${Qt5_DLL_DIR}libicui18n.so.60"
  82. "${Qt5_DLL_DIR}libicuuc.so.60"
  83. )
  84. set(Qt5_IMAGEFORMAT_DLLS
  85. "${Qt5_IMAGEFORMATS_DIR}libqjpeg.so"
  86. "${Qt5_IMAGEFORMATS_DIR}libqgif.so"
  87. "${Qt5_IMAGEFORMATS_DIR}libqico.so"
  88. )
  89. set(Qt5_PLATFORMTHEME_DLLS
  90. "${Qt5_PLATFORMTHEMES_DIR}libqgtk3.so"
  91. "${Qt5_PLATFORMTHEMES_DIR}libqxdgdesktopportal.so"
  92. )
  93. set(Qt5_PLATFORM_DLLS
  94. "${Qt5_PLATFORMS_DIR}libqxcb.so"
  95. )
  96. set(Qt5_PLATFORMINPUTCONTEXT_DLLS
  97. "${Qt5_PLATFORMINPUTCONTEXTS_DIR}libcomposeplatforminputcontextplugin.so"
  98. "${Qt5_PLATFORMINPUTCONTEXTS_DIR}libibusplatforminputcontextplugin.so"
  99. )
  100. set(Qt5_XCBGLINTEGRATION_DLLS
  101. "${Qt5_XCBGLINTEGRATIONS_DIR}libqxcb-glx-integration.so"
  102. )
  103. foreach(LIB ${Qt5_DLLS})
  104. file(COPY ${LIB} DESTINATION "${DLL_DEST}/lib" FOLLOW_SYMLINK_CHAIN)
  105. endforeach()
  106. foreach(LIB ${Qt5_IMAGEFORMAT_DLLS})
  107. file(COPY ${LIB} DESTINATION "${DLL_DEST}plugins/imageformats/" FOLLOW_SYMLINK_CHAIN)
  108. endforeach()
  109. foreach(LIB ${Qt5_PLATFORMTHEME_DLLS})
  110. file(COPY ${LIB} DESTINATION "${DLL_DEST}plugins/platformthemes/" FOLLOW_SYMLINK_CHAIN)
  111. endforeach()
  112. foreach(LIB ${Qt5_PLATFORM_DLLS})
  113. file(COPY ${LIB} DESTINATION "${DLL_DEST}plugins/platforms/" FOLLOW_SYMLINK_CHAIN)
  114. endforeach()
  115. foreach(LIB ${Qt5_PLATFORMINPUTCONTEXT_DLLS})
  116. file(COPY ${LIB} DESTINATION "${DLL_DEST}plugins/platforminputcontexts/" FOLLOW_SYMLINK_CHAIN)
  117. endforeach()
  118. foreach(LIB ${Qt5_XCBGLINTEGRATION_DLLS})
  119. file(COPY ${LIB} DESTINATION "${DLL_DEST}plugins/xcbglintegrations/" FOLLOW_SYMLINK_CHAIN)
  120. endforeach()
  121. endif()
  122. # Create an empty qt.conf file. Qt will detect that this file exists, and use the folder that its in as the root folder.
  123. # This way it'll look for plugins in the root/plugins/ folder
  124. add_custom_command(TARGET suyu POST_BUILD
  125. COMMAND ${CMAKE_COMMAND} -E touch ${DLL_DEST}qt.conf
  126. )
  127. endfunction(copy_suyu_Qt5_deps)