# # 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. # # SPDX-License-Identifier: Apache-2.0 OR MIT # # # Queries the "gem_name" "version" values from the gem.json file for this gem # They are set in the ${gem_name} and ${gem_version} variables o3de_gem_setup("${Name}") 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}") o3de_pal_dir(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}") include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) if(PAL_TRAIT_OPENXRVK_TARGETS_ALREADY_DEFINED) return() # OpenXRVk targets already defined in PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake endif() if(NOT PAL_TRAIT_OPENXRVK_SUPPORTED) # Create stub modules. Once we support gem loading configuration, we can remove this stubbed targets ly_add_target( NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE} NAMESPACE Gem FILES_CMAKE openxrvk_stub_module.cmake INCLUDE_DIRECTORIES PRIVATE Source BUILD_DEPENDENCIES PRIVATE AZ::AzCore ) return() # Do not create the rest of the targets endif() ly_add_target( NAME ${gem_name}.Static STATIC NAMESPACE Gem FILES_CMAKE openxrvk_static_common_files.cmake ${pal_source_dir}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake ${pal_include_dir}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake PLATFORM_INCLUDE_FILES ${pal_source_dir}/platform_private_static_${PAL_PLATFORM_NAME_LOWERCASE}.cmake INCLUDE_DIRECTORIES PRIVATE Source ${pal_source_dir} PUBLIC Include ${pal_include_dir} BUILD_DEPENDENCIES PUBLIC AZ::AzCore AZ::AzFramework ${openxr_dependency} AZ::AtomCore Gem::Atom_RHI_Vulkan.Reflect Gem::Atom_RHI_Vulkan.Glad.Static Gem::XR.Static Gem::PhysX.Static Gem::Atom_Feature_Common.Public Gem::CommonFeaturesAtom.Static Gem::EMotionFXStaticLib Gem::EMotionFX ) ly_add_target( NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE} NAMESPACE Gem FILES_CMAKE openxrvk_module_files.cmake INCLUDE_DIRECTORIES PRIVATE Source ${pal_source_dir} PUBLIC Include ${pal_include_dir} BUILD_DEPENDENCIES PRIVATE Gem::${gem_name}.Static ) # Inject the gem name into the Module source file ly_add_source_properties( SOURCES Source/OpenXRVkModule.cpp PROPERTY COMPILE_DEFINITIONS VALUES O3DE_GEM_NAME=${gem_name} O3DE_GEM_VERSION=${gem_version} ) # use the OpenXRVk module in all aliases: ly_create_alias(NAME OpenXRVk.Clients NAMESPACE Gem TARGETS Gem::OpenXRVk) ly_create_alias(NAME OpenXRVk.Unified NAMESPACE Gem TARGETS Gem::OpenXRVk) if(PAL_TRAIT_BUILD_HOST_TOOLS) # by naming this target ${gem_name}.Builders it ensures that it is loaded # in any pipeline tools (Like Asset Processor, AssetBuilder, etc) ly_add_target( NAME ${gem_name}.Builders.Static STATIC NAMESPACE Gem FILES_CMAKE openxrvk_static_builders_files.cmake INCLUDE_DIRECTORIES PRIVATE Source PUBLIC Include BUILD_DEPENDENCIES PUBLIC AZ::AzCore AZ::AssetBuilderSDK ${openxr_dependency} Gem::${gem_name}.Static Gem::EMotionFXStaticLib Gem::EMotionFX ) ly_add_target( NAME ${gem_name}.Builders GEM_MODULE NAMESPACE Gem FILES_CMAKE openxrvk_module_files.cmake INCLUDE_DIRECTORIES PRIVATE Source PUBLIC Include BUILD_DEPENDENCIES PRIVATE Gem::${gem_name}.Builders.Static COMPILE_DEFINITIONS PRIVATE OPENXRVK_BUILDERS ) # For now the *.Tools alias leverages the ${gem_name} module. # This is necessary so the Editor.exe and similar tool targets load the Module. # And the tricks to make sure the alias name ends in ".Tools". ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}) endif() ################################################################################ # Tests ################################################################################ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) ly_add_target( NAME OpenXRVk.Tests ${PAL_TRAIT_TEST_TARGET_TYPE} NAMESPACE Gem OUTPUT_NAME OpenXRVk.Tests FILES_CMAKE openxrvk_tests_files.cmake ${pal_source_dir}/platform_test_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake INCLUDE_DIRECTORIES PRIVATE Tests . Source ${pal_source_dir} BUILD_DEPENDENCIES PRIVATE AZ::AzTestShared AZ::AzTest Gem::OpenXRVk.Static ) ly_add_googletest( NAME Gem::OpenXRVk.Tests ) endif()