forked from bartvdbraak/blender
42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
|
# 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
|