199 lines
11 KiB
Plaintext
199 lines
11 KiB
Plaintext
/**
|
|
|
|
@page dependencies Dependencies
|
|
|
|
@section depContents Contents
|
|
- @ref depComponents
|
|
- @ref depDependencyTable
|
|
- @ref depKnownIssues
|
|
- @ref depInstallingDependencies
|
|
- @ref depUsingAptGet
|
|
- @ref depUsingHomebrew
|
|
<!-- - @ref depContents -->
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
@b Note: The dependency information on this page details a complete
|
|
requirements list for building OpenVDB as a @b standalone package. If you wish
|
|
to use OpenVDB with a supported 3rd party DCC (Houdini/Maya), make sure you've
|
|
first read the [Building OpenVDB](@ref build) information.
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
There are a number of optional and required dependencies necessary when
|
|
building different components of OpenVDB. Below you'll find a full list of all
|
|
dependencies, any minimum/recommended version requirements and some guides for
|
|
getting these dependencies installed. You'll also find information on any
|
|
known issues with particular software. Please report any issues not listed
|
|
here to the OpenVDB TSC.
|
|
|
|
Note that OpenVDB is production tested against the [VFX Reference Platform]
|
|
(https://www.vfxplatform.com/). Not all dependencies exist in the VFX
|
|
Reference Platform, but for those that do, their specified versions are
|
|
@b always recommended.
|
|
|
|
@section depComponents OpenVDB Components
|
|
|
|
Component | Requirements | Optional
|
|
----------------------- | ----------------------------------------------- | --------
|
|
OpenVDB Core Library | CMake, C++17 compiler, TBB::tbb | Blosc, ZLib, Log4cplus, Imath::Imath, Boost::iostream
|
|
OpenVDB Print | Core Library dependencies | -
|
|
OpenVDB LOD | Core Library dependencies | -
|
|
OpenVDB Render | Core Library dependencies | OpenEXR, Imath::Imath, libpng
|
|
OpenVDB View | Core Library dependencies, OpenGL, GLFW3, GLEW* | -
|
|
OpenVDB Python | Core Library dependencies, Python, nanobind | NumPy
|
|
OpenVDB AX | Core Library dependencies, LLVM | Bison, Flex
|
|
NanoVDB | - | Core Library, CUDA, TBB, Blosc, ZLib
|
|
OpenVDB UnitTests | Core Library dependencies, GoogleTest | CppUnit**
|
|
OpenVDB Documentation | Doxygen | -
|
|
|
|
- @b * GLEW is only required for building the vdb_view binary on Windows.
|
|
- @b ** CppUnit is only required for building the AX unit tests.
|
|
- @b Note - Bison and Flex are only required for re-generation of the AX
|
|
grammar which is not typically necessary for the majority of users.
|
|
|
|
@subsection depDependencyTable Dependency Table
|
|
|
|
Package | Minimum | Recommended | Description | apt-get | Homebrew | Source
|
|
-------------- | ------- | ----------- | ----------------------------------------------------------------- | ------- | -------- | ------
|
|
CMake | 3.20 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org
|
|
GCC | 11.2.1 | 11.2.1 | C++ 17 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc
|
|
Clang | 5.0 | Latest | C++ 17 Compiler: A C language family frontend for LLVM | Y | Y | https://clang.llvm.org
|
|
Intel ICC | 19 | Latest | C++ 17 Compiler: Intels C++ Compiler | Y | Y | https://software.intel.com/en-us/c-compilers
|
|
MSVC | 19.30 | 19.30 | C++ 17 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs
|
|
Imath | 3.1 | Latest | Half precision floating points | Y | Y | http://www.openexr.com
|
|
OpenEXR | 3.1 | Latest | EXR serialization support | Y | Y | http://www.openexr.com
|
|
TBB | 2020.3 | 2020.3 | Threading Building Blocks - template library for task parallelism | Y | Y | https://www.threadingbuildingblocks.org
|
|
ZLIB | 1.2.7 | Latest | Compression library for disk serialization compression | Y | Y | https://www.zlib.net
|
|
Boost | 1.80 | 1.82 | Components: iostreams | Y | Y | https://www.boost.org
|
|
LLVM | 13.0.0 | 15.0.0* | Target-independent code generation | Y | Y | https://llvm.org/
|
|
Bison | 3.7.0 | 3.7.0 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc
|
|
Flex | 2.6.4 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex
|
|
Python | 3.10 | 3.11 | The python interpreter and libraries | Y | Y | https://www.python.org
|
|
nanobind | 2.0.0 | 2.1.0 | C++/python bindings | Y | Y | https://nanobind.readthedocs.io
|
|
NumPy | 1.23.0 | 1.26.0 | Scientific computing with Python | Y | Y | http://www.numpy.org
|
|
GoogleTest | 1.10 | Latest | A unit testing framework module for C++ | Y | Y | https://github.com/google/googletest
|
|
CppUnit | 1.10 | Latest | A unit testing framework module for C++ | N | Y | https://freedesktop.org/wiki/Software/cppunit
|
|
Blosc | 1.17.0* | 1.17.0 | Recommended dependency for improved disk compression | Y | Y | https://github.com/Blosc/c-blosc/releases
|
|
Log4cplus | 1.1.2 | Latest | An optional dependency for improved OpenVDB Logging | Y | Y | https://github.com/log4cplus/log4cplus
|
|
libpng | - | Latest | Library for manipulating PNG images | Y | Y | http://www.libpng.org/pub/png/libpng.html
|
|
GLFW | 3.1 | > 3.3 | Simple API for OpenGL development | Y | Y | https://www.glfw.org
|
|
OpenGL | 3.2 | Latest | Environment for developing portable graphics applications | Y | Y | https://www.opengl.org
|
|
GLEW | 1.0.0 | Latest | A cross-platform OpenGL extension loading library. | Y | Y | http://glew.sourceforge.net
|
|
CUDA | - | Latest | Parallel computing platform for graphical processing units. | Y | N | https://developer.nvidia.com/cuda-downloads
|
|
Doxygen | 1.8.8 | 1.8.11 | Documentation generation from C++ | Y | Y | http://www.doxygen.nl
|
|
|
|
- @b * See the note in [known issues](@ref depKnownIssues) regarding supported blosc/llvm versions.
|
|
|
|
@subsection depKnownIssues Known Issues
|
|
|
|
- @b LLVM >= 15. LLVM has recently changed their IR pointer data types to be
|
|
completely opaque. Some support is provided in LLVM 15 but tests with AX show
|
|
that this is extremely unstable. AX currently only supports LLVM versions up
|
|
until 14.X.X. See https://llvm.org/docs/OpaquePointers.html for more details.
|
|
|
|
- @b GLFW: Crash with GLFW 3.2.1 when used with EGL on Linux. OpenVDB View may
|
|
segfault on closure. Fixed in GLFW 3.3
|
|
|
|
- @b Blosc: OpenVDB has historically used an old version of blosc (1.5.0) to
|
|
serialize .vdb files. OpenVDB has moved to a new blosc version minimum of
|
|
1.17.0. We have tested a range of blosc versions and found that the following
|
|
versions are NOT compatible with OpenVDB caches written using blosc 1.5.0.
|
|
Additionally these versions of blosc may generally not be compatible with OpenVDB
|
|
itself. Avoid using these versions and upgrade to the new minimum of 1.17.0 where
|
|
possible.
|
|
|
|
- All versions from 1.11.0 through to, but excluding, 1.14.0.
|
|
- Versions 1.16.0 and 1.16.1.
|
|
|
|
For more information see:
|
|
|
|
- https://www.blosc.org/posts/new-forward-compat-policy/
|
|
- https://github.com/Blosc/c-blosc/issues/260
|
|
- https://github.com/Blosc/c-blosc/issues/261
|
|
|
|
@section depInstallingDependencies Installing Dependencies
|
|
|
|
This section details a number of ways to get you up and running with the
|
|
required OpenVDB dependencies.
|
|
|
|
@subsection depUsingAptGet Using UNIX apt-get
|
|
|
|
You can use apt to automatically install required packages. Note that different
|
|
Ubuntu distributions will have different versions available. You can use apt
|
|
pinning to request newer versions of specific package from later distributions
|
|
if the required version isn't available by default (see
|
|
[man apt_preferences](https://linux.die.net/man/5/apt_preferences)). For
|
|
example, the below settings will request TBB specifically from Ubuntu 22.04
|
|
(Jammy).
|
|
|
|
@code{.sh}
|
|
Package: libtbb-dev
|
|
Pin: release n=jammy
|
|
Pin-Priority: 990
|
|
@endcode
|
|
|
|
Alternatively you can install any missing dependencies manually or through
|
|
other package managers.
|
|
|
|
@code{.sh}
|
|
#!/bin/bash
|
|
# Core library
|
|
apt-get install cmake # CMake
|
|
apt-get install libtbb-dev # TBB
|
|
apt-get install zlibc # zlib
|
|
apt-get install libboost-iostreams-dev # Boost::iostream
|
|
apt-get install libblosc-dev # Blosc
|
|
# AX
|
|
apt-get install llvm-15-dev # LLVM
|
|
# Python
|
|
apt-get install python-dev # Python
|
|
apt-get install python-numpy # NumPy
|
|
pip install nanobind # nanobind
|
|
# Optional
|
|
apt-get install libpng-dev # libpng
|
|
apt-get install libopenexr-dev # OpenEXR
|
|
apt-get install liblog4cplus-dev # Log4cplus
|
|
apt-get install googletest # GoogleTest
|
|
apt-get install libcppunit-dev # CppUnit
|
|
# vdb_view
|
|
apt-get install libglfw3-dev # GLFW
|
|
# Documentation
|
|
apt-get install doxygen # doxygen
|
|
# CUDA for NanoVDB
|
|
apt-get install nvidia-cuda-toolkit # CUDA
|
|
@endcode
|
|
|
|
@subsection depUsingHomebrew Using Homebrew
|
|
|
|
[Homebrew](https://brew.sh/) is a package manager for UNIX systems and is
|
|
an alternative to apt-get or manual installation from source.
|
|
|
|
@code{.sh}
|
|
#!/bin/bash
|
|
# Core library
|
|
brew install cmake # CMake
|
|
brew install tbb # TBB
|
|
brew install zlib # zlib
|
|
brew install boost # Boost
|
|
brew install c-blosc # blosc
|
|
# AX
|
|
brew install llvm # LLVM
|
|
# Python
|
|
brew install python # Python
|
|
brew install numpy # NumPy
|
|
brew install nanobind # nanobind
|
|
# Unit Tests
|
|
brew install gtest # GoogleTest
|
|
brew install cppunit # CppUnit
|
|
# vdb_view
|
|
brew install glfw # GLFW
|
|
# vdb_render
|
|
brew install openexr # OpenEXR
|
|
brew install libpng # libpng
|
|
# Documentation
|
|
brew install doxygen # Doxygen
|
|
@endcode
|
|
|
|
*/
|