vcpkg/ports/usd/009-vcpkg_install_folder_co...

132 lines
5.6 KiB
Diff

diff --git a/cmake/macros/Private.cmake b/cmake/macros/Private.cmake
index cddb4e0..3b06a87 100644
--- a/cmake/macros/Private.cmake
+++ b/cmake/macros/Private.cmake
@@ -1200,8 +1200,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}")
@@ -1281,17 +1283,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)
@@ -1423,8 +1433,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})
#
@@ -1472,14 +1482,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()
@@ -1488,7 +1498,7 @@ function(_pxr_library NAME)
TARGETS ${NAME}
EXPORT pxrTargets
LIBRARY DESTINATION ${libInstallPrefix}
- ARCHIVE DESTINATION ${libInstallPrefix}
+ ARCHIVE DESTINATION ${libInstallPrefixArchive}
RUNTIME DESTINATION ${libInstallPrefix}
)
if(WIN32)
@@ -1504,7 +1514,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/cmake/macros/Public.cmake b/cmake/macros/Public.cmake
index 5f6a545..83ff7d2 100644
--- a/cmake/macros/Public.cmake
+++ b/cmake/macros/Public.cmake
@@ -1068,6 +1068,17 @@ function(pxr_setup_plugins)
# top-level plugin area
_get_resources_dir_name(resourcesDir)
+ # Plug anchors its default search path to the directory holding the plug
+ # library and looks for "<that directory>/usd/plugInfo.json". The top
+ # level registry must therefore be installed next to the per-library
+ # resource trees, which _pxr_library places under the same directory the
+ # shared libraries themselves are installed to.
+ if(WIN32)
+ _get_install_dir("${CMAKE_INSTALL_BINDIR}/usd" pluginRegistryDir)
+ else()
+ _get_install_dir("${CMAKE_INSTALL_LIBDIR}/usd" pluginRegistryDir)
+ endif()
+
# Add extra plugInfo.json include paths to the top-level plugInfo.json,
# relative to that top-level file.
set(extraIncludes "")
@@ -1075,7 +1086,7 @@ function(pxr_setup_plugins)
foreach(dirName ${PXR_EXTRA_PLUGINS})
file(RELATIVE_PATH
relDirName
- "${CMAKE_INSTALL_PREFIX}/lib/usd"
+ "${CMAKE_INSTALL_PREFIX}/${pluginRegistryDir}"
"${CMAKE_INSTALL_PREFIX}/${dirName}"
)
set(extraIncludes "${extraIncludes},\n \"${relDirName}/\"")
@@ -1086,7 +1097,7 @@ function(pxr_setup_plugins)
"${plugInfoContents}")
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/plugins_plugInfo.json"
- DESTINATION lib/usd
+ DESTINATION "${pluginRegistryDir}"
RENAME "plugInfo.json"
)