CMakeLists.txt 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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_include_dir ${CMAKE_CURRENT_LIST_DIR}/Include/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_source_dir}/PAL2_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
  11. if(NOT PAL_TRAIT_ATOM_RHI_METAL_SUPPORTED)
  12. ly_add_target(
  13. NAME ${gem_name}.Private ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  14. NAMESPACE Gem
  15. FILES_CMAKE
  16. atom_rhi_metal_stub_module.cmake
  17. INCLUDE_DIRECTORIES
  18. PRIVATE
  19. Include
  20. ${pal_include_dir}
  21. Source
  22. ${pal_source_dir}
  23. BUILD_DEPENDENCIES
  24. PRIVATE
  25. AZ::AzCore
  26. Gem::Atom_RHI.Reflect
  27. )
  28. # Inject the gem name into the Module source file
  29. ly_add_source_properties(
  30. SOURCES
  31. Source/Platform/Common/Unimplemented/ModuleStub_Unimplemented.cpp
  32. PROPERTY COMPILE_DEFINITIONS
  33. VALUES
  34. O3DE_GEM_NAME=${gem_name}
  35. O3DE_GEM_VERSION=${gem_version})
  36. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  37. ly_add_target(
  38. NAME ${gem_name}.Builders GEM_MODULE
  39. NAMESPACE Gem
  40. FILES_CMAKE
  41. Source/Platform/${PAL_PLATFORM_NAME}/platform_builders_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  42. atom_rhi_metal_reflect_common_files.cmake
  43. INCLUDE_DIRECTORIES
  44. PRIVATE
  45. Include
  46. ${pal_include_dir}
  47. Source
  48. ${pal_source_dir}
  49. BUILD_DEPENDENCIES
  50. PRIVATE
  51. AZ::AzCore
  52. Gem::Atom_RHI.Reflect
  53. Gem::Atom_RHI.Public
  54. )
  55. endif()
  56. return()
  57. endif()
  58. ly_add_target(
  59. NAME ${gem_name}.Reflect STATIC
  60. NAMESPACE Gem
  61. FILES_CMAKE
  62. atom_rhi_metal_reflect_common_files.cmake
  63. INCLUDE_DIRECTORIES
  64. PUBLIC
  65. Include
  66. ${pal_include_dir}
  67. BUILD_DEPENDENCIES
  68. PRIVATE
  69. AZ::AzCore
  70. Gem::Atom_RHI.Reflect
  71. )
  72. ly_add_target(
  73. NAME ${gem_name}.Private.Static STATIC
  74. NAMESPACE Gem
  75. FILES_CMAKE
  76. atom_rhi_metal_private_common_files.cmake
  77. Source/Platform/${PAL_PLATFORM_NAME}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  78. PLATFORM_INCLUDE_FILES
  79. Source/Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  80. INCLUDE_DIRECTORIES
  81. PRIVATE
  82. .
  83. Source
  84. ${pal_source_dir}
  85. PUBLIC
  86. Include
  87. ${pal_include_dir}
  88. BUILD_DEPENDENCIES
  89. PRIVATE
  90. AZ::AzCore
  91. AZ::AzFramework
  92. Gem::Atom_RHI.Reflect
  93. Gem::${gem_name}.Reflect
  94. )
  95. ly_add_target(
  96. NAME ${gem_name}.Private ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  97. NAMESPACE Gem
  98. FILES_CMAKE
  99. atom_rhi_metal_private_common_shared_files.cmake
  100. PLATFORM_INCLUDE_FILES
  101. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  102. ${pal_source_dir}/platform_shared_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  103. INCLUDE_DIRECTORIES
  104. PRIVATE
  105. .
  106. Source
  107. ${pal_source_dir}
  108. BUILD_DEPENDENCIES
  109. PRIVATE
  110. AZ::AzCore
  111. Gem::Atom_RHI.Reflect
  112. Gem::Atom_RHI.Public
  113. Gem::${gem_name}.Reflect
  114. Gem::${gem_name}.Private.Static
  115. )
  116. # Inject the gem name into the Module source file
  117. ly_add_source_properties(
  118. SOURCES
  119. Source/RHI/Module.cpp
  120. PROPERTY COMPILE_DEFINITIONS
  121. VALUES
  122. O3DE_GEM_NAME=${gem_name}
  123. O3DE_GEM_VERSION=${gem_version})
  124. if (PAL_TRAIT_BUILD_HOST_TOOLS)
  125. ly_add_target(
  126. NAME ${gem_name}.Builders.Static STATIC
  127. NAMESPACE Gem
  128. FILES_CMAKE
  129. atom_rhi_metal_builders_common_files.cmake
  130. ${pal_include_dir}/platform_builders_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  131. ${pal_source_dir}/platform_builders_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  132. PLATFORM_INCLUDE_FILES
  133. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  134. INCLUDE_DIRECTORIES
  135. PRIVATE
  136. .
  137. Source
  138. ${pal_source_dir}
  139. BUILD_DEPENDENCIES
  140. PRIVATE
  141. AZ::AssetBuilderSDK
  142. Gem::Atom_RHI.Edit
  143. Gem::Atom_RHI.Reflect
  144. Gem::${gem_name}.Reflect
  145. )
  146. ly_add_target(
  147. NAME ${gem_name}.Builders GEM_MODULE
  148. NAMESPACE Gem
  149. FILES_CMAKE
  150. atom_rhi_metal_builders_shared_files.cmake
  151. PLATFORM_INCLUDE_FILES
  152. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  153. ${pal_source_dir}/platform_shared_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  154. INCLUDE_DIRECTORIES
  155. PRIVATE
  156. Source
  157. BUILD_DEPENDENCIES
  158. PRIVATE
  159. AZ::AssetBuilderSDK
  160. Gem::Atom_RHI.Edit
  161. Gem::Atom_RHI.Reflect
  162. Gem::${gem_name}.Reflect
  163. Gem::${gem_name}.Builders.Static
  164. )
  165. # Inject the gem name into the Module source file
  166. ly_add_source_properties(
  167. SOURCES
  168. Source/RHI.Builders/BuilderModule.cpp
  169. PROPERTY COMPILE_DEFINITIONS
  170. VALUES
  171. O3DE_GEM_NAME=${gem_name}
  172. O3DE_GEM_VERSION=${gem_version})
  173. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  174. ly_add_target(
  175. NAME ${gem_name}.Builders.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  176. NAMESPACE Gem
  177. FILES_CMAKE
  178. atom_rhi_metal_builders_tests_files.cmake
  179. PLATFORM_INCLUDE_FILES
  180. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  181. ${pal_source_dir}/platform_shared_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  182. INCLUDE_DIRECTORIES
  183. PRIVATE
  184. Include
  185. Source
  186. ${pal_source_dir}
  187. BUILD_DEPENDENCIES
  188. PRIVATE
  189. AZ::AzTest
  190. Gem::Atom_RHI.Reflect
  191. Gem::${gem_name}.Reflect
  192. Gem::${gem_name}.Builders.Static
  193. )
  194. ly_add_googletest(
  195. NAME Gem::${gem_name}.Builders.Tests
  196. )
  197. endif()
  198. endif()
  199. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  200. ly_add_target(
  201. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  202. NAMESPACE Gem
  203. FILES_CMAKE
  204. atom_rhi_metal_private_tests_files.cmake
  205. PLATFORM_INCLUDE_FILES
  206. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  207. ${pal_source_dir}/platform_shared_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  208. INCLUDE_DIRECTORIES
  209. PRIVATE
  210. Include
  211. Source
  212. ${pal_source_dir}
  213. BUILD_DEPENDENCIES
  214. PRIVATE
  215. AZ::AzTest
  216. Gem::Atom_RHI.Reflect
  217. Gem::${gem_name}.Reflect
  218. Gem::${gem_name}.Private.Static
  219. )
  220. ly_add_googletest(
  221. NAME Gem::${gem_name}.Tests
  222. )
  223. endif()