CMakeLists.txt 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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. ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME})
  8. ly_add_target(
  9. NAME AtomSampleViewer.Lib.Static STATIC
  10. NAMESPACE Gem
  11. FILES_CMAKE
  12. atomsampleviewergem_lib_files.cmake
  13. INCLUDE_DIRECTORIES
  14. PUBLIC
  15. Lib
  16. BUILD_DEPENDENCIES
  17. PUBLIC
  18. AZ::AzGameFramework
  19. Gem::Atom_AtomBridge.Static
  20. Gem::Atom_RPI.Public
  21. Gem::Atom_Utils.Static
  22. )
  23. ly_add_target(
  24. NAME AtomSampleViewer.Private.Static STATIC
  25. NAMESPACE Gem
  26. FILES_CMAKE
  27. atomsampleviewergem_private_files.cmake
  28. ${pal_dir}/atomsampleviewer_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  29. PLATFORM_INCLUDE_FILES
  30. ${pal_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  31. INCLUDE_DIRECTORIES
  32. PUBLIC
  33. Lib
  34. Source
  35. ${pal_dir}
  36. BUILD_DEPENDENCIES
  37. PUBLIC
  38. AZ::AzGameFramework
  39. Gem::Atom_AtomBridge.Static
  40. Gem::Atom_Feature_Common.Static
  41. Gem::Atom_Component_DebugCamera.Static
  42. Gem::AtomSampleViewer.Lib.Static
  43. )
  44. ly_add_target(
  45. NAME AtomSampleViewer ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  46. NAMESPACE Gem
  47. FILES_CMAKE
  48. atomsampleviewergem_private_shared_files.cmake
  49. ../../atomsampleviewer_asset_files.cmake
  50. PLATFORM_INCLUDE_FILES
  51. ${pal_dir}/additional_${PAL_PLATFORM_NAME_LOWERCASE}_runtime_library.cmake
  52. BUILD_DEPENDENCIES
  53. PRIVATE
  54. AZ::AzGameFramework
  55. Gem::Atom_AtomBridge.Static
  56. Gem::AtomSampleViewer.Private.Static
  57. Gem::ImGui.imguilib
  58. )
  59. # if enabled, AtomSampleViewer is used by the Client and ServerLauncher
  60. ly_create_alias(NAME AtomSampleViewer.Clients NAMESPACE Gem TARGETS Gem::AtomSampleViewer)
  61. ly_create_alias(NAME AtomSampleViewer.Servers NAMESPACE Gem TARGETS Gem::AtomSampleViewer)
  62. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  63. ly_add_target(
  64. NAME AtomSampleViewer.Tools.Static STATIC
  65. NAMESPACE Gem
  66. FILES_CMAKE
  67. atomsampleviewergem_tools_files.cmake
  68. INCLUDE_DIRECTORIES
  69. PUBLIC
  70. .
  71. Tools
  72. BUILD_DEPENDENCIES
  73. PRIVATE
  74. AZ::AzGameFramework
  75. Gem::Atom_AtomBridge.Static
  76. Gem::AtomSampleViewer.Lib.Static
  77. PUBLIC
  78. Gem::Atom_RPI.Edit
  79. )
  80. ly_add_target(
  81. NAME AtomSampleViewer.Tools GEM_MODULE
  82. NAMESPACE Gem
  83. FILES_CMAKE
  84. atomsampleviewergem_tools_shared_files.cmake
  85. COMPILE_DEFINITIONS
  86. PUBLIC
  87. INCLUDE_DIRECTORIES
  88. PRIVATE
  89. .
  90. Source
  91. Source/Platform/${PAL_PLATFORM_NAME}
  92. BUILD_DEPENDENCIES
  93. PUBLIC
  94. AZ::AzCore
  95. Gem::AtomSampleViewer.Tools.Static
  96. RUNTIME_DEPENDENCIES
  97. Gem::AtomSampleViewer
  98. )
  99. # The AtomSampleViewer.Tools target is the real GEM_MODULE target made above, but the AssetBuilder/AssetProcessor
  100. # also needs that target, so alias the "Builders" variant to it
  101. ly_create_alias(NAME AtomSampleViewer.Builders NAMESPACE Gem TARGETS Gem::AtomSampleViewer.Tools)
  102. endif()
  103. ################################################################################
  104. # Tests
  105. ################################################################################
  106. if(PAL_TRAIT_BUILD_SUPPORTS_TESTS)
  107. ly_add_target(
  108. NAME AtomSampleViewer.Tests MODULE
  109. NAMESPACE Gem
  110. FILES_CMAKE
  111. atomsampleviewer_tests_files.cmake
  112. INCLUDE_DIRECTORIES
  113. PRIVATE
  114. Tests
  115. BUILD_DEPENDENCIES
  116. PRIVATE
  117. AZ::AzTest
  118. Gem::AtomSampleViewer
  119. )
  120. ly_add_googletest(
  121. NAME Gem::AtomSampleViewer.Tests
  122. TARGET Gem::AtomSampleViewer.Tests
  123. )
  124. endif()
  125. ################################################################################
  126. # Gem dependencies
  127. ################################################################################
  128. # The GameLauncher uses "Clients" gem variants:
  129. ly_enable_gems(PROJECT_NAME AtomSampleViewer GEM_FILE enabled_gems.cmake
  130. TARGETS AtomSampleViewer.GameLauncher
  131. VARIANTS Clients)
  132. # If we build a server, then apply the gems to the server
  133. if(PAL_TRAIT_BUILD_SERVER_SUPPORTED)
  134. # if we're making a server, then add the "Server" gem variants to it:
  135. ly_enable_gems(PROJECT_NAME AtomSampleViewer GEM_FILE enabled_gems.cmake
  136. TARGETS AtomSampleViewer.ServerLauncher
  137. VARIANTS Servers)
  138. set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_SERVER_PROJECTS AtomSampleViewer)
  139. endif()
  140. if (PAL_TRAIT_BUILD_HOST_TOOLS)
  141. # The Editor uses "Tools" gem variants:
  142. ly_enable_gems(
  143. PROJECT_NAME AtomSampleViewer GEM_FILE enabled_gems.cmake
  144. TARGETS Editor
  145. VARIANTS Tools)
  146. # The pipeline tools use "Builders" gem variants:
  147. ly_enable_gems(
  148. PROJECT_NAME AtomSampleViewer GEM_FILE enabled_gems.cmake
  149. TARGETS AssetBuilder AssetProcessor AssetProcessorBatch
  150. VARIANTS Builders)
  151. endif()