Skip to content

Dependencies

Mohammed Boujemaoui Boulaghmoudi edited this page Oct 7, 2018 · 3 revisions

Dependencies

The eDSP project is a header-only library that relies on a C++14 compiler and the standard library (STL). A recent version of CMake is required. The minimum is 3.4, but tested primarily with 3.6 and newer.

However some features relies in other packages for performance reasons. Those are the list of external tools dependencies:

Library License Dependencies Description
libfftw GPL Spectral Integrates one of the fastest FFT implementations.
libsamplerate BSD 2-c Codec Integrates an efficient re-sampling algorithm.
libaudiofile LGPL Codec Integrates an efficient decoder/encoder for different audio formats.
libsndfile LGPL Codec Integrates an efficient decoder/encoder for different audio formats.
libgtest-dev BSD 3-c Test Integrates a simple and modern framework for testing.
libbenchmark Apache 2 Benchmark Integrates a simple and modern framework for benchmarking.
LibYAML MIT IO YAML files input/output
TagLib Mozilla MIR Reading audio meta-data tags.

Installing dependencies on Linux

All the listed dependencies are available in the official repositories of almost all modern distributions. For instance, on Debian/Ubuntu systems:

sudo apt-get install build-essential libyaml-dev libfftw3-dev libaudiofile-dev libsamplerate0-dev libtag1-dev libsndfile1-dev

Installing dependencies on Mac OS X

For the installation of the different packages, we recommend the usage of the Homebrew package manager. To install the dependencies run:

brew install libyaml fftw libsamplerate libtag limaudiofile libsndfile

Third-Party source code

eDSP relies on a C++14 compiler. There are plenty of cool features not integrated in the standard or developed in latest versions. To keep the compatibility while at the same time provide efficient and modern features, eDSP uses some third-party files. Check this table for details:

File License Description
nonstd/variant.hpp BSL 1.0 Implementation of the C++17 std::variant compatible with older compilers.
nonstd/optional.hpp BSL 1.0 Implementation of the C++17 std::optional compatible with older compilers.
nonstd/expected.hpp BSL 1.0 expected lite is a single-file header-only library for objects that either represent a valid value or an error that you can pass by value.
nonstd/span.hpp BSL 1.0 The class template span describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero.
nonstd/any.hpp BSL 1.0 Implementation of the C++17 std::any compatible with older compilers.
nonstd/string_view.hpp BSL 1.0 Implementation of the C++17 std::string_view compatible with older compilers.
nonstd/ring_buffer BSL 1.0 ring-span lite is a single-file header-only library to represent a circular buffer view on a container.