/** @page dependencies Dependencies @section depContents Contents - @ref depComponents - @ref depDependencyTable - @ref depKnownIssues - @ref depInstallingDependencies - @ref depUsingAptGet - @ref depUsingHomebrew - @ref depManInstall ------------------------------------------------------------------------------ @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++14 compiler, TBB::tbb, Boost::system, Boost::iostream | Blosc, ZLib, Log4cplus, IlmBase::Half OpenVDB Print | Core Library dependencies | - OpenVDB LOD | Core Library dependencies | - OpenVDB Render | Core Library dependencies | OpenEXR, IlmBase, libpng OpenVDB View | Core Library dependencies, OpenGL, GLFW3, GLEW* | - OpenVDB Python | Core Library dependencies, Python, Boost::python | Boost::numpy, NumPy OpenVDB AX | Core Library dependencies, LLVM | Bison, Flex 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.12 | Latest | Cross-platform family of tools designed to help build software | Y | Y | https://cmake.org GCC | 6.3.1 | 6.3.1 | C++ 14 Compiler: The GNU Compiler Collection | Y | Y | https://www.gnu.org/software/gcc Clang | 3.8 | Latest | C++ 14 Compiler: A C language family frontend for LLVM | Y | Y | https://clang.llvm.org Intel ICC | 17 | Latest | C++ 14 Compiler: Intels C++ Compiler | Y | Y | https://software.intel.com/en-us/c-compilers MSVC | 19.10 | Latest | C++ 14 Compiler: Microsoft Visual C++ Compiler | Y | Y | https://visualstudio.microsoft.com/vs IlmBase | 2.2** | 2.3 | Used half precision floating points and EXR serialization support | Y | Y | http://www.openexr.com OpenEXR | 2.2** | 2.3 | EXR serialization support | Y | Y | http://www.openexr.com TBB | 2018 | 2018 | 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.66 | 1.66 | Components: system, iostreams, python, numpy | Y | Y | https://www.boost.org LLVM | 6.0.0 | 8.0.0 | Target-independent code generation | Y | Y | https://llvm.org/ Bison | 3.0.0 | 3.0.5 | General-purpose parser generator | Y | Y | https://www.gnu.org/software/gcc Flex | 2.6 | 2.6.4 | Fast lexical analyzer generator | Y | Y | https://github.com/westes/flex Python | 2.7 | 2.7 | The python interpreter and libraries for C++/python bindings | Y | Y | https://www.python.org NumPy | 1.14.0 | 1.14.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.5.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 | Latest | 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 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 versions. - @b ** IlmBase/OpenEXR 2.2 is supported as Houdini 18.0 is shipped with VFX Reference Platform 2019, except for using older versions of these libraries. @subsection depKnownIssues Known Issues - @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 Boost 1.66/1.67 + @b Python3 + @b NumPy: Known issue on UNIX systems which can cause the below python runtime error. Consider updating to Boost 1.68 if you require both Python3 and NumPy support: @code{.sh} RuntimeError: FATAL: module compiled as little endian, but detected different endianness at runtime. @endcode - @b Blosc: OpenVDB has historically used an old version of blosc (1.5.0) to serialize .vdb files. OpenVDB is moving 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 @b Note:CppUnit is unavailable using apt-get. See the other package manager methods or the [manual installation](@ref depManInstall) options. @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-system-dev # Boost::system apt-get install libboost-iostreams-dev # Boost::iostream apt-get install libblosc-dev # Blosc # AX apt-get install llvm-8-dev # LLVM # Python apt-get install libboost-python-dev # Boost::python apt-get install libboost-numpy-dev # Boost::numpy apt-get install python-dev # Python apt-get install python-numpy # NumPy # Optional apt-get install libpng-dev # libpng apt-get install libilmbase-dev # IlmBase apt-get install libopenexr-dev # OpenEXR apt-get install liblog4cplus-dev # Log4cplus apt-get install googletest # GoogleTest # vdb_view apt-get install libglfw3-dev # GLFW # Documentation apt-get install doxygen # doxygen @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 boost-python # Boost-python brew install python # Python brew install numpy # NumPy # Unit Tests brew install gtest # GoogleTest brew install cppunit # CppUnit # vdb_view brew install glfw # GLFW # vdb_render brew install ilmbase # IlmBase brew install openexr # OpenEXR brew install libpng # libpng # Documentation brew install doxygen # Doxygen @endcode @subsection depManInstall UNIX Manual Installations Some dependencies may be unavailable using the above package manager methods. Below are manual installation methods for these packages. Note that you will have to provide your chosen installation locations to the OpenVDB CMake build system when building OpenVDB. @b CppUnit (for AX Unit Tests) @code{.sh} #!/bin/bash wget http://dev-www.libreoffice.org/src/cppunit-1.13.2.tar.gz tar -xvzf cppunit-1.13.2.tar.gz cd cppunit-1.13.2 # Install to users home directory - you may customise this location mkdir -p $HOME/cppunit ./configure --prefix=$HOME/cppunit make make install @endcode */