libopenmpt  0.2.8762-autotools
cross-platform C++ and C library to decode tracked music files
libopenmpt_config.h
Go to the documentation of this file.
1 /*
2  * libopenmpt_config.h
3  * -------------------
4  * Purpose: libopenmpt public interface configuration
5  * Notes : (currently none)
6  * Authors: OpenMPT Devs
7  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
8  */
9 
10 #ifndef LIBOPENMPT_CONFIG_H
11 #define LIBOPENMPT_CONFIG_H
12 
19 /* provoke warnings if already defined */
20 #define LIBOPENMPT_API
21 #undef LIBOPENMPT_API
22 #define LIBOPENMPT_CXX_API
23 #undef LIBOPENMPT_CXX_API
24 
25 #if defined(__DOXYGEN__)
26 
27 #define LIBOPENMPT_API_HELPER_EXPORT
28 #define LIBOPENMPT_API_HELPER_IMPORT
29 #define LIBOPENMPT_API_HELPER_PUBLIC
30 #define LIBOPENMPT_API_HELPER_LOCAL
31 
32 #elif defined(_MSC_VER)
33 
34 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
35 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
36 #define LIBOPENMPT_API_HELPER_PUBLIC
37 #define LIBOPENMPT_API_HELPER_LOCAL
38 
39 #elif defined(__EMSCRIPTEN__)
40 
41 #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) __attribute__((used))
42 #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) __attribute__((used))
43 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used))
44 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
45 
46 #elif (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32)
47 
48 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
49 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
50 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
51 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
52 
53 #elif defined(__GNUC__) || defined(__clang__)
54 
55 #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default")))
56 #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default")))
57 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
58 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
59 
60 #elif defined(_WIN32)
61 
62 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
63 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
64 #define LIBOPENMPT_API_HELPER_PUBLIC
65 #define LIBOPENMPT_API_HELPER_LOCAL
66 
67 #else
68 
69 #define LIBOPENMPT_API_HELPER_EXPORT
70 #define LIBOPENMPT_API_HELPER_IMPORT
71 #define LIBOPENMPT_API_HELPER_PUBLIC
72 #define LIBOPENMPT_API_HELPER_LOCAL
73 
74 #endif
75 
76 #if defined(LIBOPENMPT_BUILD_DLL)
77 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_EXPORT
78 #elif defined(LIBOPENMPT_USE_DLL)
79 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_IMPORT
80 #else
81 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_PUBLIC
82 #endif
83 
84 #ifdef __cplusplus
85 
86 #define LIBOPENMPT_CXX_API LIBOPENMPT_API
87 
88 #if defined(LIBOPENMPT_USE_DLL)
89 #if defined(_MSC_VER) && !defined(_DLL)
90 #error "C++ interface is disabled if libopenmpt is built as a DLL and the runtime is statically linked. This is not supported by microsoft and cannot possibly work. Ever."
91 #undef LIBOPENMPT_CXX_API
92 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL
93 #endif
94 #endif
95 
96 #if defined(__EMSCRIPTEN__)
97 
98 /* Only the C API is supported for emscripten. Disable the C++ API. */
99 #undef LIBOPENMPT_CXX_API
100 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL
101 #endif
102 
103 #endif
104 
110 /* C */
111 
112 #if !defined(LIBOPENMPT_NO_DEPRECATE)
113 #if defined(__clang__)
114 #define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
115 #elif defined(__GNUC__)
116 #define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
117 #elif defined(_MSC_VER)
118 #define LIBOPENMPT_DEPRECATED __declspec(deprecated)
119 #else
120 #define LIBOPENMPT_DEPRECATED
121 #endif
122 #endif
123 
124 #ifndef __cplusplus
125 #if !defined(LIBOPENMPT_NO_DEPRECATE)
127 #define LIBOPENMPT_DEPRECATED_STRING( str ) ( LIBOPENMPT_DEPRECATED_STRING_CONSTANT ? ( str ) : ( str ) )
128 #else
129 #define LIBOPENMPT_DEPRECATED_STRING( str ) str
130 #endif
131 #endif
132 
133 
134 /* C++ */
135 
136 #ifdef __cplusplus
137 
138 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT
139 /* handle known broken compilers here by defining LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT appropriately */
140 /* Note: We force the known compilers to C++11 here in order to retain compatibility with libopenmpt <= 0.2.661-beta18. */
141 #if defined(__clang__)
142 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT 201103L
143 #elif defined(_MSC_VER)
144 #if (_MSC_VER >= 1600)
145 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT 201103L
146 #else
147 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT 199711L
148 #endif
149 #elif defined(__GNUC__)
150 #if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__*1 < 40300)
151 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT 199711L
152 #else
153 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT 201103L
154 #endif
155 #endif
156 #endif
157 
158 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED
159 /* handle known broken compilers here by defining LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED appropriately */
160 #endif
161 
162 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT
163 /* handle known broken compilers here by defining LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT appropriately */
164 #endif
165 
166 #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS)
167 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT
168 #define LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT LIBOPENMPT_ASSUME_CPLUSPLUS
169 #endif
170 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED
171 #define LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED LIBOPENMPT_ASSUME_CPLUSPLUS
172 #endif
173 #ifndef LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT
174 #define LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT LIBOPENMPT_ASSUME_CPLUSPLUS
175 #endif
176 #endif
177 
178 #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT)
179 #if (LIBOPENMPT_ASSUME_CPLUSPLUS_CSTDINT < 201103L)
180 #define LIBOPENMPT_QUIRK_NO_CSTDINT
181 #endif
182 #elif (__cplusplus < 201103L)
183 #define LIBOPENMPT_QUIRK_NO_CSTDINT
184 #endif
185 
186 #if !defined(LIBOPENMPT_NO_DEPRECATE)
187 #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED)
188 #if (LIBOPENMPT_ASSUME_CPLUSPLUS_DEPRECATED >= 201402L)
189 #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]]
190 #undef LIBOPENMPT_DEPRECATED
191 #define LIBOPENMPT_DEPRECATED
192 #else
193 #define LIBOPENMPT_ATTR_DEPRECATED
194 #endif
195 #elif (__cplusplus >= 201402L)
196 #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]]
197 #undef LIBOPENMPT_DEPRECATED
198 #define LIBOPENMPT_DEPRECATED
199 #else
200 #define LIBOPENMPT_ATTR_DEPRECATED
201 #endif
202 #else
203 #undef LIBOPENMPT_DEPRECATED
204 #define LIBOPENMPT_DEPRECATED
205 #define LIBOPENMPT_ATTR_DEPRECATED
206 #endif
207 
208 #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT)
209 #if (LIBOPENMPT_ASSUME_CPLUSPLUS_NOEXCEPT >= 201103L)
210 #define LIBOPENMPT_NOEXCEPT noexcept
211 #else
212 #define LIBOPENMPT_NOEXCEPT throw()
213 #endif
214 #elif (__cplusplus >= 201103L)
215 #define LIBOPENMPT_NOEXCEPT noexcept
216 #else
217 #define LIBOPENMPT_NOEXCEPT throw()
218 #endif
219 
220 #endif
221 
222 
223 #include "libopenmpt_version.h"
224 
225 #endif /* LIBOPENMPT_CONFIG_H */
#define LIBOPENMPT_DEPRECATED
Definition: libopenmpt_config.h:120
static const int LIBOPENMPT_DEPRECATED_STRING_CONSTANT
Definition: libopenmpt_config.h:126