This section summarizes the internal and external dependencies in Pastel.
The dependencies between Pastel’s sub-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 (transitively reduced) graph summarizes the internal dependencies, as well as external dependencies.
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
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 refer’s to Threading Building Blocks’s include files in the form
Pastel integrates a minimally modified version of the official Mersenne Twister source code directly into the PastelSys library. No installation is needed.
The documentation for Pastel is written in Remark. This library is not required to build Pastel.
The build-system is written in CMake. 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. This library is required to build Pastel. It is not required to use the built libraries.