diff --git a/CI/before_script.msvc.sh b/CI/before_script.msvc.sh index d73b30219..d7f0f01fb 100644 --- a/CI/before_script.msvc.sh +++ b/CI/before_script.msvc.sh @@ -77,7 +77,6 @@ BULLET_DOUBLE="" BULLET_DBL="" BULLET_DBL_DISPLAY="Single precision" SKIP_VR="" -OPENXR_INSTALL_ROOT="" ACTIVATE_MSVC="" SINGLE_CONFIG="" @@ -97,9 +96,9 @@ while [ $# -gt 0 ]; do case $ARG in V ) VERBOSE=true ;; - - nVR ) - SKIP_VR=true ;; + + nVR ) + SKIP_VR=true ;; d ) SKIP_DOWNLOAD=true ;; @@ -516,16 +515,6 @@ if [ -z $SKIP_DOWNLOAD ]; then git clone -b release-1.10.0 https://github.com/google/googletest.git fi fi - - # OpenXR - if [ -z $SKIP_VR]; then - echo "OpenXR SDK 1.0.9..." - if [ -d OpenXR-SDK ]; then - printf "OpenXR SDK exists, skipping." - else - git clone -b release-1.0.9 https://github.com/KhronosGroup/OpenXR-SDK.git - fi - fi fi cd .. #/.. @@ -834,12 +823,6 @@ printf "SDL 2.0.12... " cd $DEPS echo -if [ $CONFIGURATION == "Debug" ]; then - DEBUG_SUFFIX="d" - else - DEBUG_SUFFIX="" -fi - # Google Test and Google Mock if [ ! -z $TEST_FRAMEWORK ]; then printf "Google test 1.10.0 ..." @@ -852,6 +835,11 @@ if [ ! -z $TEST_FRAMEWORK ]; then cd build GOOGLE_INSTALL_ROOT="${DEPS_INSTALL}/GoogleTest" + if [ $CONFIGURATION == "Debug" ]; then + DEBUG_SUFFIX="d" + else + DEBUG_SUFFIX="" + fi if [ ! -d $GOOGLE_INSTALL_ROOT ]; then @@ -879,29 +867,9 @@ if [ ! -z $TEST_FRAMEWORK ]; then fi -# OpenXR SDK -if [ -Z $SKIP_VR ]; then - printf "OpenXR SDK 1.0.9 ..." - - cd OpenXR-SDK - if [ ! -d build ]; then - mkdir -p build - fi - - cd build - OPENXR_INSTALL_ROOT="${DEPS_INSTALL}/OpenXR-SDK" - if [ ! -d $OPENXR_INSTALL_ROOT ]; then - - cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${OPENXR_INSTALL_ROOT}" -G "${GENERATOR}" -DDYNAMIC_LOADER=ON - cmake --build . --config Release - cmake --build . --target install --config Release - fi - - add_runtime_dlls "${OPENXR_INSTALL_ROOT}\bin\openxr_loader.dll" - - add_cmake_opts -DBUILD_VR_OPENXR=on - add_cmake_opts -DOPENXR_ROOT="${OPENXR_INSTALL_ROOT}" - add_cmake_opts -DOPENXR_LIBRARY="${OPENXR_INSTALL_ROOT}/lib/openxr_loader.lib" +# VR build +if [ ! -Z $SKIP_VR ]; then + add_cmake_opts -DBUILD_VR_OPENXR=no fi echo @@ -919,6 +887,7 @@ if [ ! -z $CI ]; then -DBUILD_MWINIIMPORTER=no \ -DBUILD_OPENCS=no \ -DBUILD_OPENMW=no \ + -DBUILD_OPENMW_VR=no \ -DBUILD_WIZARD=no ;; openmw ) @@ -927,6 +896,7 @@ if [ ! -z $CI ]; then -DBUILD_LAUNCHER=no \ -DBUILD_MWINIIMPORTER=no \ -DBUILD_OPENCS=no \ + -DBUILD_OPENMW_VR=no \ -DBUILD_WIZARD=no ;; vr ) @@ -943,12 +913,14 @@ if [ ! -z $CI ]; then -DBUILD_LAUNCHER=no \ -DBUILD_MWINIIMPORTER=no \ -DBUILD_OPENMW=no \ + -DBUILD_OPENMW_VR=no \ -DBUILD_WIZARD=no ;; misc ) echo " Building subprojects: Misc." add_cmake_opts -DBUILD_OPENCS=no \ - -DBUILD_OPENMW=no + -DBUILD_OPENMW=no \ + -DBUILD_OPENMW_VR=no ;; esac fi diff --git a/CMakeLists.txt b/CMakeLists.txt index ba508b5c2..01cffc7c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ option(BUILD_BSATOOL "Build BSA extractor" ON) option(BUILD_ESMTOOL "Build ESM inspector" ON) option(BUILD_NIFTEST "Build nif file tester" ON) option(BUILD_DOCS "Build documentation." OFF ) -option(BUILD_VR_OPENXR "Build VR support using OpenXR" OFF) +option(BUILD_OPENMW_VR "Build VR support using OpenXR" ON) option(BUILD_WITH_CODE_COVERAGE "Enable code coverage with gconv" OFF) option(BUILD_UNITTESTS "Enable Unittests with Google C++ Unittest" OFF) option(BULLET_USE_DOUBLES "Use double precision for Bullet" OFF) @@ -21,7 +21,7 @@ else() endif() # set the minimum required version across the board -cmake_minimum_required(VERSION 3.1.0) +cmake_minimum_required(VERSION 3.14) project(OpenMW) @@ -315,11 +315,6 @@ include_directories("." ${BULLET_INCLUDE_DIRS} ) -if(BUILD_VR_OPENXR) - include_directories(${OPENXR_ROOT}/include) - link_directories(${OPENXR_ROOT}/lib) -endif(BUILD_VR_OPENXR) - link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS}) if(MYGUI_STATIC) @@ -587,7 +582,7 @@ add_subdirectory (components) target_compile_definitions(components PRIVATE OPENMW_DOC_BASEURL="${OPENMW_DOC_BASEURL}") # Apps and tools -if (BUILD_OPENMW OR BUILD_VR_OPENXR) +if (BUILD_OPENMW OR BUILD_OPENMW_VR) add_subdirectory( apps/openmw ) endif() @@ -657,17 +652,17 @@ if (WIN32) endif() # TODO: properties and link targets should be copied from openmw to openmw_vr instead of duplicating every line - if (USE_DEBUG_CONSOLE AND BUILD_VR_OPENXR) + if (USE_DEBUG_CONSOLE AND BUILD_OPENMW_VR) set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") set_target_properties(openmw_vr PROPERTIES COMPILE_DEFINITIONS $<$:_CONSOLE>) - elseif (BUILD_VR_OPENXR) + elseif (BUILD_OPENMW_VR) # Turn off debug console, debug output will be written to visual studio output instead set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS") set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS") endif() - if (BUILD_VR_OPENXR) + if (BUILD_OPENMW_VR) # Release builds don't use the debug console set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") set_target_properties(openmw_vr PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") @@ -773,7 +768,7 @@ if (WIN32) endif() endif() - if (BUILD_VR_OPENXR) + if (BUILD_OPENMW_VR) if (OPENMW_UNITY_BUILD) set_target_properties(openmw_vr PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj") else() diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index c371dfbe7..ee4c61a6c 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -235,9 +235,8 @@ if(BUILD_OPENMW) endif (WIN32) endif() -if(BUILD_VR_OPENXR) -# TODO: Move this into something akin to add_openmw_dir instead of breaking pattern. -# Later, openmw and openmw_vr should preferrably share game code as a static or shared library +if(BUILD_OPENMW_VR) +# TODO: Openmw and openmw_vr should preferrably share game code as a static or shared library # instead of being compiled separately, though for now that's not possible as i depend on # USE_OPENXR preprocessor switches. set(OPENMW_VR_FILES @@ -255,10 +254,21 @@ if(BUILD_VR_OPENXR) ${GAME} ${GAME_HEADER} ${APPLE_BUNDLE_RESOURCES} ) + + # Import the OpenXR SDK + include(FetchContent) + FetchContent_Declare( + OpenXR + GIT_REPOSITORY https://github.com/KhronosGroup/OpenXR-SDK.git + GIT_TAG release-1.0.9 + ) + FetchContent_MakeAvailable(OpenXR) + target_link_libraries(openmw_vr openxr_loader) + target_include_directories(openmw_vr PRIVATE ${openxr_SOURCE_DIR}/include) # Preprocessor variable used to control code paths to vr code target_compile_options(openmw_vr PUBLIC -DUSE_OPENXR -DXR_USE_GRAPHICS_API_OPENGL -DXR_USE_PLATFORM_WIN32) - target_link_libraries(openmw_vr ${OPENMW_LINK_TARGETS} ${OPENXR_LIBRARY}) + target_link_libraries(openmw_vr ${OPENMW_LINK_TARGETS}) if(APPLE) add_custom_command(TARGET openmw_vr POST_BUILD