CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. # Queries the "gem_name" "version" values from the gem.json file for this gem
  9. # They are set in the ${gem_name} and ${gem_version} variables
  10. o3de_gem_setup("${Name}")
  11. o3de_pal_dir(pal_include_dir ${CMAKE_CURRENT_LIST_DIR}/Include/OpenXRVk/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  12. o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  13. include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
  14. if(PAL_TRAIT_OPENXRVK_TARGETS_ALREADY_DEFINED)
  15. return() # OpenXRVk targets already defined in PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  16. endif()
  17. if(NOT PAL_TRAIT_OPENXRVK_SUPPORTED)
  18. # Create stub modules. Once we support gem loading configuration, we can remove this stubbed targets
  19. ly_add_target(
  20. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  21. NAMESPACE Gem
  22. FILES_CMAKE
  23. openxrvk_stub_module.cmake
  24. INCLUDE_DIRECTORIES
  25. PRIVATE
  26. Source
  27. BUILD_DEPENDENCIES
  28. PRIVATE
  29. AZ::AzCore
  30. )
  31. return() # Do not create the rest of the targets
  32. endif()
  33. ly_add_target(
  34. NAME ${gem_name}.Static STATIC
  35. NAMESPACE Gem
  36. FILES_CMAKE
  37. openxrvk_static_common_files.cmake
  38. ${pal_source_dir}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  39. ${pal_include_dir}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  40. PLATFORM_INCLUDE_FILES
  41. ${pal_source_dir}/platform_private_static_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  42. INCLUDE_DIRECTORIES
  43. PRIVATE
  44. Source
  45. ${pal_source_dir}
  46. PUBLIC
  47. Include
  48. ${pal_include_dir}
  49. BUILD_DEPENDENCIES
  50. PUBLIC
  51. AZ::AzCore
  52. AZ::AzFramework
  53. ${openxr_dependency}
  54. AZ::AtomCore
  55. Gem::Atom_RHI_Vulkan.Reflect
  56. Gem::Atom_RHI_Vulkan.Glad.Static
  57. Gem::XR.Static
  58. Gem::PhysX.Static
  59. Gem::Atom_Feature_Common.Public
  60. Gem::CommonFeaturesAtom.Static
  61. Gem::EMotionFXStaticLib
  62. Gem::EMotionFX
  63. )
  64. ly_add_target(
  65. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  66. NAMESPACE Gem
  67. FILES_CMAKE
  68. openxrvk_module_files.cmake
  69. INCLUDE_DIRECTORIES
  70. PRIVATE
  71. Source
  72. ${pal_source_dir}
  73. PUBLIC
  74. Include
  75. ${pal_include_dir}
  76. BUILD_DEPENDENCIES
  77. PRIVATE
  78. Gem::${gem_name}.Static
  79. )
  80. # Inject the gem name into the Module source file
  81. ly_add_source_properties(
  82. SOURCES
  83. Source/OpenXRVkModule.cpp
  84. PROPERTY COMPILE_DEFINITIONS
  85. VALUES
  86. O3DE_GEM_NAME=${gem_name}
  87. O3DE_GEM_VERSION=${gem_version}
  88. )
  89. # use the OpenXRVk module in all aliases:
  90. ly_create_alias(NAME OpenXRVk.Clients NAMESPACE Gem TARGETS Gem::OpenXRVk)
  91. ly_create_alias(NAME OpenXRVk.Unified NAMESPACE Gem TARGETS Gem::OpenXRVk)
  92. if(PAL_TRAIT_BUILD_HOST_TOOLS)
  93. # by naming this target ${gem_name}.Builders it ensures that it is loaded
  94. # in any pipeline tools (Like Asset Processor, AssetBuilder, etc)
  95. ly_add_target(
  96. NAME ${gem_name}.Builders.Static STATIC
  97. NAMESPACE Gem
  98. FILES_CMAKE
  99. openxrvk_static_builders_files.cmake
  100. INCLUDE_DIRECTORIES
  101. PRIVATE
  102. Source
  103. PUBLIC
  104. Include
  105. BUILD_DEPENDENCIES
  106. PUBLIC
  107. AZ::AzCore
  108. AZ::AssetBuilderSDK
  109. ${openxr_dependency}
  110. Gem::${gem_name}.Static
  111. Gem::EMotionFXStaticLib
  112. Gem::EMotionFX
  113. )
  114. ly_add_target(
  115. NAME ${gem_name}.Builders GEM_MODULE
  116. NAMESPACE Gem
  117. FILES_CMAKE
  118. openxrvk_module_files.cmake
  119. INCLUDE_DIRECTORIES
  120. PRIVATE
  121. Source
  122. PUBLIC
  123. Include
  124. BUILD_DEPENDENCIES
  125. PRIVATE
  126. Gem::${gem_name}.Builders.Static
  127. COMPILE_DEFINITIONS
  128. PRIVATE
  129. OPENXRVK_BUILDERS
  130. )
  131. # For now the *.Tools alias leverages the ${gem_name} module.
  132. # This is necessary so the Editor.exe and similar tool targets load the Module.
  133. # And the tricks to make sure the alias name ends in ".Tools".
  134. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name})
  135. endif()
  136. ################################################################################
  137. # Tests
  138. ################################################################################
  139. if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  140. ly_add_target(
  141. NAME OpenXRVk.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  142. NAMESPACE Gem
  143. OUTPUT_NAME OpenXRVk.Tests
  144. FILES_CMAKE
  145. openxrvk_tests_files.cmake
  146. ${pal_source_dir}/platform_test_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  147. INCLUDE_DIRECTORIES
  148. PRIVATE
  149. Tests
  150. .
  151. Source
  152. ${pal_source_dir}
  153. BUILD_DEPENDENCIES
  154. PRIVATE
  155. AZ::AzTestShared
  156. AZ::AzTest
  157. Gem::OpenXRVk.Static
  158. )
  159. ly_add_googletest(
  160. NAME Gem::OpenXRVk.Tests
  161. )
  162. endif()