CMakeLists.txt 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  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_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  9. #for PAL_TRAIT_BUILD_ATOM_RPI_ASSETS_SUPPORTED and PAL_TRAIT_BUILD_ATOM_RPI_MASKED_OCCLUSION_CULLING_SUPPORTED
  10. include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
  11. if(PAL_TRAIT_BUILD_ATOM_RPI_MASKED_OCCLUSION_CULLING_SUPPORTED)
  12. set(MASKED_OCCLUSION_CULLING_FILES "atom_rpi_masked_occlusion_files.cmake")
  13. else()
  14. set(MASKED_OCCLUSION_CULLING_FILES "")
  15. endif()
  16. ly_add_target(
  17. NAME ${gem_name}.Public STATIC
  18. NAMESPACE Gem
  19. FILES_CMAKE
  20. atom_rpi_reflect_files.cmake
  21. atom_rpi_public_files.cmake
  22. ../Assets/atom_rpi_asset_files.cmake
  23. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  24. ${MASKED_OCCLUSION_CULLING_FILES}
  25. PLATFORM_INCLUDE_FILES
  26. ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/Common/${PAL_TRAIT_COMPILER_ID}/atom_rpi_public_${PAL_TRAIT_COMPILER_ID_LOWERCASE}.cmake
  27. INCLUDE_DIRECTORIES
  28. PRIVATE
  29. Source
  30. ${pal_source_dir}
  31. PUBLIC
  32. Include
  33. External
  34. BUILD_DEPENDENCIES
  35. PRIVATE
  36. AZ::AzCore
  37. AZ::AzFramework
  38. PUBLIC
  39. AZ::AtomCore
  40. Gem::Atom_RHI.Public
  41. )
  42. ################################################################################
  43. # Private
  44. ################################################################################
  45. ly_add_target(
  46. NAME ${gem_name}.Private ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  47. NAMESPACE Gem
  48. FILES_CMAKE
  49. atom_rpi_private_files.cmake
  50. INCLUDE_DIRECTORIES
  51. PRIVATE
  52. Source
  53. PUBLIC
  54. Include
  55. BUILD_DEPENDENCIES
  56. PRIVATE
  57. AZ::AtomCore
  58. AZ::AzCore
  59. AZ::AzFramework
  60. Gem::${gem_name}.Public
  61. Gem::Atom_RHI.Public
  62. Gem::Atom_RHI.Reflect
  63. RUNTIME_DEPENDENCIES
  64. Gem::Atom_RHI.Private
  65. )
  66. # Inject the gem name into the Module source file
  67. ly_add_source_properties(
  68. SOURCES
  69. Source/RPI.Private/Module.cpp
  70. PROPERTY COMPILE_DEFINITIONS
  71. VALUES
  72. O3DE_GEM_NAME=${gem_name}
  73. O3DE_GEM_VERSION=${gem_version})
  74. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  75. ly_add_target(
  76. NAME ${gem_name}.Edit STATIC
  77. NAMESPACE Gem
  78. FILES_CMAKE
  79. atom_rpi_edit_files.cmake
  80. INCLUDE_DIRECTORIES
  81. PRIVATE
  82. Source
  83. PUBLIC
  84. Include
  85. BUILD_DEPENDENCIES
  86. PRIVATE
  87. AZ::AtomCore
  88. AZ::AzToolsFramework
  89. Gem::Atom_RHI.Edit
  90. Gem::${gem_name}.Public
  91. )
  92. ly_add_target(
  93. NAME ${gem_name}.Editor.Static STATIC
  94. NAMESPACE Gem
  95. FILES_CMAKE
  96. atom_rpi_private_files.cmake
  97. INCLUDE_DIRECTORIES
  98. PRIVATE
  99. Source
  100. PUBLIC
  101. Include
  102. COMPILE_DEFINITIONS
  103. PUBLIC
  104. RPI_EDITOR # Compile RPI Editor module
  105. BUILD_DEPENDENCIES
  106. PRIVATE
  107. AZ::AtomCore
  108. AZ::AzCore
  109. AZ::AzFramework
  110. Gem::${gem_name}.Public
  111. Gem::Atom_RHI.Public
  112. )
  113. ly_add_target(
  114. NAME ${gem_name}.Editor GEM_MODULE
  115. NAMESPACE Gem
  116. FILES_CMAKE
  117. atom_rpi_editor_files.cmake
  118. INCLUDE_DIRECTORIES
  119. PRIVATE
  120. Source
  121. PUBLIC
  122. Include
  123. BUILD_DEPENDENCIES
  124. PRIVATE
  125. AZ::AtomCore
  126. AZ::AzCore
  127. AZ::AzToolsFramework
  128. Gem::${gem_name}.Editor.Static
  129. Gem::${gem_name}.Edit
  130. Gem::${gem_name}.Public
  131. RUNTIME_DEPENDENCIES
  132. Gem::Atom_RHI.Private
  133. )
  134. # Inject the gem name into the Module source file
  135. ly_add_source_properties(
  136. SOURCES
  137. Source/RPI.Editor/EditorModule.cpp
  138. PROPERTY COMPILE_DEFINITIONS
  139. VALUES
  140. O3DE_GEM_NAME=${gem_name}
  141. O3DE_GEM_VERSION=${gem_version})
  142. endif()
  143. ################################################################################
  144. # Tests
  145. ################################################################################
  146. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  147. ly_add_target(
  148. NAME ${gem_name}.TestUtils.Static STATIC
  149. NAMESPACE Gem
  150. FILES_CMAKE
  151. atom_rpi_test_utils_files.cmake
  152. INCLUDE_DIRECTORIES
  153. PUBLIC
  154. Tests
  155. BUILD_DEPENDENCIES
  156. PRIVATE
  157. AZ::AtomCore
  158. AZ::AzTest
  159. AZ::AzTestShared
  160. AZ::AzFramework
  161. Gem::${gem_name}.Public
  162. Gem::Atom_RHI.Public
  163. )
  164. endif()
  165. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
  166. ly_add_target(
  167. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  168. NAMESPACE Gem
  169. FILES_CMAKE
  170. atom_rpi_tests_files.cmake
  171. INCLUDE_DIRECTORIES
  172. PRIVATE
  173. .
  174. Tests
  175. BUILD_DEPENDENCIES
  176. PRIVATE
  177. AZ::AtomCore
  178. AZ::AzTest
  179. AZ::AzTestShared
  180. AZ::AzFramework
  181. AZ::AzToolsFramework
  182. Legacy::CryCommon
  183. Gem::${gem_name}.Public
  184. Gem::Atom_RHI.Public
  185. Gem::${gem_name}.Edit
  186. Gem::${gem_name}.TestUtils.Static
  187. Gem::Atom_Utils.TestUtils.Static
  188. )
  189. ly_add_googletest(
  190. NAME Gem::${gem_name}.Tests
  191. LABELS REQUIRES_tiaf
  192. )
  193. endif()
  194. ################################################################################
  195. # Builders
  196. ################################################################################
  197. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  198. o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  199. set(common_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/Common)
  200. if(NOT PAL_TRAIT_BUILD_ATOM_RPI_ASSETS_SUPPORTED)
  201. # Create a stub
  202. ly_add_target(
  203. NAME ${gem_name}.Builders GEM_MODULE
  204. NAMESPACE Gem
  205. FILES_CMAKE
  206. atom_rpi_builders_stub_files.cmake
  207. INCLUDE_DIRECTORIES
  208. PRIVATE
  209. Source
  210. PUBLIC
  211. Include
  212. BUILD_DEPENDENCIES
  213. PRIVATE
  214. AZ::AzCore
  215. )
  216. # Inject the gem name into the Module source file
  217. ly_add_source_properties(
  218. SOURCES
  219. Source/Platform/Common/Unimplemented/BuilderModule_Stub.cpp
  220. PROPERTY COMPILE_DEFINITIONS
  221. VALUES
  222. O3DE_GEM_NAME=${gem_name}
  223. O3DE_GEM_VERSION=${gem_version})
  224. return()
  225. endif()
  226. ly_add_target(
  227. NAME ${gem_name}.Builders.Static STATIC
  228. NAMESPACE Gem
  229. FILES_CMAKE
  230. atom_rpi_builders_files.cmake
  231. INCLUDE_DIRECTORIES
  232. PRIVATE
  233. Source
  234. Source/RPI.Builders
  235. PUBLIC
  236. Include
  237. BUILD_DEPENDENCIES
  238. PRIVATE
  239. AZ::AtomCore
  240. AZ::AzCore
  241. AZ::AzFramework
  242. AZ::SceneCore
  243. AZ::SceneData
  244. AZ::AssetBuilderSDK
  245. Gem::${gem_name}.Edit
  246. Gem::${gem_name}.Public
  247. Gem::Atom_RHI.Public
  248. )
  249. ly_add_target(
  250. NAME ${gem_name}.Builders GEM_MODULE
  251. NAMESPACE Gem
  252. FILES_CMAKE
  253. atom_rpi_builders_shared_files.cmake
  254. INCLUDE_DIRECTORIES
  255. PRIVATE
  256. Source
  257. Source/RPI.Builders
  258. PUBLIC
  259. Include
  260. BUILD_DEPENDENCIES
  261. PRIVATE
  262. AZ::AtomCore
  263. AZ::AzCore
  264. AZ::AzFramework
  265. AZ::SceneCore
  266. AZ::AssetBuilderSDK
  267. Gem::Atom_RHI.Public
  268. Gem::${gem_name}.Edit
  269. Gem::${gem_name}.Public
  270. Gem::${gem_name}.Builders.Static
  271. )
  272. # Inject the gem name into the Module source file
  273. ly_add_source_properties(
  274. SOURCES
  275. Source/RPI.Builders/BuilderModule.cpp
  276. PROPERTY COMPILE_DEFINITIONS
  277. VALUES
  278. O3DE_GEM_NAME=${gem_name}
  279. O3DE_GEM_VERSION=${gem_version})
  280. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  281. ly_add_target(
  282. NAME ${gem_name}.Builders.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  283. NAMESPACE Gem
  284. FILES_CMAKE
  285. atom_rpi_builders_tests_files.cmake
  286. INCLUDE_DIRECTORIES
  287. PRIVATE
  288. .
  289. Tests
  290. Source/RPI.Builders
  291. BUILD_DEPENDENCIES
  292. PRIVATE
  293. AZ::AtomCore
  294. AZ::AzTest
  295. AZ::AzFramework
  296. AZ::AzToolsFramework
  297. AZ::AssetBuilderSDK
  298. AZ::SceneCore
  299. Legacy::CryCommon
  300. Gem::${gem_name}.Public
  301. Gem::Atom_RHI.Public
  302. Gem::${gem_name}.Edit
  303. Gem::${gem_name}.Builders.Static
  304. )
  305. ly_add_googletest(
  306. NAME Gem::${gem_name}.Builders.Tests
  307. LABELS REQUIRES_tiaf
  308. )
  309. endif()
  310. endif()