From 1b46ec600a98413b5b782fb82b804c8d2f239d2d Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Thu, 7 Dec 2023 15:20:03 -0800 Subject: [PATCH 1/4] Fixes for Oculus VR plugin --- cmake/externals/LibOVR/CMakeLists.txt | 2 ++ cmake/externals/LibOVRPlatform/CMakeLists.txt | 2 ++ plugins/CMakeLists.txt | 11 ++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cmake/externals/LibOVR/CMakeLists.txt b/cmake/externals/LibOVR/CMakeLists.txt index 51a85f0117..17110cea90 100644 --- a/cmake/externals/LibOVR/CMakeLists.txt +++ b/cmake/externals/LibOVR/CMakeLists.txt @@ -23,6 +23,8 @@ if (WIN32) PATCH_COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/LibOVRCMakeLists.txt" /CMakeLists.txt LOG_DOWNLOAD 1 DOWNLOAD_EXTRACT_TIMESTAMP 1 + BUILD_BYPRODUCTS + "project/Lib/LibOVR.lib" ) ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) diff --git a/cmake/externals/LibOVRPlatform/CMakeLists.txt b/cmake/externals/LibOVRPlatform/CMakeLists.txt index 492827210a..d6b3478418 100644 --- a/cmake/externals/LibOVRPlatform/CMakeLists.txt +++ b/cmake/externals/LibOVRPlatform/CMakeLists.txt @@ -16,6 +16,8 @@ if (WIN32) INSTALL_COMMAND "" LOG_DOWNLOAD 1 DOWNLOAD_EXTRACT_TIMESTAMP 1 + BUILD_BYPRODUCTS + "project/src/LibOVRPlatform/Windows/LibOVRPlatform64_1.lib" ) ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 7205efa398..e130aa7f25 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -13,17 +13,18 @@ list(REMOVE_ITEM PLUGIN_SUBDIRS "CMakeFiles") # client-side plugins if (NOT SERVER_ONLY AND NOT ANDROID) if (NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND (MSVC_VERSION LESS 1930))) + if ((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND (MSVC_VERSION GREATER 1930)) + message(WARNING "Building under ${CMAKE_CXX_COMPILER_ID}, MSVC Version ${MSVC_VERSION}. Oculus plugin unsupported, disabling.") + else() # Check if we're building on MSVC 2022. If so, Oculus plugin fails to build. set(DIR "oculus") add_subdirectory(${DIR}) - set(DIR "openvr") - add_subdirectory(${DIR}) set(DIR "oculusLegacy") add_subdirectory(${DIR}) - else() - message(WARNING "Building under ${CMAKE_CXX_COMPILER_ID}, MSVC Version ${MSVC_VERSION}. Oculus plugin unsupported, disabling.") endif() + + set(DIR "openvr") + add_subdirectory(${DIR}) endif() set(DIR "hifiSdl2") From cfc556e2d199aa563e12609fbf3e48e432f2ba9a Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Fri, 8 Dec 2023 02:43:57 -0800 Subject: [PATCH 2/4] Add clarifying note --- plugins/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index e130aa7f25..4dcd62dac6 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -22,7 +22,8 @@ if (NOT SERVER_ONLY AND NOT ANDROID) set(DIR "oculusLegacy") add_subdirectory(${DIR}) endif() - + + # Note: OpenVR is a Steam thing, which is different from OVR, which is an Oculus SDK component. set(DIR "openvr") add_subdirectory(${DIR}) endif() From 4b440c3cf64dad98d9f29dd08f052abfe9fed32c Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Fri, 8 Dec 2023 05:24:30 -0800 Subject: [PATCH 3/4] Add debug libovr library to list of libovr products --- cmake/externals/LibOVR/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/externals/LibOVR/CMakeLists.txt b/cmake/externals/LibOVR/CMakeLists.txt index 17110cea90..9e91231625 100644 --- a/cmake/externals/LibOVR/CMakeLists.txt +++ b/cmake/externals/LibOVR/CMakeLists.txt @@ -25,6 +25,7 @@ if (WIN32) DOWNLOAD_EXTRACT_TIMESTAMP 1 BUILD_BYPRODUCTS "project/Lib/LibOVR.lib" + "project/Lib/LibOVRd.lib" ) ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) From 94848d98a2c5d54066f7cfd0f58efa1cc542de8f Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Fri, 8 Dec 2023 06:06:26 -0800 Subject: [PATCH 4/4] Pass build type to LibOVR build. This fixes a debug/release mismatch on Windows, which results in a linking error. --- cmake/externals/LibOVR/CMakeLists.txt | 7 ++++++- cmake/externals/LibOVR/LibOVRCMakeLists.txt | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cmake/externals/LibOVR/CMakeLists.txt b/cmake/externals/LibOVR/CMakeLists.txt index 9e91231625..2ef232ae1f 100644 --- a/cmake/externals/LibOVR/CMakeLists.txt +++ b/cmake/externals/LibOVR/CMakeLists.txt @@ -15,11 +15,16 @@ string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (WIN32) + # Note the -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + # It's important that we pass our build type down to other builds we make, especially on Windows. + # On Windows, debug libraries get a 'd' suffix, eg, LibOVRd.lib. This means that a mismatch of build + # types means we'll generate a LibOVRd.lib and the rest of the system will look for LibOVR.lib, or + # viceversa. ExternalProject_Add( ${EXTERNAL_NAME} URL "${EXTERNAL_BUILD_ASSETS}/dependencies/ovr_sdk_win_1.35.0.zip" URL_MD5 1e3e8b2101387af07ff9c841d0ea285e - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} PATCH_COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/LibOVRCMakeLists.txt" /CMakeLists.txt LOG_DOWNLOAD 1 DOWNLOAD_EXTRACT_TIMESTAMP 1 diff --git a/cmake/externals/LibOVR/LibOVRCMakeLists.txt b/cmake/externals/LibOVR/LibOVRCMakeLists.txt index a52cff5463..7740c618f6 100644 --- a/cmake/externals/LibOVR/LibOVRCMakeLists.txt +++ b/cmake/externals/LibOVR/LibOVRCMakeLists.txt @@ -1,6 +1,8 @@ -cmake_minimum_required(VERSION 3.2) +cmake_minimum_required(VERSION 3.20) project(LibOVR) +message(STATUS "Building LibOVR for ${CMAKE_BUILD_TYPE} configuration") + include_directories(LibOVR/Include LibOVR/Src) file(GLOB HEADER_FILES LibOVR/Include/*.h) file(GLOB EXTRA_HEADER_FILES LibOVR/Include/Extras/*.h)