aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/usd
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/usd')
-rw-r--r--vcpkg/ports/usd/003-fix-dep.patch165
-rw-r--r--vcpkg/ports/usd/004-fix_cmake_package.patch48
-rw-r--r--vcpkg/ports/usd/007-fix_cmake_hgi_interop.patch23
-rw-r--r--vcpkg/ports/usd/008-fix_clang8_compiler_error.patch22
-rw-r--r--vcpkg/ports/usd/009-vcpkg_install_folder_conventions.patch82
-rw-r--r--vcpkg/ports/usd/010-cmake_export_plugin_as_modules.patch34
-rw-r--r--vcpkg/ports/usd/013-openimageio-3.patch13
-rw-r--r--vcpkg/ports/usd/portfile.cmake135
-rw-r--r--vcpkg/ports/usd/vcpkg.json74
9 files changed, 596 insertions, 0 deletions
diff --git a/vcpkg/ports/usd/003-fix-dep.patch b/vcpkg/ports/usd/003-fix-dep.patch
new file mode 100644
index 0000000..a20b3b0
--- /dev/null
+++ b/vcpkg/ports/usd/003-fix-dep.patch
@@ -0,0 +1,165 @@
+diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake
+index 1b69cad..9494278 100644
+--- a/cmake/defaults/Packages.cmake
++++ b/cmake/defaults/Packages.cmake
+@@ -178,7 +178,12 @@ if (PXR_BUILD_IMAGING)
+ if (POLICY CMP0072)
+ cmake_policy(SET CMP0072 OLD)
+ endif()
++ set(previous_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK})
++ if(APPLE) # Must find Apple OpenGL, not XQuartz OpenGL
++ set(CMAKE_FIND_FRAMEWORK FIRST)
++ endif()
+ find_package(OpenGL REQUIRED)
++ set(CMAKE_FIND_FRAMEWORK ${previous_CMAKE_FIND_FRAMEWORK})
+ add_definitions(-DPXR_GL_SUPPORT_ENABLED)
+ endif()
+ # --Metal
+@@ -155,7 +160,8 @@ if (PXR_BUILD_IMAGING)
+ # --OpenImageIO
+ if (PXR_BUILD_OPENIMAGEIO_PLUGIN)
+ set(REQUIRES_Imath TRUE)
+- find_package(OpenImageIO REQUIRED)
++ find_package(OpenImageIO CONFIG REQUIRED)
++ set(OIIO_LIBRARIES OpenImageIO::OpenImageIO)
+ add_definitions(-DPXR_OIIO_PLUGIN_ENABLED)
+ if (OIIO_idiff_BINARY)
+ set(IMAGE_DIFF_TOOL ${OIIO_idiff_BINARY} CACHE STRING "Uses idiff for image diffing")
+@@ -189,4 +195,4 @@ if (PXR_BUILD_IMAGING)
+- if (EXISTS $ENV{VULKAN_SDK})
++ if (0)
+ # Prioritize the VULKAN_SDK includes and packages before any system
+ # installed headers. This is to prevent linking against older SDKs
+ # that may be installed by the OS.
+@@ -215,8 +221,12 @@ if (PXR_BUILD_IMAGING)
+ endif()
+
+- add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED)
+- else()
+- message(FATAL_ERROR "VULKAN_SDK not valid")
+ endif()
++ add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED)
++ find_package(Vulkan REQUIRED)
++ find_package(unofficial-shaderc CONFIG REQUIRED)
++ find_package(VulkanMemoryAllocator CONFIG REQUIRED)
++ list(APPEND VULKAN_LIBS Vulkan::Vulkan)
++ list(APPEND VULKAN_LIBS unofficial::shaderc::shaderc)
++ list(APPEND VULKAN_LIBS GPUOpen::VulkanMemoryAllocator)
+ endif()
+ # --Opensubdiv
+diff --git a/pxr/imaging/hgiVulkan/CMakeLists.txt b/pxr/imaging/hgiVulkan/CMakeLists.txt
+index 00ad75448..dff475436 100644
+--- a/pxr/imaging/hgiVulkan/CMakeLists.txt
++++ b/pxr/imaging/hgiVulkan/CMakeLists.txt
+@@ -40,8 +40,7 @@ pxr_library(hgiVulkan
+ shaderProgram
+ shaderSection
+ texture
+- vk_mem_alloc
+
+ PUBLIC_HEADERS
+ api.h
+ vulkan.h
+diff --git a/pxr/imaging/hgiVulkan/device.cpp b/pxr/imaging/hgiVulkan/device.cpp
+index 08bf8e0a7..bfc368169 100644
+--- a/pxr/imaging/hgiVulkan/device.cpp
++++ b/pxr/imaging/hgiVulkan/device.cpp
+@@ -11,7 +11,8 @@
+ #include "pxr/imaging/hgiVulkan/hgi.h"
+ #include "pxr/imaging/hgiVulkan/instance.h"
+ #include "pxr/imaging/hgiVulkan/pipelineCache.h"
+-#include "pxr/imaging/hgiVulkan/vk_mem_alloc.h"
++#define VMA_IMPLEMENTATION
++#include <vk_mem_alloc.h>
+
+ #include "pxr/base/tf/diagnostic.h"
+
+diff --git a/pxr/imaging/hgiVulkan/vulkan.h b/pxr/imaging/hgiVulkan/vulkan.h
+index 1f527b9cb..b5ffd314f 100644
+--- a/pxr/imaging/hgiVulkan/vulkan.h
++++ b/pxr/imaging/hgiVulkan/vulkan.h
+@@ -24,7 +24,7 @@
+ #define VK_EXTERNAL_MEMORY_HANDLE_AUTO 0
+ #endif
+
+-#include "pxr/imaging/hgiVulkan/vk_mem_alloc.h"
++#include <vk_mem_alloc.h>
+
+ // Use the default allocator (nullptr)
+ inline VkAllocationCallbacks*
+diff --git a/pxr/imaging/plugin/hioOiio/CMakeLists.txt b/pxr/imaging/plugin/hioOiio/CMakeLists.txt
+index 0a055b7..de4b73a 100644
+--- a/pxr/imaging/plugin/hioOiio/CMakeLists.txt
++++ b/pxr/imaging/plugin/hioOiio/CMakeLists.txt
+@@ -7,6 +7,7 @@ if (NOT ${PXR_BUILD_GPU_SUPPORT})
+ return()
+ endif()
+
++if(0) # No need because OpenImageIO::OpenImageIO already declare its transitive dependencies correctly
+ # Use the import targets set by Imath's package config
+ if (Imath_FOUND)
+ set(__OIIO_IMATH_LIBS "Imath::Imath")
+@@ -14,6 +15,7 @@ else()
+ set(__OIIO_IMATH_INCLUDE ${OPENEXR_INCLUDE_DIRS})
+ set(__OIIO_IMATH_LIBS ${OPENEXR_LIBRARIES})
+ endif()
++endif()
+
+ pxr_plugin(hioOiio
+ LIBRARIES
+diff --git a/pxr/pxrConfig.cmake.in b/pxr/pxrConfig.cmake.in
+index a7e566bac..559f50b9c 100644
+--- a/pxr/pxrConfig.cmake.in
++++ b/pxr/pxrConfig.cmake.in
+@@ -18,6 +18,25 @@ set(PXR_VERSION "@PXR_VERSION@")
+
+ include(CMakeFindDependencyMacro)
+
++if(@PXR_BUILD_IMAGING@)
++ if(@PXR_BUILD_OPENIMAGEIO_PLUGIN@)
++ find_dependency(OpenImageIO CONFIG)
++ endif()
++ if(@PXR_ENABLE_GL_SUPPORT@)
++ find_dependency(OpenGL REQUIRED)
++ endif()
++ if(@PXR_ENABLE_VULKAN_SUPPORT@)
++ if (NOT DEFINED Vulkan_DIR)
++ if (NOT [[@Vulkan_DIR@]] STREQUAL "")
++ set(Vulkan_DIR [[@Vulkan_DIR@]])
++ endif()
++ endif()
++ find_dependency(Vulkan REQUIRED)
++ find_dependency(unofficial-shaderc CONFIG)
++ find_dependency(VulkanMemoryAllocator CONFIG)
++ endif()
++endif()
++
+ # If Python support was enabled for this USD build, find the import
+ # targets by invoking the appropriate FindPython module. Use the same
+ # LIBRARY and INCLUDE_DIR settings from the original build if they
+@@ -101,7 +120,7 @@ if(@Imath_FOUND@)
+ set(Imath_DIR [[@Imath_DIR@]])
+ endif()
+ endif()
+- find_dependency(Imath)
++ find_dependency(Imath CONFIG)
+ endif()
+
+ # If this build is using a custom work implementation, find the package
+@@ -115,14 +134,14 @@ if(NOT "@PXR_WORK_IMPL_PACKAGE@" STREQUAL "")
+ find_dependency(@PXR_WORK_IMPL_PACKAGE@)
+ endif()
+
+-include("${PXR_CMAKE_DIR}/cmake/pxrTargets.cmake")
++include("${PXR_CMAKE_DIR}/pxrTargets.cmake")
+ if (TARGET usd_ms)
+ set(libs "usd_ms")
+ else()
+ set(libs "@PXR_ALL_LIBS@")
+ endif()
+ set(PXR_LIBRARIES "")
+-set(PXR_INCLUDE_DIRS "${PXR_CMAKE_DIR}/include")
++set(PXR_INCLUDE_DIRS "${PXR_CMAKE_DIR}/../../include")
+ string(REPLACE " " ";" libs "${libs}")
+ foreach(lib ${libs})
+ get_target_property(location ${lib} LOCATION)
diff --git a/vcpkg/ports/usd/004-fix_cmake_package.patch b/vcpkg/ports/usd/004-fix_cmake_package.patch
new file mode 100644
index 0000000..ad042d1
--- /dev/null
+++ b/vcpkg/ports/usd/004-fix_cmake_package.patch
@@ -0,0 +1,48 @@
+diff --git a/pxr/CMakeLists.txt b/pxr/CMakeLists.txt
+index b735c86ea..d30354114 100644
+--- a/pxr/CMakeLists.txt
++++ b/pxr/CMakeLists.txt
+@@ -23,7 +23,8 @@ endif()
+
+ pxr_core_epilogue()
+
+-export(PACKAGE pxr)
++include(GNUInstallDirs)
++include(CMakePackageConfigHelpers)
+
+ # XXX:
+ # Libraries specify the TBB::tbb target to link against TBB. This target
+@@ -59,11 +60,28 @@ foreach(property IN ITEMS
+ endif()
+ endforeach()
+
+-configure_file(pxrConfig.cmake.in
+- "${PROJECT_BINARY_DIR}/pxrConfig.cmake" @ONLY)
+-install(FILES
++configure_file(
++ "pxrConfig.cmake.in"
+ "${PROJECT_BINARY_DIR}/pxrConfig.cmake"
+- DESTINATION "${CMAKE_INSTALL_PREFIX}"
++ @ONLY
+ )
+
+-install(EXPORT pxrTargets DESTINATION "cmake")
++write_basic_package_version_file("${PROJECT_BINARY_DIR}/pxrConfigVersion.cmake"
++ VERSION "${PXR_MAJOR_VERSION}.${PXR_MINOR_VERSION}.${PXR_PATCH_VERSION}"
++ COMPATIBILITY AnyNewerVersion
++)
++
++install(
++ FILES
++ "${PROJECT_BINARY_DIR}/pxrConfig.cmake"
++ "${PROJECT_BINARY_DIR}/pxrConfigVersion.cmake"
++
++ DESTINATION
++ "${CMAKE_INSTALL_DATADIR}/pxr"
++)
++
++install(
++ EXPORT pxrTargets
++ # NAMESPACE "pxr::"
++ DESTINATION "${CMAKE_INSTALL_DATADIR}/pxr"
++)
diff --git a/vcpkg/ports/usd/007-fix_cmake_hgi_interop.patch b/vcpkg/ports/usd/007-fix_cmake_hgi_interop.patch
new file mode 100644
index 0000000..058241d
--- /dev/null
+++ b/vcpkg/ports/usd/007-fix_cmake_hgi_interop.patch
@@ -0,0 +1,23 @@
+diff --git a/pxr/imaging/hgiInterop/CMakeLists.txt b/pxr/imaging/hgiInterop/CMakeLists.txt
+index 64ebfcb9e..0087d89aa 100644
+--- a/pxr/imaging/hgiInterop/CMakeLists.txt
++++ b/pxr/imaging/hgiInterop/CMakeLists.txt
+@@ -15,6 +15,7 @@ set(optionalPrivateHeaders "")
+ list(APPEND optionalLibraries garch)
+
+ if (PXR_ENABLE_GL_SUPPORT)
++ list(APPEND optionalLibraries hgiGL)
+ list(APPEND optionalCppFiles opengl.cpp)
+ list(APPEND optionalPrivateHeaders opengl.h)
+ endif()
+@@ -32,6 +33,10 @@ if (PXR_ENABLE_METAL_SUPPORT)
+ list(APPEND optionalPrivateHeaders metal.h)
+ endif()
+
++if (NOT (PXR_ENABLE_GL_SUPPORT OR PXR_ENABLE_VULKAN_SUPPORT OR PXR_ENABLE_METAL_SUPPORT))
++ message(FATAL_ERROR "No valid GPU backend set for hgiInterop")
++endif()
++
+ pxr_library(hgiInterop
+ LIBRARIES
+ gf
diff --git a/vcpkg/ports/usd/008-fix_clang8_compiler_error.patch b/vcpkg/ports/usd/008-fix_clang8_compiler_error.patch
new file mode 100644
index 0000000..259ce8e
--- /dev/null
+++ b/vcpkg/ports/usd/008-fix_clang8_compiler_error.patch
@@ -0,0 +1,22 @@
+diff --git a/pxr/usd/pcp/primIndex.h b/pxr/usd/pcp/primIndex.h
+index 6b31c7da4..285d13fa7 100644
+--- a/pxr/usd/pcp/primIndex.h
++++ b/pxr/usd/pcp/primIndex.h
+@@ -69,7 +69,7 @@ public:
+ PcpPrimIndex(const PcpPrimIndex& rhs);
+
+ /// Move-construction
+- PcpPrimIndex(PcpPrimIndex &&rhs) noexcept = default;
++ PcpPrimIndex(PcpPrimIndex &&rhs) = default;
+
+ /// Assignment.
+ PcpPrimIndex &operator=(const PcpPrimIndex &rhs) {
+@@ -78,7 +78,7 @@ public:
+ }
+
+ // Move-assignment.
+- PcpPrimIndex &operator=(PcpPrimIndex &&rhs) noexcept = default;
++ PcpPrimIndex &operator=(PcpPrimIndex &&rhs) = default;
+
+ /// Swap the contents of this prim index with \p index.
+ PCP_API
diff --git a/vcpkg/ports/usd/009-vcpkg_install_folder_conventions.patch b/vcpkg/ports/usd/009-vcpkg_install_folder_conventions.patch
new file mode 100644
index 0000000..cbe8d8b
--- /dev/null
+++ b/vcpkg/ports/usd/009-vcpkg_install_folder_conventions.patch
@@ -0,0 +1,82 @@
+diff --git a/cmake/macros/Private.cmake b/cmake/macros/Private.cmake
+index 48fe107dd..79fdad022 100644
+--- a/cmake/macros/Private.cmake
++++ b/cmake/macros/Private.cmake
+@@ -1185,8 +1185,10 @@ function(_pxr_library NAME)
+ # XXX --- Why this difference?
+ _get_install_dir("plugin/usd" pluginInstallPrefix)
+ endif()
++ elseif(WIN32 AND args_TYPE STREQUAL "SHARED")
++ _get_install_dir("${CMAKE_INSTALL_BINDIR}/usd" pluginInstallPrefix)
+ else()
+- _get_install_dir("lib/usd" pluginInstallPrefix)
++ _get_install_dir("${CMAKE_INSTALL_LIBDIR}/usd" pluginInstallPrefix)
+ endif()
+ if(args_SUBDIR)
+ set(pluginInstallPrefix "${pluginInstallPrefix}/${args_SUBDIR}")
+@@ -1266,17 +1268,25 @@ function(_pxr_library NAME)
+ # Where do we install library to?
+ _get_install_dir("include" headerInstallDir)
+ _get_install_dir("include/${PXR_PREFIX}/${NAME}" headerInstallPrefix)
+- _get_install_dir("lib" libInstallPrefix)
++ if(WIN32 AND args_TYPE STREQUAL "SHARED")
++ _get_install_dir("${CMAKE_INSTALL_BINDIR}" libInstallPrefix)
++ _get_install_dir("${CMAKE_INSTALL_LIBDIR}" libInstallPrefixArchive)
++ else()
++ _get_install_dir("${CMAKE_INSTALL_LIBDIR}" libInstallPrefix)
++ _get_install_dir("${CMAKE_INSTALL_LIBDIR}" libInstallPrefixArchive)
++ endif()
+ if(isPlugin)
+ if(NOT isObject)
+ # A plugin embedded in the monolithic library is found in
+ # the usual library location, otherwise plugin libraries
+ # are in the plugin install location.
+ set(libInstallPrefix "${pluginInstallPrefix}")
++ set(libInstallPrefixArchive "${pluginInstallPrefix}")
+ endif()
+ endif()
+ if(args_SUBDIR)
+ set(libInstallPrefix "${libInstallPrefix}/${args_SUBDIR}")
++ set(libInstallPrefixArchive "${libInstallPrefixArchive}/${args_SUBDIR}")
+ endif()
+ # Return libInstallPrefix to caller.
+ if(args_LIB_INSTALL_PREFIX_RESULT)
+@@ -1408,8 +1418,8 @@ function(_pxr_library NAME)
+ # The former is for helper libraries for a third party application and
+ # the latter for core USD libraries.
+ _pxr_init_rpath(rpath "${libInstallPrefix}")
+- _pxr_add_rpath(rpath "${CMAKE_INSTALL_PREFIX}/${PXR_INSTALL_SUBDIR}/lib")
+- _pxr_add_rpath(rpath "${CMAKE_INSTALL_PREFIX}/lib")
++ _pxr_add_rpath(rpath "${CMAKE_INSTALL_PREFIX}/${PXR_INSTALL_SUBDIR}/${libInstallPrefix}")
++ _pxr_add_rpath(rpath "${CMAKE_INSTALL_PREFIX}/${libInstallPrefix}")
+ _pxr_install_rpath(rpath ${NAME})
+
+ #
+@@ -1450,14 +1460,14 @@ function(_pxr_library NAME)
+ if(isPlugin)
+ install(
+ TARGETS ${NAME}
+- LIBRARY DESTINATION ${libInstallPrefix}
+- ARCHIVE DESTINATION ${libInstallPrefix}
+- RUNTIME DESTINATION ${libInstallPrefix}
++ LIBRARY DESTINATION ${pluginInstallPrefix}
++ ARCHIVE DESTINATION ${pluginInstallPrefix}
++ RUNTIME DESTINATION ${pluginInstallPrefix}
+ )
+ if(WIN32)
+ install(
+ FILES $<TARGET_PDB_FILE:${NAME}>
+- DESTINATION ${libInstallPrefix}
++ DESTINATION ${pluginInstallPrefix}
+ OPTIONAL
+ )
+ endif()
+@@ -1482,7 +1492,7 @@ function(_pxr_library NAME)
+ TARGETS ${NAME}
+ EXPORT pxrTargets
+ LIBRARY DESTINATION ${libInstallPrefix}
+- ARCHIVE DESTINATION ${libInstallPrefix}
++ ARCHIVE DESTINATION ${libInstallPrefixArchive}
+ RUNTIME DESTINATION ${libInstallPrefix}
+ )
+ endif()
diff --git a/vcpkg/ports/usd/010-cmake_export_plugin_as_modules.patch b/vcpkg/ports/usd/010-cmake_export_plugin_as_modules.patch
new file mode 100644
index 0000000..d4820ba
--- /dev/null
+++ b/vcpkg/ports/usd/010-cmake_export_plugin_as_modules.patch
@@ -0,0 +1,34 @@
+diff --git a/cmake/macros/Private.cmake b/cmake/macros/Private.cmake
+index 79fdad022..799ce8801 100644
+--- a/cmake/macros/Private.cmake
++++ b/cmake/macros/Private.cmake
+@@ -1238,11 +1238,16 @@ function(_pxr_library NAME)
+
+ else()
+ # Building an explicitly shared library or plugin.
+- add_library(${NAME}
+- SHARED
+- ${args_CPPFILES}
+- ${args_PUBLIC_HEADERS}
+- ${args_PRIVATE_HEADERS}
++ if(isPlugin)
++ add_library(${NAME} MODULE)
++ else()
++ add_library(${NAME} SHARED)
++ endif()
++ target_sources(${NAME}
++ PRIVATE
++ ${args_CPPFILES}
++ ${args_PUBLIC_HEADERS}
++ ${args_PRIVATE_HEADERS}
+ )
+ if(PXR_PY_UNDEFINED_DYNAMIC_LOOKUP)
+ # When not explicitly linking to the python lib we need to allow
+@@ -1460,6 +1465,7 @@ function(_pxr_library NAME)
+ if(isPlugin)
+ install(
+ TARGETS ${NAME}
++ EXPORT pxrTargets
+ LIBRARY DESTINATION ${pluginInstallPrefix}
+ ARCHIVE DESTINATION ${pluginInstallPrefix}
+ RUNTIME DESTINATION ${pluginInstallPrefix}
diff --git a/vcpkg/ports/usd/013-openimageio-3.patch b/vcpkg/ports/usd/013-openimageio-3.patch
new file mode 100644
index 0000000..97841d2
--- /dev/null
+++ b/vcpkg/ports/usd/013-openimageio-3.patch
@@ -0,0 +1,13 @@
+diff --git a/pxr/imaging/plugin/hioOiio/oiioImage.cpp b/pxr/imaging/plugin/hioOiio/oiioImage.cpp
+index ad08cb5e1..0e27b9180 100644
+--- a/pxr/imaging/plugin/hioOiio/oiioImage.cpp
++++ b/pxr/imaging/plugin/hioOiio/oiioImage.cpp
+@@ -810,7 +810,7 @@ HioOIIO_Image::Write(StorageSpec const & storage,
+ }
+
+ // Read from storage
+- ImageBuf src(_filename, spec, storage.data);
++ ImageBuf src(spec, storage.data);
+ ImageBuf *image = &src;
+
+ // Flip top-to-bottom
diff --git a/vcpkg/ports/usd/portfile.cmake b/vcpkg/ports/usd/portfile.cmake
new file mode 100644
index 0000000..416b8bc
--- /dev/null
+++ b/vcpkg/ports/usd/portfile.cmake
@@ -0,0 +1,135 @@
+# USD plugins do not produce .lib
+set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)
+
+# Proper support for a true static usd build is left as a future port improvement.
+vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+
+# zero-pad version components to two digits
+string(REPLACE "." ";" version_components ${VERSION})
+foreach(component IN LISTS version_components)
+ string(LENGTH ${component} component_length)
+ if(component_length LESS 2)
+ list(APPEND USD_VERSION "0${component}")
+ else()
+ list(APPEND USD_VERSION "${component}")
+ endif()
+endforeach()
+string(JOIN "." USD_VERSION ${USD_VERSION})
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO PixarAnimationStudios/OpenUSD
+ REF "v${USD_VERSION}"
+ SHA512 fbe1e632473883e47f4bfeb16cab314bbbe8a7b404a5c071ca613bbf288526e505edd7a5edfdd9f85dd16da6d0d91fa0d4f8c783882094d3691f77685817fea6
+ HEAD_REF release
+ PATCHES
+ 003-fix-dep.patch
+ 004-fix_cmake_package.patch
+ 007-fix_cmake_hgi_interop.patch
+ 008-fix_clang8_compiler_error.patch
+ 009-vcpkg_install_folder_conventions.patch
+ 010-cmake_export_plugin_as_modules.patch
+ 013-openimageio-3.patch
+)
+
+# Changes accompanying 003-fix-dep.patch
+file(REMOVE
+ "${SOURCE_PATH}/cmake/modules/FindOpenColorIO.cmake"
+ "${SOURCE_PATH}/pxr/imaging/hgiVulkan/vk_mem_alloc.cpp"
+ "${SOURCE_PATH}/pxr/imaging/hgiVulkan/vk_mem_alloc.h"
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ imaging PXR_BUILD_IMAGING
+ imaging PXR_BUILD_USD_IMAGING
+ imaging PXR_ENABLE_GL_SUPPORT
+ materialx PXR_ENABLE_MATERIALX_SUPPORT
+ openimageio PXR_BUILD_OPENIMAGEIO_PLUGIN
+ vulkan PXR_ENABLE_VULKAN_SUPPORT
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS ${FEATURE_OPTIONS}
+ -DPXR_BUILD_DOCUMENTATION:BOOL=OFF
+ -DPXR_BUILD_EXAMPLES:BOOL=OFF
+ -DPXR_BUILD_TESTS:BOOL=OFF
+ -DPXR_BUILD_TUTORIALS:BOOL=OFF
+ -DPXR_BUILD_USD_TOOLS:BOOL=OFF
+
+ -DPXR_BUILD_ALEMBIC_PLUGIN:BOOL=OFF
+ -DPXR_BUILD_DRACO_PLUGIN:BOOL=OFF
+ -DPXR_BUILD_EMBREE_PLUGIN:BOOL=OFF
+ -DPXR_BUILD_PRMAN_PLUGIN:BOOL=OFF
+
+ -DPXR_ENABLE_OPENVDB_SUPPORT:BOOL=OFF
+ -DPXR_ENABLE_PTEX_SUPPORT:BOOL=OFF
+
+ -DPXR_PREFER_SAFETY_OVER_SPEED:BOOL=ON
+
+ -DPXR_ENABLE_PYTHON_SUPPORT:BOOL=OFF
+ -DPXR_USE_DEBUG_PYTHON:BOOL=OFF
+ MAYBE_UNUSED_VARIABLES
+ PXR_USE_PYTHON_3
+ PYTHON_EXECUTABLE
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+# Handle debug path for USD plugins
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ file(GLOB_RECURSE debug_targets
+ "${CURRENT_PACKAGES_DIR}/debug/share/pxr/*-debug.cmake"
+ )
+ foreach(debug_target IN LISTS debug_targets)
+ file(READ "${debug_target}" contents)
+ string(REPLACE "\${_IMPORT_PREFIX}/usd" "\${_IMPORT_PREFIX}/debug/usd" contents "${contents}")
+ string(REPLACE "\${_IMPORT_PREFIX}/plugin" "\${_IMPORT_PREFIX}/debug/plugin" contents "${contents}")
+ file(WRITE "${debug_target}" "${contents}")
+ endforeach()
+endif()
+
+vcpkg_cmake_config_fixup(PACKAGE_NAME "pxr")
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+)
+
+if(VCPKG_TARGET_IS_WINDOWS)
+ # Move all dlls to bin
+ file(GLOB RELEASE_DLL ${CURRENT_PACKAGES_DIR}/lib/*.dll)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin)
+ if(NOT VCPKG_BUILD_TYPE)
+ file(GLOB DEBUG_DLL ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin)
+ endif()
+ foreach(CURRENT_FROM ${RELEASE_DLL} ${DEBUG_DLL})
+ string(REPLACE "/lib/" "/bin/" CURRENT_TO ${CURRENT_FROM})
+ file(RENAME ${CURRENT_FROM} ${CURRENT_TO})
+ endforeach()
+
+ function(file_replace_regex filename match_string replace_string)
+ file(READ ${filename} _contents)
+ string(REGEX REPLACE "${match_string}" "${replace_string}" _contents "${_contents}")
+ file(WRITE ${filename} "${_contents}")
+ endfunction()
+
+ # fix dll path for cmake
+ if(NOT VCPKG_BUILD_TYPE)
+ file_replace_regex(${CURRENT_PACKAGES_DIR}/share/pxr/pxrTargets-debug.cmake "debug/lib/([a-zA-Z0-9_]+)\\.dll" "debug/bin/\\1.dll")
+ endif()
+ file_replace_regex(${CURRENT_PACKAGES_DIR}/share/pxr/pxrTargets-release.cmake "lib/([a-zA-Z0-9_]+)\\.dll" "bin/\\1.dll")
+
+ # fix plugInfo.json for runtime
+ file(GLOB_RECURSE PLUGINFO_FILES ${CURRENT_PACKAGES_DIR}/lib/usd/*/resources/plugInfo.json)
+ file(GLOB_RECURSE PLUGINFO_FILES_DEBUG ${CURRENT_PACKAGES_DIR}/debug/lib/usd/*/resources/plugInfo.json)
+ foreach(PLUGINFO ${PLUGINFO_FILES} ${PLUGINFO_FILES_DEBUG})
+ file_replace_regex(${PLUGINFO} [=["LibraryPath": "../../([a-zA-Z0-9_]+).dll"]=] [=["LibraryPath": "../../../bin/\1.dll"]=])
+ endforeach()
+endif()
+
+# Handle copyright
+vcpkg_install_copyright(FILE_LIST ${SOURCE_PATH}/LICENSE.txt)
diff --git a/vcpkg/ports/usd/vcpkg.json b/vcpkg/ports/usd/vcpkg.json
new file mode 100644
index 0000000..5dcd262
--- /dev/null
+++ b/vcpkg/ports/usd/vcpkg.json
@@ -0,0 +1,74 @@
+{
+ "name": "usd",
+ "version": "25.8",
+ "description": "Universal Scene Description (USD) is an efficient, scalable system for authoring, reading, and streaming time-sampled scene description for interchange between graphics applications.",
+ "homepage": "https://github.com/PixarAnimationStudios/OpenUSD",
+ "license": null,
+ "supports": "!x86 & !(arm & windows) & !android",
+ "dependencies": [
+ "tbb",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "imaging": {
+ "description": "Enable the imaging components",
+ "dependencies": [
+ "opengl",
+ {
+ "name": "opensubdiv",
+ "default-features": false,
+ "features": [
+ {
+ "name": "opengl",
+ "platform": "!osx & !ios"
+ }
+ ]
+ }
+ ]
+ },
+ "materialx": {
+ "description": "Enable MaterialX support",
+ "dependencies": [
+ {
+ "name": "materialx",
+ "features": [
+ "glsl-generator",
+ "render"
+ ]
+ }
+ ]
+ },
+ "openimageio": {
+ "description": "Build OpenImageIO plugin",
+ "dependencies": [
+ "openimageio"
+ ]
+ },
+ "vulkan": {
+ "description": "Enable Vulkan based components",
+ "supports": "!ios",
+ "dependencies": [
+ "opengl",
+ {
+ "name": "opensubdiv",
+ "default-features": false,
+ "features": [
+ "opengl"
+ ]
+ },
+ "shaderc",
+ "vulkan",
+ "vulkan-memory-allocator",
+ "vulkan-utility-libraries"
+ ]
+ }
+ }
+}