blob: 93661901789d2da228983fdc6901ab7b53ed98f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
Dependencies {#dependencies}
============
Dependencies
------------
### libopenmpt
* Supported compilers for building libopenmpt:
* **Microsoft Visual Studio 2015** or higher, running on a x86-64 build
system (other target systems are supported)
* **GCC 4.8** or higher
* **Clang 3.6** or higher
* **MinGW-W64 4.8** 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.38.5** or higher
* **DJGPP GCC 7.2** or higher
* any other **C++11 compliant** compiler (full standard compliant mode is
known to work with GCC >= 5.1 and Clang)
libopenmpt makes the following assumptions about the C++ implementation
used for building:
* `std::numeric_limits<unsigned char>::digits == 8` (enforced by
static_assert)
* `sizeof(char) == 1` (enforced by static_assert)
* existence of `std::uintptr_t` (enforced by static_assert)
* `sizeof(float) == 4` (enforced by static_assert)
* `sizeof(double) == 8` (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 also has experimental support for platforms without
`wchar_t` support like DJGPP
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
* 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++11** / **C++14** / **C++17** compatible compiler should work
with the C++ API.
* **J2B** support requires an inflate (deflate decompression) implementation:
* **zlib**
* **miniz** can be used internally if no zlib is available.
* Built-in **MO3** support requires:
* **libmpg123 >= 1.14.0**
* **libogg**
* **libvorbis**
* **libvorbisfile**
* Instead of libmpg123, **minimp3 by Lion (github.com/lieff)** can be used
internally to decode MP3 samples.
* Instead of libogg, libvorbis and libvorbisfile, **stb_vorbis** can be
used internally to decode Vorbis samples.
* 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 2015** or higher, running on a x86-64 build
system (other target systems are supported)
* **GCC 4.8** or higher
* **Clang 3.6** or higher
* **MinGW-W64 4.8** or higher
* **DJGPP GCC 7.2** or higher
* any **C++11 compliant** compiler
* Live sound output requires one of:
* **PulseAudio**
* **SDL 2**
* **SDL 1.2**
* **PortAudio v19**
* **Win32**
* **liballegro 4.2** on DJGPP/DOS
Optional dependencies
---------------------
### libopenmpt
* Character set conversion can use one of:
* **Win32**
* **iconv**
* **C++11** codecvt_utf8
instead of the internal conversion tables and functions.
* **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
* gzip
* help2man
* libtool
* subversion
* tar
* xpath (libxml-xpath-perl)
* zip
|