This upgrade required a few changes: - Some parts of our patch are no longer necessary, as the USD library now includes those changes. - The rest of the patch needed adjustment as the `pxr/base/lib/*` directories in USD's source code have moved to `pxr/base/*`. - Updated library names on Windows -- thanks @LazyDodo. Note that this does not enable the USD Python API for inclusion in Blender. It just aims at being an as-simple-as-possible version upgrade of the USD library.
110 lines
4.2 KiB
Diff
110 lines
4.2 KiB
Diff
diff -x .git -ur usd.orig/cmake/defaults/Packages.cmake external_usd/cmake/defaults/Packages.cmake
|
|
--- usd.orig/cmake/defaults/Packages.cmake 2019-10-24 22:39:53.000000000 +0200
|
|
+++ external_usd/cmake/defaults/Packages.cmake 2019-11-28 13:00:33.185957483 +0100
|
|
@@ -64,7 +64,7 @@
|
|
endif()
|
|
|
|
# --TBB
|
|
-find_package(TBB REQUIRED COMPONENTS tbb)
|
|
+find_package(TBB)
|
|
add_definitions(${TBB_DEFINITIONS})
|
|
|
|
# --math
|
|
diff -x .git -ur usd.orig/pxr/base/plug/initConfig.cpp external_usd/pxr/base/plug/initConfig.cpp
|
|
--- usd.orig/pxr/base/plug/initConfig.cpp 2019-10-24 22:39:53.000000000 +0200
|
|
+++ external_usd/pxr/base/plug/initConfig.cpp 2019-12-11 11:00:37.643323127 +0100
|
|
@@ -69,8 +69,38 @@
|
|
|
|
ARCH_CONSTRUCTOR(Plug_InitConfig, 2, void)
|
|
{
|
|
+ /* The contents of this constructor have been moved to usd_initialise_plugin_path(...) */
|
|
+}
|
|
+
|
|
+}; // end of anonymous namespace
|
|
+
|
|
+/**
|
|
+ * The contents of this function used to be in the static constructor Plug_InitConfig.
|
|
+ * This static constructor made it impossible for Blender to pass a path to the USD
|
|
+ * library at runtime, as the constructor would run before Blender's main() function.
|
|
+ *
|
|
+ * This function is wrapped in a C function of the same name (defined below),
|
|
+ * so that it can be called from Blender's main() function.
|
|
+ *
|
|
+ * The datafiles_usd_path path is used to point to the USD plugin path when Blender
|
|
+ * has been installed. The fallback_usd_path path should point to the build-time
|
|
+ * location of the USD plugin files so that Blender can be run on a development machine
|
|
+ * without requiring an installation step.
|
|
+ */
|
|
+void
|
|
+usd_initialise_plugin_path(const char *datafiles_usd_path)
|
|
+{
|
|
std::vector<std::string> result;
|
|
|
|
+ // Add Blender-specific paths. They MUST end in a slash, or symlinks will not be treated as directory.
|
|
+ if (datafiles_usd_path != NULL && datafiles_usd_path[0] != '\0') {
|
|
+ std::string datafiles_usd_path_str(datafiles_usd_path);
|
|
+ if (datafiles_usd_path_str.back() != '/') {
|
|
+ datafiles_usd_path_str += "/";
|
|
+ }
|
|
+ result.push_back(datafiles_usd_path_str);
|
|
+ }
|
|
+
|
|
// Determine the absolute path to the Plug shared library.
|
|
// Any relative paths specified in the plugin search path will be
|
|
// anchored to this directory, to allow for relocatability.
|
|
@@ -94,9 +124,24 @@
|
|
_AppendPathList(&result, installLocation, sharedLibPath);
|
|
#endif // PXR_INSTALL_LOCATION
|
|
|
|
- Plug_SetPaths(result);
|
|
-}
|
|
+ if (!TfGetenv("PXR_PATH_DEBUG").empty()) {
|
|
+ printf("USD Plugin paths: (%zu in total):\n", result.size());
|
|
+ for(const std::string &path : result) {
|
|
+ printf(" %s\n", path.c_str());
|
|
+ }
|
|
+ }
|
|
|
|
+ Plug_SetPaths(result);
|
|
}
|
|
|
|
PXR_NAMESPACE_CLOSE_SCOPE
|
|
+
|
|
+/* Workaround to make it possible to pass a path at runtime to USD. */
|
|
+extern "C" {
|
|
+void
|
|
+usd_initialise_plugin_path(
|
|
+ const char *datafiles_usd_path)
|
|
+{
|
|
+ PXR_NS::usd_initialise_plugin_path(datafiles_usd_path);
|
|
+}
|
|
+}
|
|
diff -Naur external_usd_orig/pxr/base/tf/preprocessorUtils.h external_usd/pxr/base/tf/preprocessorUtils.h
|
|
--- external_usd_orig/pxr/base/tf/preprocessorUtils.h 2019-10-24 14:39:53 -0600
|
|
+++ external_usd/pxr/base/tf/preprocessorUtils.h 2020-01-14 09:30:18 -0700
|
|
@@ -189,7 +189,7 @@
|
|
/// Exapnds to 1 if the argument is a tuple, and 0 otherwise.
|
|
/// \ingroup group_tf_Preprocessor
|
|
/// \hideinitializer
|
|
-#if defined(ARCH_OS_WINDOWS)
|
|
+#if defined(ARCH_COMPILER_MSVC)
|
|
#define TF_PP_IS_TUPLE(sequence) \
|
|
BOOST_VMD_IS_TUPLE(sequence)
|
|
#else
|
|
diff -Naur external_usd_base/cmake/macros/Public.cmake external_usd/cmake/macros/Public.cmake
|
|
--- external_usd_base/cmake/macros/Public.cmake 2019-10-24 14:39:53 -0600
|
|
+++ external_usd/cmake/macros/Public.cmake 2020-01-11 13:33:29 -0700
|
|
@@ -996,6 +996,12 @@
|
|
foreach(lib ${PXR_OBJECT_LIBS})
|
|
string(TOUPPER ${lib} uppercaseName)
|
|
list(APPEND exports "${uppercaseName}_EXPORTS=1")
|
|
+ # When building for blender, we do NOT want to export all symbols on windows.
|
|
+ # This is a dirty hack, but USD makes it impossible to do the right thing
|
|
+ # with the default options exposed.
|
|
+ if (WIN32)
|
|
+ list(APPEND exports "PXR_STATIC=1")
|
|
+ endif()
|
|
endforeach()
|
|
foreach(lib ${PXR_OBJECT_LIBS})
|
|
set(objects "${objects};\$<TARGET_OBJECTS:${lib}>")
|