Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 45 additions & 13 deletions Dependencies/xr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,27 @@ endif()

project(xr)

# Android Quest builds select OpenXR instead of ARCore via -DXR_ANDROID_BACKEND=OpenXR.
if(ANDROID)
set(XR_ANDROID_BACKEND "ARCore" CACHE STRING "Android XR backend: ARCore or OpenXR")
set_property(CACHE XR_ANDROID_BACKEND PROPERTY STRINGS ARCore OpenXR)
endif()

set(DYNAMIC_LOADER OFF CACHE BOOL "Build the loader as a .dll library")

set(SOURCES "Include/XR.h"
"Source/Shared/XRHelpers.h")

if (ANDROID)
set(SOURCES ${SOURCES}
"Source/ARCore/Include/IXrContextARCore.h"
"Source/ARCore/XR.cpp")
if(XR_ANDROID_BACKEND STREQUAL "OpenXR")
set(SOURCES ${SOURCES}
"Source/OpenXR/Android/Include/IXrContextOpenXR.h"
"Source/OpenXR/Android/XR.cpp")
else()
set(SOURCES ${SOURCES}
"Source/ARCore/Include/IXrContextARCore.h"
"Source/ARCore/XR.cpp")
endif()
elseif(IOS OR BABYLON_NATIVE_BUILD_SOURCETREE)
set(SOURCES ${SOURCES}
"Source/ARKit/Include/IXrContextARKit.h"
Expand All @@ -49,16 +61,36 @@ if (APPLE)
endif()

if (ANDROID)
add_library(arcore SHARED IMPORTED)
set_target_properties(arcore PROPERTIES IMPORTED_LOCATION
${ARCORE_LIBPATH}/${ANDROID_ABI}/libarcore_sdk_c.so
INTERFACE_INCLUDE_DIRECTORIES ${arcore-android-sdk_SOURCE_DIR}/libraries/include)

add_library(glm INTERFACE)
set_target_properties(glm PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${arcore-android-sdk_SOURCE_DIR}/libraries/glm)

target_link_libraries(xr PRIVATE glm arcore AndroidExtensions)
elseif (IOS)
if(XR_ANDROID_BACKEND STREQUAL "OpenXR")
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(BUILD_CONFORMANCE_TESTS OFF CACHE BOOL "" FORCE)
set(BUILD_API_LAYERS OFF CACHE BOOL "" FORCE)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(BUILD_LOADER ON CACHE BOOL "" FORCE)

FetchContent_Declare(OpenXR-SDK
GIT_REPOSITORY https://github.com/KhronosGroup/OpenXR-SDK.git
GIT_TAG release-1.1.47)
FetchContent_MakeAvailable(OpenXR-SDK)

target_compile_definitions(xr PRIVATE
XR_USE_PLATFORM_ANDROID
XR_USE_GRAPHICS_API_OPENGL_ES)

target_include_directories(xr PRIVATE "Source/OpenXR/Android")
target_link_libraries(xr PRIVATE openxr_loader AndroidExtensions EGL GLESv3)
else()
add_library(arcore SHARED IMPORTED)
set_target_properties(arcore PROPERTIES IMPORTED_LOCATION
${ARCORE_LIBPATH}/${ANDROID_ABI}/libarcore_sdk_c.so
INTERFACE_INCLUDE_DIRECTORIES ${arcore-android-sdk_SOURCE_DIR}/libraries/include)

add_library(glm INTERFACE)
set_target_properties(glm PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${arcore-android-sdk_SOURCE_DIR}/libraries/glm)

target_link_libraries(xr PRIVATE glm arcore AndroidExtensions)
endif()
elseif (IOS)
target_link_libraries(xr PRIVATE "-framework ARKit")
endif()

Expand Down
11 changes: 11 additions & 0 deletions Dependencies/xr/Source/OpenXR/Android/Include/IXrContextOpenXR.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#pragma once

#include <openxr/openxr.h>

typedef struct IXrContextOpenXR
{
virtual bool IsInitialized() const = 0;
virtual XrInstance Instance() const = 0;
virtual XrSession Session() const = 0;
virtual ~IXrContextOpenXR() = default;
} IXrContextOpenXR;
Loading