CMakeLists.txt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
  9. ly_add_target(
  10. NAME Atom_AtomBridge.Static STATIC
  11. NAMESPACE Gem
  12. FILES_CMAKE
  13. atombridge_files.cmake
  14. INCLUDE_DIRECTORIES
  15. PRIVATE
  16. Source
  17. PUBLIC
  18. Include
  19. COMPILE_DEFINITIONS
  20. PRIVATE
  21. ENABLE_ATOM_DEBUG_DISPLAY=1
  22. BUILD_DEPENDENCIES
  23. PUBLIC
  24. AZ::AtomCore
  25. AZ::AzFramework
  26. Gem::Atom_RPI.Public
  27. Gem::Atom_Bootstrap.Headers
  28. Legacy::CryCommon
  29. )
  30. ly_add_target(
  31. NAME Atom_AtomBridge ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  32. NAMESPACE Gem
  33. FILES_CMAKE
  34. atombridge_shared_files.cmake
  35. INCLUDE_DIRECTORIES
  36. PRIVATE
  37. Source
  38. PUBLIC
  39. Include
  40. PLATFORM_INCLUDE_FILES
  41. ${pal_dir}/additional_${PAL_PLATFORM_NAME_LOWERCASE}_runtime_deps.cmake
  42. COMPILE_DEFINITIONS
  43. PRIVATE
  44. ENABLE_ATOM_DEBUG_DISPLAY=1
  45. BUILD_DEPENDENCIES
  46. PRIVATE
  47. Gem::Atom_AtomBridge.Static
  48. RUNTIME_DEPENDENCIES
  49. Gem::Atom_RHI.Private
  50. Gem::Atom_RPI.Private
  51. Gem::Atom_RHI_Null.Private
  52. Gem::Atom_Feature_Common
  53. Gem::Atom_Bootstrap
  54. Gem::Atom_Component_DebugCamera
  55. Gem::AtomImGuiTools
  56. Gem::AtomLyIntegration_CommonFeatures
  57. Gem::EMotionFX_Atom
  58. Gem::ImguiAtom
  59. Gem::AtomFont
  60. Gem::AtomViewportDisplayInfo
  61. )
  62. # Any 'runtime-like' applications should use Gem::Atom_AtomBridge:
  63. ly_create_alias(NAME Atom_AtomBridge.Clients NAMESPACE Gem TARGETS Gem::Atom_AtomBridge)
  64. ly_create_alias(NAME Atom_AtomBridge.Servers NAMESPACE Gem TARGETS Gem::Atom_AtomBridge)
  65. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  66. set(additional_tool_deps ${pal_dir}/additional_${PAL_PLATFORM_NAME_LOWERCASE}_tool_deps.cmake)
  67. foreach(pal_tools_platform ${LY_PAL_TOOLS_ENABLED})
  68. string(TOLOWER ${pal_tools_platform} pal_tools_platform_lowercase)
  69. ly_get_list_relative_pal_filename(pal_runtime_dependencies_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${pal_tools_platform})
  70. list(APPEND additional_tool_deps ${pal_runtime_dependencies_source_dir}/additional_${pal_tools_platform_lowercase}_tool_deps.cmake)
  71. endforeach()
  72. ly_add_target(
  73. NAME Atom_AtomBridge.Editor ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  74. NAMESPACE Gem
  75. FILES_CMAKE
  76. atombridge_editor_files.cmake
  77. INCLUDE_DIRECTORIES
  78. PRIVATE
  79. Source
  80. PUBLIC
  81. Include
  82. PLATFORM_INCLUDE_FILES
  83. ${additional_tool_deps}
  84. COMPILE_DEFINITIONS
  85. PRIVATE
  86. EDITOR
  87. BUILD_DEPENDENCIES
  88. PRIVATE
  89. AZ::AssetBuilderSDK
  90. Gem::Atom_Utils.Static
  91. Gem::Atom_AtomBridge.Static
  92. RUNTIME_DEPENDENCIES
  93. Gem::Atom_RHI.Private
  94. Gem::Atom_RPI.Builders
  95. Gem::Atom_RPI.Editor
  96. Gem::Atom_RHI_Null.Private
  97. Gem::Atom_RHI_Null.Builders
  98. Gem::Atom_Feature_Common.Builders
  99. Gem::Atom_Feature_Common.Editor
  100. Gem::Atom_Bootstrap
  101. Gem::Atom_Asset_Shader.Builders
  102. Gem::Atom_Component_DebugCamera
  103. Gem::AtomImGuiTools
  104. Gem::AtomLyIntegration_CommonFeatures.Editor
  105. Gem::EMotionFX_Atom.Editor
  106. Gem::ImageProcessingAtom.Editor
  107. Gem::ImguiAtom
  108. Gem::AtomFont
  109. Gem::AtomToolsFramework.Editor
  110. Gem::AtomViewportDisplayInfo
  111. Gem::AtomViewportDisplayIcons.Editor
  112. Gem::MaterialEditor.Builders
  113. )
  114. # Any 'tool' and 'builder' type applications should use Gem::Atom_AtomBridge.Editor:
  115. ly_create_alias(NAME Atom_AtomBridge.Builders NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Editor)
  116. ly_create_alias(NAME Atom_AtomBridge.Tools NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Editor)
  117. endif()
  118. # The "Atom" Gem will alias the real Atom_AtomBridge target variants
  119. # allows the enabling and disabling the "Atom" Gem to build the pre-requisite dependencies
  120. # The "AtomLyIntegration" Gem will also alias the real Atom_AtomBridge target variants
  121. # The Atom Gem does the same at the moment.
  122. ly_create_alias(NAME Atom.Clients NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Clients)
  123. ly_create_alias(NAME Atom.Servers NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Servers)
  124. ly_create_alias(NAME AtomLyIntegration.Clients NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Clients)
  125. ly_create_alias(NAME AtomLyIntegration.Servers NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Servers)
  126. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  127. ly_create_alias(NAME Atom.Builders NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Builders)
  128. ly_create_alias(NAME Atom.Tools NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Tools)
  129. ly_create_alias(NAME AtomLyIntegration.Builders NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Builders)
  130. ly_create_alias(NAME AtomLyIntegration.Tools NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Tools)
  131. endif()