aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openxr-loader
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/openxr-loader')
-rw-r--r--vcpkg/ports/openxr-loader/fix-openxr-sdk-jsoncpp.patch25
-rw-r--r--vcpkg/ports/openxr-loader/msvc-crt.diff14
-rw-r--r--vcpkg/ports/openxr-loader/portfile.cmake68
-rw-r--r--vcpkg/ports/openxr-loader/python3_8_compatibility.patch13
-rw-r--r--vcpkg/ports/openxr-loader/vcpkg.json37
5 files changed, 157 insertions, 0 deletions
diff --git a/vcpkg/ports/openxr-loader/fix-openxr-sdk-jsoncpp.patch b/vcpkg/ports/openxr-loader/fix-openxr-sdk-jsoncpp.patch
new file mode 100644
index 0000000..f012813
--- /dev/null
+++ b/vcpkg/ports/openxr-loader/fix-openxr-sdk-jsoncpp.patch
@@ -0,0 +1,25 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e618325..21d977f 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -107,7 +107,7 @@ if(NOT VULKAN_INCOMPATIBLE)
+ endif()
+
+ find_package(Threads REQUIRED)
+-find_package(JsonCpp)
++find_package(JSONCPP NAMES jsoncpp REQUIRED)
+
+ ### All options defined here
+ option(BUILD_LOADER "Build loader" ON)
+diff --git a/src/loader/OpenXRConfig.cmake.in b/src/loader/OpenXRConfig.cmake.in
+index 81b12e7..4c24771 100644
+--- a/src/loader/OpenXRConfig.cmake.in
++++ b/src/loader/OpenXRConfig.cmake.in
+@@ -6,6 +6,7 @@
+
+ include(CMakeFindDependencyMacro)
+ find_dependency(Threads)
++find_dependency(jsoncpp CONFIG)
+
+ include("${CMAKE_CURRENT_LIST_DIR}/OpenXRTargets.cmake")
+
diff --git a/vcpkg/ports/openxr-loader/msvc-crt.diff b/vcpkg/ports/openxr-loader/msvc-crt.diff
new file mode 100644
index 0000000..4e77983
--- /dev/null
+++ b/vcpkg/ports/openxr-loader/msvc-crt.diff
@@ -0,0 +1,14 @@
+diff --git a/src/loader/CMakeLists.txt b/src/loader/CMakeLists.txt
+index 326f74e..3192e69 100644
+--- a/src/loader/CMakeLists.txt
++++ b/src/loader/CMakeLists.txt
+@@ -212,7 +212,8 @@ elseif(WIN32)
+ )
+ endif()
+
+- if(DYNAMIC_LOADER AND NOT (CMAKE_SYSTEM_NAME STREQUAL "WindowsStore"))
++ if(1) # CRT linkage from vcpkg
++ elseif(0)
+ # If building DLLs, force static CRT linkage
+ set_target_properties(
+ openxr_loader
diff --git a/vcpkg/ports/openxr-loader/portfile.cmake b/vcpkg/ports/openxr-loader/portfile.cmake
new file mode 100644
index 0000000..934f763
--- /dev/null
+++ b/vcpkg/ports/openxr-loader/portfile.cmake
@@ -0,0 +1,68 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO KhronosGroup/OpenXR-SDK-Source
+ REF "release-${VERSION}"
+ SHA512 9d7548e6d992cde412e331fc6253960d37897cc4b55cafdc07f7d0a14a70d5ec8534b33f3bb537c797306035cb80aa1b3abf2656ed9d4a6e43e375f5f6e1e2a4
+ HEAD_REF master
+ PATCHES
+ fix-openxr-sdk-jsoncpp.patch
+ msvc-crt.diff
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH HPP_SOURCE_PATH
+ REPO KhronosGroup/OpenXR-hpp
+ REF af6f069aa1e003041311090237bb41471c776ff6
+ SHA512 986d214a7f725c9b8000a61d8614ecaa0495173a1683a5e1bec636be22f6617551ae43e3e0fd2b0cba6e427f6ed6014daa56deed8497b32cb1236cd35ed8788c
+ HEAD_REF master
+ PATCHES
+ python3_8_compatibility.patch
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ vulkan VCPKG_LOCK_FIND_PACKAGE_Vulkan
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" DYNAMIC_LOADER)
+
+vcpkg_find_acquire_program(PYTHON3)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DBUILD_API_LAYERS=OFF
+ -DBUILD_CONFORMANCE_TESTS=OFF
+ -DBUILD_TESTS=OFF
+ -DCMAKE_INSTALL_INCLUDEDIR=include
+ -DDYNAMIC_LOADER=${DYNAMIC_LOADER}
+ "-DPython3_EXECUTABLE=${PYTHON3}"
+)
+
+vcpkg_cmake_install()
+vcpkg_fixup_pkgconfig()
+vcpkg_copy_pdbs()
+
+# "openxr-loader" matches "<name>*" for "OpenXR", so use the default.
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_cmake_config_fixup(CONFIG_PATH cmake)
+else()
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/openxr)
+endif()
+
+# Generate the OpenXR C++ bindings
+set(ENV{OPENXR_REPO} "${SOURCE_PATH}")
+vcpkg_execute_required_process(
+ COMMAND "${PYTHON3}" "${HPP_SOURCE_PATH}/scripts/hpp_genxr.py" -quiet -registry "${SOURCE_PATH}/specification/registry/xr.xml" -o "${CURRENT_PACKAGES_DIR}/include/openxr"
+ WORKING_DIRECTORY "${HPP_SOURCE_PATH}"
+ LOGNAME "openxr-hpp"
+)
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/share/doc"
+)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/openxr-loader/python3_8_compatibility.patch b/vcpkg/ports/openxr-loader/python3_8_compatibility.patch
new file mode 100644
index 0000000..657bb2b
--- /dev/null
+++ b/vcpkg/ports/openxr-loader/python3_8_compatibility.patch
@@ -0,0 +1,13 @@
+diff --git a/scripts/hpp_genxr.py b/scripts/hpp_genxr.py
+index ce419b0..23e1d3d 100644
+--- a/scripts/hpp_genxr.py
++++ b/scripts/hpp_genxr.py
+@@ -36,7 +36,7 @@ from xrconventions import OpenXRConventions
+ from data import EXCLUDED_EXTENSIONS
+
+
+-def makeREstring(strings: Iterable[str], default: typing.Optional[str] = None) -> str:
++def makeREstring(strings, default: typing.Optional[str] = None) -> str:
+ """Turn a list of strings into a regexp string matching exactly those strings."""
+ if strings or default is None:
+ return f"^({'|'.join(re.escape(s) for s in strings)})$"
diff --git a/vcpkg/ports/openxr-loader/vcpkg.json b/vcpkg/ports/openxr-loader/vcpkg.json
new file mode 100644
index 0000000..1475d17
--- /dev/null
+++ b/vcpkg/ports/openxr-loader/vcpkg.json
@@ -0,0 +1,37 @@
+{
+ "name": "openxr-loader",
+ "version": "1.1.45",
+ "port-version": 1,
+ "description": "A royalty-free, open standard that provides high-performance access to Augmented Reality (AR) and Virtual Reality (VR)—collectively known as XR—platforms and devices",
+ "homepage": "https://github.com/KhronosGroup/OpenXR-SDK",
+ "license": "Apache-2.0",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "egl",
+ "platform": "android"
+ },
+ "jsoncpp",
+ {
+ "name": "opengl",
+ "platform": "!android & !ios & !osx & !(arm & windows) & !uwp"
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "vulkan": {
+ "description": "Vulkan functionality for OpenXR",
+ "supports": "!(arm & windows) & !uwp",
+ "dependencies": [
+ "vulkan"
+ ]
+ }
+ }
+}