This section summarizes the internal and external dependencies in Pastel.
The dependencies between Pastel’s sub-libraries and external libraries form an acyclic directed graph. Because of this, Pastel can be used either in its entirety or only as a subset if some functionality is not required. The following dependencies capture the transitively-reduced dependency-graph between the libraries.
Armadillo --> LAPACK, BLAS PastelSys --> Boost, Ranges-v3, Mersenne PastelGfx --> PastelMath, PastelGeometry PastelMath --> PastelSys, Armadillo PastelGeometry --> PastelMath PastelMatlab --> Matlab, PastelSys PastelGeometryMatlab --> PastelGeometry, PastelMatlab PastelSysMatlab --> PastelSys, PastelMatlab PastelMathMatlab --> PastelMath, PastelMatlab
Some, but not all, of the sub-libraries of Pastel are dependent on external libraries which must be installed in order to compile and link them. These external libraries are listed here. The detailed dependency relations are visualized in the graph above. The version number that follows the library name is the one that the current version of Pastel was used to develop against. This is useful to know in case a later version breaks backward compatibility.
Boost is licensed under the Boost license. Pastel only uses the template code found in Boost and thus requires no linking with object code. Pastel refers to Boost’s include files in the form
Ranges-v3 is used to handle sequences of objects generically. Ranges-v3 is licensed under the Boost Software License.
As of Visual Studio 2017, Visual Studio requires a specifically modified version of the library, because of insufficient support for the C++ standard.
Threading Building Blocks is licensed under the GPLv2 license, with the run-time exception. The latter specifically means that Pastel need not be made GPLv2 although it uses code from the TBB. This is similar to how the license of
libstdc++ works. Pastel refers to Threading Building Blocks’s include files in the form
Armadillo is used to interface with LAPACK and BLAS for matrix computations. Pastel refers to Armadillo’s include files in the form
armadillo. Armadillo is licensed under the Apache License 2.0.
LAPACK and BLAS are used for matrix computations, via Armadillo. Under Windows, we provide prebuilt versions of these libraries; these are the same that come with Armadillo. LAPACK is licensed under the Modified BSD license.
The following applications are used to either build Pastel or to generate its documentation.
Remark is used to generate the documentation for Pastel. It is not required to build Pastel.
CMake is used to provide a cross-platform build-system, to generate platform-specific build files. CMake takes in a generic description of the build-process and generates the build-files for a specific platform, such as Visual Studio projects, makefiles, or Xcode projects. The CMake application is required to build Pastel. It is not required to use the built libraries.
The following dependencies do not require any action to build Pastel.
Pastel integrates a minimally modified version of the official Mersenne Twister source code directly into the PastelSys library. No installation is needed.
Catch is used for unit-testing. It is integrated into Pastel.