CMakeLists.txt 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. #
  2. # Copyright (c) Contributors to the Open 3D Engine Project.
  3. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. #
  5. # SPDX-License-Identifier: Apache-2.0 OR MIT
  6. #
  7. #
  8. o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  9. o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  10. include(${pal_dir}/AtomRHITests_traits_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
  11. ly_add_target(
  12. NAME ${gem_name}.Profiler STATIC
  13. NAMESPACE Gem
  14. FILES_CMAKE
  15. atom_rhi_profiler_files.cmake
  16. INCLUDE_DIRECTORIES
  17. PRIVATE
  18. Source
  19. PUBLIC
  20. Include
  21. BUILD_DEPENDENCIES
  22. PRIVATE
  23. AZ::AzCore
  24. AZ::AzFramework
  25. )
  26. if(PAL_TRAIT_BUILD_RENDERDOC_SUPPORTED)
  27. set(LY_RENDERDOC_ENABLED OFF CACHE BOOL "Enable RenderDoc integration. Use LY_RENDERDOC_PATH to specific the path to RenderDoc.")
  28. if(LY_RENDERDOC_ENABLED)
  29. message(STATUS "Renderdoc found, enabling as a graphics debugger")
  30. ly_add_target(
  31. NAME ${gem_name}.Profiler.RenderDoc ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  32. NAMESPACE Gem
  33. FILES_CMAKE
  34. atom_rhi_profiler_renderdoc_shared_files.cmake
  35. INCLUDE_DIRECTORIES
  36. PRIVATE
  37. Source
  38. ${pal_source_dir}
  39. PUBLIC
  40. Include
  41. BUILD_DEPENDENCIES
  42. PRIVATE
  43. AZ::AzCore
  44. AZ::AzFramework
  45. Gem::${gem_name}.Profiler
  46. 3rdParty::renderdoc
  47. )
  48. list(APPEND PROFILER_DEPENDENCIES ${gem_name}.Profiler.RenderDoc)
  49. endif()
  50. endif()
  51. if(PAL_TRAIT_PROF_PIX_SUPPORTED)
  52. if(LY_PIX_ENABLED)
  53. ly_add_target(
  54. NAME ${gem_name}.Profiler.PIX ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  55. NAMESPACE Gem
  56. FILES_CMAKE
  57. atom_rhi_profiler_pix_shared_files.cmake
  58. ${pal_source_dir}/platform_pix_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  59. INCLUDE_DIRECTORIES
  60. PRIVATE
  61. Source
  62. ${pal_source_dir}
  63. PUBLIC
  64. Include
  65. BUILD_DEPENDENCIES
  66. PRIVATE
  67. AZ::AzCore
  68. AZ::AzFramework
  69. Gem::${gem_name}.Profiler
  70. 3rdParty::pix
  71. )
  72. list(APPEND PROFILER_DEPENDENCIES ${gem_name}.Profiler.PIX)
  73. endif()
  74. endif()
  75. ly_add_target(
  76. NAME ${gem_name}.Reflect STATIC
  77. NAMESPACE Gem
  78. FILES_CMAKE
  79. atom_rhi_reflect_files.cmake
  80. INCLUDE_DIRECTORIES
  81. PRIVATE
  82. Source
  83. PUBLIC
  84. Include
  85. BUILD_DEPENDENCIES
  86. PRIVATE
  87. AZ::AzCore
  88. AZ::AzFramework
  89. PUBLIC
  90. AZ::AtomCore
  91. )
  92. ly_add_target(
  93. NAME ${gem_name}.Public STATIC
  94. NAMESPACE Gem
  95. FILES_CMAKE
  96. atom_rhi_public_files.cmake
  97. ../Assets/atom_rhi_asset_files.cmake
  98. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  99. INCLUDE_DIRECTORIES
  100. PRIVATE
  101. Source
  102. ${pal_source_dir}
  103. PUBLIC
  104. Include
  105. BUILD_DEPENDENCIES
  106. PRIVATE
  107. AZ::AzCore
  108. AZ::AzFramework
  109. Gem::${gem_name}.Reflect
  110. )
  111. ly_add_target(
  112. NAME ${gem_name}.Private.Static STATIC
  113. NAMESPACE Gem
  114. FILES_CMAKE
  115. atom_rhi_private_files.cmake
  116. INCLUDE_DIRECTORIES
  117. PRIVATE
  118. Source
  119. PUBLIC
  120. Include
  121. BUILD_DEPENDENCIES
  122. PRIVATE
  123. AZ::AzCore
  124. AZ::AzFramework
  125. AZ::AtomCore
  126. Gem::${gem_name}.Public
  127. )
  128. ly_add_target(
  129. NAME ${gem_name}.Private ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  130. NAMESPACE Gem
  131. FILES_CMAKE
  132. atom_rhi_private_shared_files.cmake
  133. INCLUDE_DIRECTORIES
  134. PRIVATE
  135. Source
  136. PUBLIC
  137. Include
  138. BUILD_DEPENDENCIES
  139. PRIVATE
  140. AZ::AzCore
  141. Gem::${gem_name}.Public
  142. Gem::${gem_name}.Private.Static
  143. Gem::${gem_name}.Profiler
  144. RUNTIME_DEPENDENCIES
  145. ${PROFILER_DEPENDENCIES}
  146. )
  147. # Inject the gem name into the Module source file
  148. ly_add_source_properties(
  149. SOURCES
  150. Source/Module.cpp
  151. PROPERTY COMPILE_DEFINITIONS
  152. VALUES
  153. O3DE_GEM_NAME=${gem_name}
  154. O3DE_GEM_VERSION=${gem_version})
  155. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  156. if (ATOM_RHI_TRAIT_BUILD_SUPPORTS_EDIT)
  157. ly_add_target(
  158. NAME ${gem_name}.Edit STATIC
  159. NAMESPACE Gem
  160. FILES_CMAKE
  161. atom_rhi_edit_files.cmake
  162. INCLUDE_DIRECTORIES
  163. PRIVATE
  164. Source
  165. PUBLIC
  166. Include
  167. BUILD_DEPENDENCIES
  168. PRIVATE
  169. AZ::AzToolsFramework
  170. AZ::AtomCore
  171. Gem::${gem_name}.Public
  172. )
  173. endif()
  174. endif()
  175. ################################################################################
  176. # Tests
  177. ################################################################################
  178. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  179. if (ATOM_RHI_TRAIT_BUILD_SUPPORTS_TEST)
  180. ly_add_target(
  181. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  182. NAMESPACE Gem
  183. FILES_CMAKE
  184. atom_rhi_tests_files.cmake
  185. INCLUDE_DIRECTORIES
  186. PRIVATE
  187. .
  188. Tests
  189. BUILD_DEPENDENCIES
  190. PRIVATE
  191. AZ::AzTest
  192. AZ::AzFramework
  193. Gem::${gem_name}.Edit
  194. Gem::${gem_name}.Public
  195. Gem::Atom_Feature_Common.Public
  196. )
  197. ly_add_googletest(
  198. NAME Gem::${gem_name}.Tests
  199. LABELS REQUIRES_tiaf
  200. )
  201. ly_add_target_files(
  202. TARGETS
  203. ${gem_name}.Tests
  204. FILES
  205. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/UtilsTestsData/DummyTransformColor.MainPS.dx12.dxil.txt
  206. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/UtilsTestsData/DummyTransformColor.MainPS.vulkan.spirv.txt
  207. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/UtilsTestsData/HelloWorld.txt
  208. OUTPUT_SUBDIRECTORY
  209. Gems/Atom/RHI/Code/Tests/UtilsTestsData
  210. )
  211. endif()
  212. endif()