[Bf-blender-cvs] [3b08062b343] tmp-vfx-platform-2023: MaterialX: various changes

Brecht Van Lommel noreply at git.blender.org
Mon Nov 28 18:35:53 CET 2022


Commit: 3b08062b343679cab3a5f72673100e139c17eda0
Author: Brecht Van Lommel
Date:   Thu Nov 24 19:50:00 2022 +0100
Branches: tmp-vfx-platform-2023
https://developer.blender.org/rB3b08062b343679cab3a5f72673100e139c17eda0

MaterialX: various changes

* Install datafiles in shared library folder
* Various fixes to make it work on macOS/Linux
* Disqble MaterialXRender modules
* Use sitecustomize instead of usercustomize mechanism, as the latter
  seems to be disabled by default and site seems more correct anyway.

===================================================================

M	build_files/build_environment/cmake/materialx.cmake
M	build_files/cmake/platform/platform_apple.cmake
A	release/scripts/site/sitecustomize.py
D	release/scripts/site/usercustomize.py
M	source/creator/CMakeLists.txt

===================================================================

diff --git a/build_files/build_environment/cmake/materialx.cmake b/build_files/build_environment/cmake/materialx.cmake
index eb6a22e8ad3..37913c74d6a 100644
--- a/build_files/build_environment/cmake/materialx.cmake
+++ b/build_files/build_environment/cmake/materialx.cmake
@@ -2,6 +2,7 @@
 
 set(MATERIALX_EXTRA_ARGS
   -DMATERIALX_BUILD_PYTHON=ON
+  -DMATERIALX_BUILD_RENDER=OFF
   -DMATERIALX_INSTALL_PYTHON=OFF
   -DMATERIALX_PYTHON_EXECUTABLE=${PYTHON_BINARY}
   -DMATERIALX_PYTHON_VERSION=${PYTHON_SHORT_VERSION}
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 07d7036f809..fca0c3a06c5 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -89,6 +89,14 @@ if(WITH_USD)
   add_bundled_libraries(usd/lib)
 endif()
 
+if(WITH_MATERIALX)
+  find_package(MaterialX)
+  set_and_warn_library_found("MaterialX" MaterialX_FOUND WITH_MATERIALX)
+  if(WITH_MATERIALX)
+    add_bundled_libraries(materialx/lib)
+  endif()
+endif()
+
 if(WITH_OPENSUBDIV)
   find_package(OpenSubdiv)
   add_bundled_libraries(opensubdiv/lib)
diff --git a/release/scripts/site/sitecustomize.py b/release/scripts/site/sitecustomize.py
new file mode 100644
index 00000000000..891930eb132
--- /dev/null
+++ b/release/scripts/site/sitecustomize.py
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Make shared libraries needed by modules available in standalone Python binary.
+
+import sys
+import os
+
+exe_dir, exe_file = os.path.split(sys.executable)
+is_python = exe_file.startswith("python")
+
+# Path to Blender shared libraries.
+shared_lib_dirname = "blender.shared" if sys.platform == "win32" else "lib"
+if is_python:
+    shared_lib_dir = os.path.abspath(os.path.join(exe_dir, "..", "..", "..", shared_lib_dirname))
+else:
+    shared_lib_dir = os.path.abspath(os.path.join(exe_dir, shared_lib_dirname))
+
+if sys.platform == "win32":
+    # Directory for extensions to find DLLs.
+    if is_python:
+        os.add_dll_directory(shared_lib_dir)
+
+    # Directory for USD extension to find DLLs.
+    import_paths = os.getenv("PXR_USD_WINDOWS_DLL_PATH")
+    if import_paths is None:
+        os.environ["PXR_USD_WINDOWS_DLL_PATH"] = shared_lib_dir
+
+    # OIIO will by default add all paths from the path variable to add_dll_directory
+    # problem there is that those folders will be searched before ours and versions of
+    # some dlls may be found that are not blenders and may not even be the right version
+    # causing compatibility issues.
+    os.environ["OIIO_LOAD_DLLS_FROM_PATH"] = "0"
+
+# MaterialX libraries, append if already specified.
+materialx_libs_dir = os.path.abspath(os.path.join(shared_lib_dir, "materialx", "libraries"))
+materialx_libs_env = os.getenv("MATERIALX_SEARCH_PATH")
+if materialx_libs_env is None:
+    os.environ["MATERIALX_SEARCH_PATH"] = materialx_libs_dir
+elif sys.platform == "win32":
+    os.environ["MATERIALX_SEARCH_PATH"] = materialx_libs_dir + ";" + materialx_libs_env
+else:
+    os.environ["MATERIALX_SEARCH_PATH"] = materialx_libs_dir + ":" + materialx_libs_env
diff --git a/release/scripts/site/usercustomize.py b/release/scripts/site/usercustomize.py
deleted file mode 100644
index 21f9acc5f05..00000000000
--- a/release/scripts/site/usercustomize.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Make shared libraries needed by modules available in standalone Python binary.
-
-import sys
-import os
-
-if sys.platform == 'win32':
-    exe_dir, exe_file = os.path.split(sys.executable)
-    if exe_file.startswith('python'):
-        blender_dir = os.path.abspath(os.path.join(exe_dir, '..', '..', '..','blender.shared'))
-        os.add_dll_directory(blender_dir)
-        # OIIO will by default add all paths from the path variable to add_dll_directory
-        # problem there is that those folders will be searched before ours and versions of
-        # some dlls may be found that are not blenders and may not even be the right version
-        # causing compatibility issues.
-        os.environ["OIIO_LOAD_DLLS_FROM_PATH"] = "0"
-
-        import_paths = os.getenv('PXR_USD_WINDOWS_DLL_PATH')
-        if import_paths is None:
-            os.environ["PXR_USD_WINDOWS_DLL_PATH"] = blender_dir
-
-        materialx_libs_dir = os.path.abspath(os.path.join(exe_dir, '..', '..', 'datafiles', 'materialx', 'libraries'))
-        materialx_libs_env = os.getenv('MATERIALX_SEARCH_PATH')
-        if materialx_libs_env is None:
-            os.environ["MATERIALX_SEARCH_PATH"] = materialx_libs_dir
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index f45e8b4b359..88751f7acf9 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -417,16 +417,19 @@ if(WITH_PYTHON)
     PATTERN "${ADDON_EXCLUDE_CONDITIONAL}" EXCLUDE
     PATTERN "${FREESTYLE_EXCLUDE_CONDITIONAL}" EXCLUDE
   )
-  if(WIN32)
-    install(
-      FILES ${CMAKE_SOURCE_DIR}/release/scripts/site/usercustomize.py
-      DESTINATION ${TARGETDIR_VER}/python/lib/site-packages
-    )
-  else()
-    install(
-      FILES ${CMAKE_SOURCE_DIR}/release/scripts/site/usercustomize.py
-      DESTINATION ${TARGETDIR_VER}/python/lib/python${PYTHON_VERSION}/site-packages
-    )
+
+  if(WITH_PYTHON_INSTALL)
+    if(WIN32)
+      install(
+        FILES ${CMAKE_SOURCE_DIR}/release/scripts/site/sitecustomize.py
+        DESTINATION ${TARGETDIR_VER}/python/lib/site-packages
+      )
+    else()
+      install(
+        FILES ${CMAKE_SOURCE_DIR}/release/scripts/site/sitecustomize.py
+        DESTINATION ${TARGETDIR_VER}/python/lib/python${PYTHON_VERSION}/site-packages
+      )
+    endif()
   endif()
   unset(ADDON_EXCLUDE_CONDITIONAL)
   unset(FREESTYLE_EXCLUDE_CONDITIONAL)
@@ -984,10 +987,6 @@ elseif(WIN32)
         ${LIBDIR}/materialx/bin/MaterialXGenMdl.dll
         ${LIBDIR}/materialx/bin/MaterialXGenOsl.dll
         ${LIBDIR}/materialx/bin/MaterialXGenShader.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderGlsl.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderHw.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderOsl.dll
-        ${LIBDIR}/materialx/bin/MaterialXRender.dll
       RELEASE
     )
     windows_install_shared_manifest(
@@ -998,10 +997,6 @@ elseif(WIN32)
         ${LIBDIR}/materialx/bin/MaterialXGenMdl_d.dll
         ${LIBDIR}/materialx/bin/MaterialXGenOsl_d.dll
         ${LIBDIR}/materialx/bin/MaterialXGenShader_d.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderGlsl_d.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderHw_d.dll
-        ${LIBDIR}/materialx/bin/MaterialXRenderOsl_d.dll
-        ${LIBDIR}/materialx/bin/MaterialXRender_d.dll
       DEBUG
     )
   endif()
@@ -1579,10 +1574,10 @@ if(WITH_USD)
   endif()
 endif()
 
-if(WITH_MATERIALX)
+if(WITH_MATERIALX AND TARGETDIR_LIB)
   install(
     DIRECTORY ${LIBDIR}/materialx/libraries
-    DESTINATION "${TARGETDIR_VER}/datafiles/materialx"
+    DESTINATION "${TARGETDIR_LIB}/materialx"
   )
 endif()



More information about the Bf-blender-cvs mailing list