cog/Frameworks/OpenMPT.old/OpenMPT/libopenmpt/dox/dependencies.md

123 lines
4.1 KiB
Markdown

Dependencies {#dependencies}
============
Dependencies
------------
### libopenmpt
* Supported compilers for building libopenmpt:
* **Microsoft Visual Studio 2017** or higher, running on a x86-64 build
system (other target systems are supported)
* **GCC 7.1** or higher
* **Clang 5** or higher
* **MinGW-W64 7.1** or higher (it is recommended to preferably use
posix threading model as opposed to win32 threading model, or at least
have mingw-std-threads available otherwise)
* **emscripten 1.39.1** or higher
* **DJGPP GCC 7.2** or higher
* any other **C++17 compliant** compiler
libopenmpt makes the following assumptions about the C++ implementation
used for building:
* `std::numeric_limits<unsigned char>::digits == 8` (enforced by
static_assert)
* existence of `std::uintptr_t` (enforced by static_assert)
* in C++20 mode, `std::endian::little != std::endian::big` (enforced
by static_assert)
* `wchar_t` encoding is either UTF-16 or UTF-32 (implicitly assumed)
* representation of basic source character set is ASCII (implicitly
assumed)
* representation of basic source character set is identical in char
and `wchar_t` (implicitly assumed)
libopenmpt does not rely on any specific implementation defined or
undefined behaviour (if it does, that's a bug in libopenmpt). In
particular:
* `char` can be `signed` or `unsigned`
* shifting signed values is implementation defined
* `signed` integer overflow is undefined
* `float` and `double` can be non-IEEE754
libopenmpt can optionally support for certain incomplete C++
implementations:
* platforms without `wchar_t` support (like DJGPP)
* platforms without working `std::random_device` (like Emscripten when
running in `AudioWorkletProcessor` context)
* platforms without working `std::high_resolution_clock` (like
Emscripten when running in `AudioWorkletProcessor` context)
* Required compilers to use libopenmpt:
* Any **C89** / **C99** / **C11** compatible compiler should work with
the C API as long as a **C99** compatible **stdint.h** is available.
* Any **C++17** compatible compiler should work with the C++ API.
* **J2B** support requires an inflate (deflate decompression) implementation:
* **zlib** (or **miniz** can be used internally)
* **MO3** support requires:
* **libmpg123 >= 1.14.0** (or **minimp3 by Lion (github.com/lieff)** can
be used internally)
* **libogg**, **libvorbis**, and **libvorbisfile** (or **stb_vorbis** can
be used internally)
* Building on Unix-like systems requires:
* **GNU make**
* **pkg-config**
* The Autotools-based build system requires:
* **pkg-config 0.24** or higher
* **zlib**
* **doxygen**
### openmpt123
* Supported compilers for building openmpt123:
* **Microsoft Visual Studio 2017** or higher, running on a x86-64 build
system (other target systems are supported)
* **GCC 7.1** or higher
* **Clang 5** or higher
* **MinGW-W64 7.1** or higher
* **DJGPP GCC 7.2** or higher
* any **C++17 compliant** compiler
* Live sound output requires one of:
* **PulseAudio**
* **SDL 2**
* **PortAudio v19**
* **Win32**
* **liballegro 4.2** on DJGPP/DOS
Optional dependencies
---------------------
### libopenmpt
* **doxygen 1.8** or higher is required to build the documentation.
### openmpt123
* Rendering to PCM files can use:
* **FLAC 1.2** or higher
* **libsndfile**
* **Win32** for WAVE
* raw PCM has no external dependencies
* **help2man** is required to build the documentation.
Source packages
---------------
Building the source packages additionally requires:
* 7z (7-zip)
* autoconf
* autoconf-archive
* automake
* awk (mawk)
* git
* gzip
* help2man
* libtool
* subversion
* tar
* xpath (libxml-xpath-perl)
* zip