CMakeLists.txt 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #
  2. # Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  3. #
  4. # SPDX-License-Identifier: Apache-2.0 OR MIT
  5. #
  6. #
  7. o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  8. ly_add_target(
  9. NAME ${Name}.Client.Static STATIC
  10. NAMESPACE Gem
  11. FILES_CMAKE
  12. ${NameLower}_autogen_files.cmake
  13. ${NameLower}_files.cmake
  14. ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  15. INCLUDE_DIRECTORIES
  16. PRIVATE
  17. Source
  18. .
  19. PUBLIC
  20. Include
  21. BUILD_DEPENDENCIES
  22. PUBLIC
  23. Gem::DebugDraw
  24. Gem::LyShine
  25. Gem::StartingPointInput
  26. Gem::EMotionFXStaticLib
  27. Gem::PhysX
  28. Gem::Multiplayer
  29. PRIVATE
  30. Gem::LmbrCentral.Static
  31. Gem::Multiplayer.Client.Static
  32. Gem::PhysX.Static
  33. Gem::DebugDraw.Static
  34. Gem::ImGui.Static
  35. Gem::LyShine.Static
  36. Gem::GameState.Static
  37. AUTOGEN_RULES
  38. *.AutoComponent.xml,AutoComponent_Header.jinja,$path/$fileprefix.AutoComponent.h
  39. *.AutoComponent.xml,AutoComponent_Source.jinja,$path/$fileprefix.AutoComponent.cpp
  40. *.AutoComponent.xml,AutoComponentTypes_Header.jinja,$path/AutoComponentTypes.h
  41. *.AutoComponent.xml,AutoComponentTypes_Source.jinja,$path/AutoComponentTypes.cpp
  42. )
  43. ly_add_target(
  44. NAME ${Name}.Server.Static STATIC
  45. NAMESPACE Gem
  46. FILES_CMAKE
  47. ${NameLower}_autogen_files.cmake
  48. ${NameLower}_files.cmake
  49. ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  50. INCLUDE_DIRECTORIES
  51. PRIVATE
  52. Source
  53. .
  54. PUBLIC
  55. Include
  56. BUILD_DEPENDENCIES
  57. PUBLIC
  58. Gem::StartingPointInput
  59. Gem::EMotionFXStaticLib
  60. Gem::PhysX
  61. Gem::Multiplayer
  62. PRIVATE
  63. Gem::LmbrCentral.Static
  64. Gem::Multiplayer.Server.Static
  65. Gem::PhysX.Static
  66. Gem::GameState.Static
  67. AUTOGEN_RULES
  68. *.AutoComponent.xml,AutoComponent_Header.jinja,$path/$fileprefix.AutoComponent.h
  69. *.AutoComponent.xml,AutoComponent_Source.jinja,$path/$fileprefix.AutoComponent.cpp
  70. *.AutoComponent.xml,AutoComponentTypes_Header.jinja,$path/AutoComponentTypes.h
  71. *.AutoComponent.xml,AutoComponentTypes_Source.jinja,$path/AutoComponentTypes.cpp
  72. )
  73. ly_add_target(
  74. NAME ${Name}.Unified.Static STATIC
  75. NAMESPACE Gem
  76. FILES_CMAKE
  77. ${NameLower}_autogen_files.cmake
  78. ${NameLower}_files.cmake
  79. ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  80. INCLUDE_DIRECTORIES
  81. PRIVATE
  82. Source
  83. .
  84. PUBLIC
  85. Include
  86. BUILD_DEPENDENCIES
  87. PUBLIC
  88. Gem::DebugDraw
  89. Gem::LyShine
  90. Gem::StartingPointInput
  91. Gem::EMotionFXStaticLib
  92. Gem::PhysX
  93. Gem::Multiplayer
  94. PRIVATE
  95. Gem::LmbrCentral.Static
  96. Gem::Multiplayer.Unified.Static
  97. Gem::PhysX.Static
  98. Gem::DebugDraw.Static
  99. Gem::ImGui.Static
  100. Gem::LyShine.Static
  101. Gem::GameState.Static
  102. AUTOGEN_RULES
  103. *.AutoComponent.xml,AutoComponent_Header.jinja,$path/$fileprefix.AutoComponent.h
  104. *.AutoComponent.xml,AutoComponent_Source.jinja,$path/$fileprefix.AutoComponent.cpp
  105. *.AutoComponent.xml,AutoComponentTypes_Header.jinja,$path/AutoComponentTypes.h
  106. *.AutoComponent.xml,AutoComponentTypes_Source.jinja,$path/AutoComponentTypes.cpp
  107. )
  108. ly_add_target(
  109. NAME ${Name}.Client ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  110. NAMESPACE Gem
  111. FILES_CMAKE
  112. ${NameLower}_shared_files.cmake
  113. ../../${NameLower}_asset_files.cmake
  114. INCLUDE_DIRECTORIES
  115. PRIVATE
  116. Source
  117. .
  118. PUBLIC
  119. Include
  120. BUILD_DEPENDENCIES
  121. PRIVATE
  122. Gem::${Name}.Client.Static
  123. Gem::Atom_AtomBridge.Static
  124. )
  125. ly_add_target(
  126. NAME ${Name}.Server ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  127. NAMESPACE Gem
  128. FILES_CMAKE
  129. ${NameLower}_shared_files.cmake
  130. ../../${NameLower}_asset_files.cmake
  131. INCLUDE_DIRECTORIES
  132. PRIVATE
  133. Source
  134. .
  135. PUBLIC
  136. Include
  137. BUILD_DEPENDENCIES
  138. PRIVATE
  139. Gem::${Name}.Server.Static
  140. Gem::Atom_AtomBridge.Static
  141. )
  142. ly_add_target(
  143. NAME ${Name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  144. NAMESPACE Gem
  145. FILES_CMAKE
  146. ${NameLower}_shared_files.cmake
  147. ../../${NameLower}_asset_files.cmake
  148. INCLUDE_DIRECTORIES
  149. PRIVATE
  150. Source
  151. .
  152. PUBLIC
  153. Include
  154. BUILD_DEPENDENCIES
  155. PRIVATE
  156. Gem::${Name}.Unified.Static
  157. Gem::Atom_AtomBridge.Static
  158. )
  159. # if enabled, ${Name} is used by all kinds of applications
  160. ly_create_alias(NAME ${Name}.Builders NAMESPACE Gem TARGETS Gem::${Name})
  161. ly_create_alias(NAME ${Name}.Tools NAMESPACE Gem TARGETS Gem::${Name})
  162. ly_create_alias(NAME ${Name}.Clients NAMESPACE Gem TARGETS Gem::${Name}.Client)
  163. ly_create_alias(NAME ${Name}.Servers NAMESPACE Gem TARGETS Gem::${Name}.Server)
  164. ly_create_alias(NAME ${Name}.Unified NAMESPACE Gem TARGETS Gem::${Name})
  165. ################################################################################
  166. # Gem dependencies
  167. ################################################################################
  168. # Maps the ${Name} Project with the specified list of enabled gems
  169. ly_enable_gems(PROJECT_NAME ${Name} GEM_FILE enabled_gems.cmake)
  170. # If we build a server, then add the project name to the list of server launcher projects
  171. if(PAL_TRAIT_BUILD_SERVER_SUPPORTED)
  172. set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_SERVER_PROJECTS ${Name})
  173. endif()
  174. # If we build a server, then add the project name to the list of server launcher projects
  175. if(PAL_TRAIT_BUILD_UNIFIED_SUPPORTED)
  176. set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_UNIFIED_PROJECTS ${Name})
  177. endif()
  178. set_property(TARGET ${Name} APPEND PROPERTY GAMELAUNCHER_ADDITIONAL_VS_DEBUGGER_COMMAND_ARGUMENTS "--console-command-file=\"launch_client.cfg\"")
  179. set_property(TARGET ${Name} APPEND PROPERTY SERVERLAUNCHER_ADDITIONAL_VS_DEBUGGER_COMMAND_ARGUMENTS "--console-command-file=\"launch_server.cfg\"")
  180. set_property(TARGET ${Name} APPEND PROPERTY UNIFIEDLAUNCHER_ADDITIONAL_VS_DEBUGGER_COMMAND_ARGUMENTS "--console-command-file=\"launch_server.cfg\"")