Revision control
++ # Copyright (C) 2024 The Qt Company Ltd.
++ # SPDX-License-Identifier: BSD-3-Clause
++
++ if(TARGET WrapSystemOpenXR::WrapSystemOpenXR)
++ set(WrapSystemOpenXR_FOUND ON)
++ return()
++ endif()
++ set(WrapSystemOpenXR_REQUIRED_VARS __openxr_found)
++
++ if (ANDROID)
++ # When using the Oculus OpenXR Mobile SDK, we need to use the loader provided by the SDK (for now)
++ if (NOT "$ENV{OCULUS_OPENXR_MOBILE_SDK}" STREQUAL "")
++ set(XR_LOADER_TYPE "Debug")
++ if(DEFINED CMAKE_BUILD_TYPE)
++ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
++ set(XR_LOADER_TYPE "Debug")
++ elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
++ set(XR_LOADER_TYPE "Release")
++ elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
++ set(XR_LOADER_TYPE "Release")
++ endif()
++ endif()
++ file(TO_CMAKE_PATH $ENV{OCULUS_OPENXR_MOBILE_SDK} OCULUS_OPENXR_MOBILE_SDK)
++ set(XR_LOADER_SO ${OCULUS_OPENXR_MOBILE_SDK}/OpenXR/Libs/Android/${ANDROID_ABI}/${XR_LOADER_TYPE}/libopenxr_loader.so)
++ if(EXISTS ${XR_LOADER_SO})
++ message("Using OpenXR loader ${XR_LOADER_SO}")
++ add_library(openxr_loader SHARED IMPORTED)
++ set_property(
++ TARGET
++ openxr_loader
++ PROPERTY
++ IMPORTED_LOCATION
++ ${XR_LOADER_SO}
++ )
++
++ add_library(WrapSystemOpenXR::WrapSystemOpenXR INTERFACE IMPORTED)
++ target_link_libraries(WrapSystemOpenXR::WrapSystemOpenXR INTERFACE openxr_loader)
++
++ # Oculus OpenXR Mobile SDK pre-v64
++ if((EXISTS ${OCULUS_OPENXR_MOBILE_SDK}/OpenXR/Include) AND (EXISTS ${OCULUS_OPENXR_MOBILE_SDK}/3rdParty/khronos/openxr/OpenXR-SDK/include))
++ set(META_PREVIEW ${OCULUS_OPENXR_MOBILE_SDK}/OpenXR/Include)
++ set(OPENXR_HEADERS ${OCULUS_OPENXR_MOBILE_SDK}/3rdParty/khronos/openxr/OpenXR-SDK/include)
++ # Oculus OpenXR Mobile SDK v64 and newer
++ elseif((EXISTS ${OCULUS_OPENXR_MOBILE_SDK}/OpenXR/meta_openxr_preview) AND (EXISTS ${OCULUS_OPENXR_MOBILE_SDK}/Samples/3rdParty/khronos/openxr/OpenXR-SDK/include))
++ set(META_PREVIEW ${OCULUS_OPENXR_MOBILE_SDK}/OpenXR/meta_openxr_preview)
++ set(OPENXR_HEADERS ${OCULUS_OPENXR_MOBILE_SDK}/Samples/3rdParty/khronos/openxr/OpenXR-SDK/include)
++ endif()
++
++ target_include_directories(
++ WrapSystemOpenXR::WrapSystemOpenXR INTERFACE
++ ${META_PREVIEW}
++ ${OPENXR_HEADERS}
++ )
++ set(WrapSystemOpenXR_FOUND TRUE)
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(WrapSystemOpenXR DEFAULT_MSG WrapSystemOpenXR_FOUND)
++ return()
++ else()
++ message("OCULUS_OPENXR_MOBILE_SDK is set, but the proprietary loader library is not present; probably a >= v65 SDK, ignoring in favor of the bundled loader")
++ endif()
++ else()
++ message("OCULUS_OPENXR_MOBILE_SDK is not set")
++ endif()
++
++ endif ()
++
++
++ find_package(OpenXR ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} QUIET)
++
++ set(__openxr_target_name "OpenXR::openxr_loader")
++ if(OpenXR_FOUND AND TARGET "${__openxr_target_name}")
++ set(__openxr_found TRUE)
++ if(OpenXR_VERSION)
++ set(WrapSystemOpenXR_VERSION "${OpenXR_VERSION}")
++ endif()
++ endif()
++
++ if(OpenXR_LIBRARIES)
++ list(PREPEND WrapSystemOpenXR_REQUIRED_VARS OpenXR_LIBRARIES)
++ endif()
++ if(OpenXR_VERSION)
++ set(WrapSystemOpenXR_VERSION "${OpenXR_VERSION}")
++ elseif(OpenXR_VERSION_STRING)
++ set(WrapSystemOpenXR_VERSION "${OpenXR_VERSION_STRING}")
++ endif()
++
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(WrapSystemOpenXR
++ REQUIRED_VARS ${WrapSystemOpenXR_REQUIRED_VARS}
++ VERSION_VAR WrapSystemOpenXR_VERSION)
++
++ if(WrapSystemOpenXR_FOUND)
++ add_library(WrapSystemOpenXR::WrapSystemOpenXR INTERFACE IMPORTED)
++ target_link_libraries(WrapSystemOpenXR::WrapSystemOpenXR
++ INTERFACE "${__openxr_target_name}")
++ endif()
++
++
++ unset(__openxr_target_name)
++ unset(__openxr_found)