diff options
Diffstat (limited to 'vcpkg/ports/usd')
| -rw-r--r-- | vcpkg/ports/usd/003-fix-dep.patch | 165 | ||||
| -rw-r--r-- | vcpkg/ports/usd/004-fix_cmake_package.patch | 48 | ||||
| -rw-r--r-- | vcpkg/ports/usd/007-fix_cmake_hgi_interop.patch | 23 | ||||
| -rw-r--r-- | vcpkg/ports/usd/008-fix_clang8_compiler_error.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/usd/009-vcpkg_install_folder_conventions.patch | 82 | ||||
| -rw-r--r-- | vcpkg/ports/usd/010-cmake_export_plugin_as_modules.patch | 34 | ||||
| -rw-r--r-- | vcpkg/ports/usd/013-openimageio-3.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/usd/portfile.cmake | 135 | ||||
| -rw-r--r-- | vcpkg/ports/usd/vcpkg.json | 74 |
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" + ] + } + } +} |