CMakeLists.txt 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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. set(common_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/Common)
  10. # TODO(OBJECT-library): Change this target to an object library after Gradle was updated
  11. ly_add_target(
  12. NAME ${gem_name}.Private.Object STATIC
  13. NAMESPACE Gem
  14. FILES_CMAKE
  15. atom_feature_common_files.cmake
  16. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  17. PLATFORM_INCLUDE_FILES
  18. ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  19. INCLUDE_DIRECTORIES
  20. PRIVATE
  21. Include
  22. Source
  23. ${pal_source_dir}
  24. 3rdParty/ACES
  25. COMPILE_DEFINITIONS
  26. PRIVATE
  27. IMGUI_DISABLE_OBSOLETE_FUNCTIONS
  28. BUILD_DEPENDENCIES
  29. PUBLIC
  30. AZ::AzCore
  31. AZ::AzFramework
  32. Gem::Atom_RPI.Public
  33. Gem::Atom_Utils.Static
  34. Gem::ImGui.imguilib
  35. 3rdParty::TIFF
  36. RUNTIME_DEPENDENCIES
  37. Gem::ImGui.imguilib
  38. )
  39. ly_add_target(
  40. NAME ${gem_name}.Public STATIC
  41. NAMESPACE Gem
  42. FILES_CMAKE
  43. atom_feature_common_public_files.cmake
  44. INCLUDE_DIRECTORIES
  45. PRIVATE
  46. Source
  47. ${pal_source_dir}
  48. PUBLIC
  49. Include
  50. 3rdParty/ACES
  51. COMPILE_DEFINITIONS
  52. PRIVATE
  53. IMGUI_DISABLE_OBSOLETE_FUNCTIONS
  54. BUILD_DEPENDENCIES
  55. PRIVATE
  56. AZ::AzCore
  57. AZ::AzFramework
  58. PUBLIC
  59. Gem::Atom_RPI.Public
  60. Gem::Atom_Utils.Static
  61. )
  62. ly_add_target(
  63. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  64. NAMESPACE Gem
  65. FILES_CMAKE
  66. atom_feature_common_shared_files.cmake
  67. ../Assets/atom_feature_common_asset_files.cmake
  68. ../Editor/atom_feature_common_editor_script_files.cmake
  69. PLATFORM_INCLUDE_FILES
  70. ${pal_source_dir}/runtime_dependencies_clients.cmake
  71. INCLUDE_DIRECTORIES
  72. PRIVATE
  73. Source
  74. ${pal_source_dir}
  75. BUILD_DEPENDENCIES
  76. PUBLIC
  77. Gem::${gem_name}.Public
  78. PRIVATE
  79. Gem::${gem_name}.Private.Object
  80. )
  81. ly_add_target(
  82. NAME ${gem_name}.Headless ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  83. NAMESPACE Gem
  84. FILES_CMAKE
  85. atom_feature_common_shared_files.cmake
  86. ../Assets/atom_feature_common_asset_files.cmake
  87. ../Editor/atom_feature_common_editor_script_files.cmake
  88. INCLUDE_DIRECTORIES
  89. PRIVATE
  90. Source
  91. ${pal_source_dir}
  92. PUBLIC
  93. Include
  94. COMPILE_DEFINITIONS
  95. PRIVATE
  96. O3DE_HEADLESS_SERVER=1
  97. BUILD_DEPENDENCIES
  98. PUBLIC
  99. Gem::${gem_name}.Public
  100. PRIVATE
  101. AZ::AzCore
  102. AZ::AzFramework
  103. Gem::${gem_name}.Private.Object
  104. )
  105. # Inject the gem name into the Module source file
  106. ly_add_source_properties(
  107. SOURCES
  108. Source/CommonModule.cpp
  109. PROPERTY COMPILE_DEFINITIONS
  110. VALUES
  111. O3DE_GEM_NAME=${gem_name}
  112. O3DE_GEM_VERSION=${gem_version})
  113. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  114. set(runtime_dependencies_tools ${pal_source_dir}/runtime_dependencies_tools.cmake)
  115. foreach(pal_tools_platform ${LY_PAL_TOOLS_ENABLED})
  116. ly_get_list_relative_pal_filename(pal_runtime_dependencies_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${pal_tools_platform})
  117. list(APPEND runtime_dependencies_tools ${pal_runtime_dependencies_source_dir}/runtime_dependencies_tools.cmake)
  118. endforeach()
  119. ly_add_target(
  120. NAME ${gem_name}.Editor GEM_MODULE
  121. NAMESPACE Gem
  122. FILES_CMAKE
  123. atom_feature_common_editor_files.cmake
  124. PLATFORM_INCLUDE_FILES
  125. ${runtime_dependencies_tools}
  126. INCLUDE_DIRECTORIES
  127. PRIVATE
  128. Source
  129. ${pal_source_dir}
  130. PUBLIC
  131. Include
  132. COMPILE_DEFINITIONS
  133. PRIVATE
  134. ATOM_FEATURE_COMMON_EDITOR
  135. ATOM_FEATURE_CORELIGHTS_EDITOR
  136. BUILD_DEPENDENCIES
  137. PRIVATE
  138. AZ::AzCore
  139. AZ::AzFramework
  140. AZ::AzToolsFramework
  141. AZ::AssetBuilderSDK
  142. AZ::SceneCore
  143. Gem::Atom_RPI.Edit
  144. Gem::Atom_RPI.Public
  145. Gem::Atom_Utils.Static
  146. Gem::${gem_name}.Private.Object
  147. Gem::${gem_name}.Public
  148. )
  149. set(runtime_dependencies_builders ${pal_source_dir}/runtime_dependencies_builders.cmake)
  150. ly_add_target(
  151. NAME ${gem_name}.Builders GEM_MODULE
  152. NAMESPACE Gem
  153. FILES_CMAKE
  154. atom_feature_common_builders_files.cmake
  155. PLATFORM_INCLUDE_FILES
  156. ${runtime_dependencies_builders}
  157. INCLUDE_DIRECTORIES
  158. PRIVATE
  159. Source/Builders
  160. BUILD_DEPENDENCIES
  161. PRIVATE
  162. AZ::AzCore
  163. RUNTIME_DEPENDENCIES
  164. Gem::Atom_RHI.Private
  165. )
  166. # Inject the gem name into the Module source file
  167. ly_add_source_properties(
  168. SOURCES
  169. Source/Builders/BuilderModule.cpp
  170. PROPERTY COMPILE_DEFINITIONS
  171. VALUES
  172. O3DE_GEM_NAME=${gem_name}
  173. O3DE_GEM_VERSION=${gem_version})
  174. endif()
  175. ################################################################################
  176. # Tests
  177. ################################################################################
  178. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  179. ly_add_target(
  180. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  181. NAMESPACE Gem
  182. FILES_CMAKE
  183. atom_feature_common_tests_files.cmake
  184. INCLUDE_DIRECTORIES
  185. PRIVATE
  186. Source
  187. Tests
  188. PUBLIC
  189. Mocks
  190. BUILD_DEPENDENCIES
  191. PRIVATE
  192. AZ::AzFramework
  193. AZ::AzTest
  194. Gem::${gem_name}.Private.Object
  195. Gem::${gem_name}.Public
  196. )
  197. ly_add_googletest(
  198. NAME Gem::${gem_name}.Tests
  199. LABELS REQUIRES_tiaf
  200. )
  201. endif()