ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
101 lines
4.1 KiB
CMake
101 lines
4.1 KiB
CMake
# 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)
|