From 23767937ef6bd61736dae09da0fff0a69b37aa5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 1 Sep 2020 17:29:01 +0200 Subject: USD: remove library initialisation hack Remove the hack for library initialisation; this is no longer necessary as the required information can be passed to the USD library after its static initialisers have run. This new approach is compatible with both the patched and original USD library. This means that platform maintainers don't need to rebuild the USD library until the next upgrade. Manifest Task: https://developer.blender.org/T80320 --- build_files/build_environment/patches/usd.diff | 71 -------------------------- 1 file changed, 71 deletions(-) (limited to 'build_files') diff --git a/build_files/build_environment/patches/usd.diff b/build_files/build_environment/patches/usd.diff index fe767829a70..27b4955f849 100644 --- a/build_files/build_environment/patches/usd.diff +++ b/build_files/build_environment/patches/usd.diff @@ -10,77 +10,6 @@ diff -x .git -ur usd.orig/cmake/defaults/Packages.cmake external_usd/cmake/defau 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.orig 2020-06-12 17:20:07.478199779 +0200 -+++ external_usd/pxr/base/plug/initConfig.cpp 2020-06-12 17:25:28.648588552 +0200 -@@ -69,10 +69,40 @@ - - 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 result; - - std::vector debugMessages; - -+ // 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. Note that this can fail when pxr -@@ -114,9 +144,24 @@ - _AppendPathList(&result, installLocation, binaryPath); - #endif // PXR_INSTALL_LOCATION - -- Plug_SetPaths(result, debugMessages); --} -+ 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, debugMessages); - } - - 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_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 -- cgit v1.2.3