aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/usd/portfile.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/usd/portfile.cmake')
-rw-r--r--vcpkg/ports/usd/portfile.cmake135
1 files changed, 135 insertions, 0 deletions
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)