Supported compilers for building libopenmpt:
Microsoft Visual Studio 2017 or higher, running on a amd64 build system (other target systems are supported)
Please note that we do not support building with a later Visual Studio installation with an earlier compiler version. This is because, while later Visual Studio versions allow installing earlier compilers to be available via the later version's environment, in this configuration, the earlier compiler will still use the later C and C++ runtime's headers and implementation, which significantly increases the matrix of possible configurations to test.
GCC 8.1 or higher
Clang 7 or higher
MinGW-W64 8.1 or higher (it is recommended to preferably use posix threading model as opposed to win32 threading model)
emscripten 1.39.1 or higher
DJGPP GCC 8.1 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)std::uintptr_t
(enforced by static_assert)std::endian::little != std::endian::big
(enforced
by static_assert)wchar_t
encoding is either UTF-16 or UTF-32 (implicitly assumed)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
signed
integer overflow is undefinedfloat
and double
can be non-IEEE754
libopenmpt can optionally support certain incomplete C++ implementations:
wchar_t
support (like DJGPP)std::random_device
(like Emscripten when
running in AudioWorkletProcessor
context)std::high_resolution_clock
(like
Emscripten when running in AudioWorkletProcessor
context)Required compilers to use libopenmpt:
J2B support requires an inflate (deflate decompression) implementation:
MO3 support requires:
Building on Unix-like systems requires:
The Autotools-based build system requires:
Building the source packages additionally requires: