Library Dependencies¶
Blender depends on many libraries. The complete list and the versions in official releases can be found in the Blender repository:
build_files/build_environment/cmake/versions.cmake
Precompiled Libraries¶
Precompiled libraries are available for Windows, macOS and Linux in a GIT-LFS repository. These are the easiest and most reliable way to get a feature complete Blender build. Blender builds with these libraries are portable and can be run on other computers.
For Windows and macOS, precompiled libraries are automatically
downloaded when running make update
. Building library dependencies on
these platforms is normally only done by platform maintainers.
For Linux, precompiled libraries must be downloaded once manually as per
the build instructions, and can then be updated with make update
.
make deps¶
The Blender repository has a CMake based system to build all library dependencies from source. This is the system used to generate precompiled libraries for Windows, macOS and Linux.
The make deps
command performs the cmake setup and build. It is mainly
used by platform maintainers and is not tested to work on many different
operating system installs. A successful build may require some manual
configuration or edits to the code. Minimal instructions on how to use
it can be found in
build_files/build_environment/CMakeLists.txt.
System Packages¶
On Linux, the system package manager can also be used to install many dependencies. See the Linux build instructions for details.
The resulting builds will not be portable, but libraries can be shared with other software on the system.
The simplest way to install all needed packages is to run (from the blender source directory):
build_files/build_environment/install_linux_packages.py --all
Library support¶
The platform module is responsible for building/maintaining the third party
libraries Blender depends on. Every Blender release will have a Library update
issue which will be the central place to communicate with the platform module
pertaining the library work.
New Dependencies¶
If a module has the need/desire to take on an additional dependency the module can propose this to the admins.
This proposal should contain the following information:
- Name of the library
- Purpose of the library
- Expected benefits this library would bring to Blender
- Amount of integration work required
- Expected change in Blender on disk footprint and distribution
- License the library is under
- Copyrights of the library
If a library has additional required dependencies or optional dependencies that the module would like to have enabled the above information should be included for each of the downstream dependencies.
The platform module will script the new dependency(s) in the dependency builder for all currently supported platforms only after acceptance by the admins. The module requesting the dependency is not expected for scripting it but is welcome to do so if they like, the platform module must be included in code review in those cases.
Preliminary libraries to develop against may be requested but this is on a best effort basis and only after acceptance of the library by Blender admins.
Version updates of existing libraries¶
Requests for existing dependencies to be updated to a newer version can be made
in the Library update
issue for a release, by the following people:
- Any module member from a module that depends on a library
- Any member of the admin/release team
- Any member of the platform module
This request should include:
- The new version of the library
- Any License changes for the library since the previous version.
- Any Copyright changes for the library since the previous version.
- Any changes in dependencies (new/removed) of the library
If a library has additional required dependencies or optional dependencies that require version changes as well, the above information should be included each of the downstream dependencies.
The platform module will script the update, the module requesting the dependency is not expected for scripting it but is welcome to do so if they like, the platform module must be included in code review in those cases.
Any re-integration work that may need to be done shall be done by the module(s) depending on the library. Preliminary libraries to develop against may be requested but this is on a best effort basis.