CMakeLists.txt 6.4 KB

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