1 /*
2  * BuildSettings.h
3  * ---------------
4  * Purpose: Global, user settable compile time flags (and some global system header 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 
11 #pragma once
12 
13 
14 
15 #include "mpt/base/detect_compiler.hpp"
16 #include "mpt/base/detect_os.hpp"
17 #include "mpt/base/detect_quirks.hpp"
18 
19 
20 
21 // set windows version early so that we can deduce dependencies from SDK version
22 
23 #if MPT_OS_WINDOWS
24 
25 #if !defined(WINVER) && !defined(_WIN32_WINDOWS) && !defined(_WIN32_WINNT)
26 #define _WIN32_WINNT 0x0601 // _WIN32_WINNT_WIN7
27 #endif
28 
29 #ifndef WINVER
30 #if defined(_WIN32_WINNT)
31 #define WINVER _WIN32_WINNT
32 #elif defined(_WIN32_WINDOWS)
33 #define WINVER _WIN32_WINDOWS
34 #endif
35 #endif
36 
37 #endif // MPT_OS_WINDOWS
38 
39 
40 
41 #if defined(MODPLUG_TRACKER) && defined(LIBOPENMPT_BUILD)
42 #error "either MODPLUG_TRACKER or LIBOPENMPT_BUILD has to be defined"
43 #elif defined(MODPLUG_TRACKER)
44 // nothing
45 #define MPT_INLINE_NS mptx
46 #elif defined(LIBOPENMPT_BUILD)
47 // nothing
48 #define MPT_INLINE_NS mpt_libopenmpt
49 #else
50 #error "either MODPLUG_TRACKER or LIBOPENMPT_BUILD has to be defined"
51 #endif // MODPLUG_TRACKER || LIBOPENMPT_BUILD
52 
53 
54 
55 #if defined(LIBOPENMPT_BUILD)
56 
57 // Fixup dependencies which are currently not used in libopenmpt itself,
58 // however might be set by some build systems like autotools anyway for simplicity.
59 #ifdef MPT_WITH_FLAC
60 #undef MPT_WITH_FLAC
61 #endif
62 
63 #endif // LIBOPENMPT_BUILD
64 
65 
66 
67 // Dependencies from the MSVC build system
68 #if defined(MPT_BUILD_MSVC)
69 
70 // This section defines which dependencies are available when building with
71 // MSVC. Other build systems provide MPT_WITH_* macros via command-line or other
72 // means.
73 // OpenMPT and libopenmpt should compile and run successfully (albeit with
74 // reduced functionality) with any or all dependencies missing/disabled.
75 // The defaults match the bundled third-party libraries with the addition of
76 // ASIO and VST SDKs.
77 
78 #if defined(MODPLUG_TRACKER)
79 
80 #if MPT_OS_WINDOWS
81 #if !defined(MPT_BUILD_WINESUPPORT) && !defined(MPT_BUILD_UPDATESIGNTOOL)
82 #define MPT_WITH_MFC
83 #endif // !MPT_BUILD_WINESUPPORT && !MPT_BUILD_UPDATESIGNTOOL
84 #endif // MPT_OS_WINDOWS
85 
86 // OpenMPT-only dependencies
87 #define MPT_WITH_ANCIENT
88 #if !defined(MPT_BUILD_RETRO) && !MPT_COMPILER_CLANG && !MPT_MSVC_BEFORE(2019,0)
89 // disabled for VS2017 because of multiple initialization of inline variables
90 // https://developercommunity.visualstudio.com/t/static-inline-variable-gets-destroyed-multiple-tim/297876
91 #define MPT_WITH_ASIO
92 #endif
93 #if defined(MPT_BUILD_RETRO)
94 #define MPT_WITH_DIRECTSOUND
95 #endif
96 #define MPT_WITH_DMO
97 #define MPT_WITH_LAME
98 #define MPT_WITH_LHASA
99 #define MPT_WITH_MINIZIP
100 #define MPT_WITH_NLOHMANNJSON
101 #define MPT_WITH_OPUS
102 #define MPT_WITH_OPUSENC
103 #define MPT_WITH_OPUSFILE
104 #define MPT_WITH_PORTAUDIO
105 //#define MPT_WITH_PULSEAUDIO
106 //#define MPT_WITH_PULSEAUDIOSIMPLE
107 #define MPT_WITH_RTAUDIO
108 #define MPT_WITH_SMBPITCHSHIFT
109 #define MPT_WITH_UNRAR
110 #define MPT_WITH_VORBISENC
111 #define MPT_WITH_VST
112 
113 // OpenMPT and libopenmpt dependencies (not for openmp123, player plugins or examples)
114 //#define MPT_WITH_DL
115 #define MPT_WITH_FLAC
116 //#define MPT_WITH_LTDL
117 #if MPT_OS_WINDOWS
118 #if (_WIN32_WINNT >= 0x0601)
119 #define MPT_WITH_MEDIAFOUNDATION
120 #endif
121 #endif
122 //#define MPT_WITH_MINIMP3
123 //#define MPT_WITH_MINIZ
124 #define MPT_WITH_MPG123
125 #define MPT_WITH_OGG
126 //#define MPT_WITH_STBVORBIS
127 #define MPT_WITH_VORBIS
128 #define MPT_WITH_VORBISFILE
129 #if MPT_OS_WINDOWS
130 #if (_WIN32_WINNT >= 0x0A00)
131 #define MPT_WITH_WINDOWS10
132 #endif
133 #endif
134 #define MPT_WITH_ZLIB
135 
136 #endif // MODPLUG_TRACKER
137 
138 #if defined(LIBOPENMPT_BUILD)
139 
140 // OpenMPT and libopenmpt dependencies (not for openmp123, player plugins or examples)
141 #if defined(LIBOPENMPT_BUILD_FULL) && defined(LIBOPENMPT_BUILD_SMALL)
142 #error "only one of LIBOPENMPT_BUILD_FULL or LIBOPENMPT_BUILD_SMALL can be defined"
143 #endif // LIBOPENMPT_BUILD_FULL && LIBOPENMPT_BUILD_SMALL
144 
145 #if defined(LIBOPENMPT_BUILD_SMALL)
146 
147 //#define MPT_WITH_DL
148 //#define MPT_WITH_FLAC
149 //#define MPT_WITH_LTDL
150 //#define MPT_WITH_MEDIAFOUNDATION
151 #define MPT_WITH_MINIMP3
152 #define MPT_WITH_MINIZ
153 //#define MPT_WITH_MPG123
154 //#define MPT_WITH_OGG
155 #define MPT_WITH_STBVORBIS
156 //#define MPT_WITH_VORBIS
157 //#define MPT_WITH_VORBISFILE
158 //#define MPT_WITH_ZLIB
159 
160 #else // !LIBOPENMPT_BUILD_SMALL
161 
162 //#define MPT_WITH_DL
163 //#define MPT_WITH_FLAC
164 //#define MPT_WITH_LTDL
165 //#define MPT_WITH_MEDIAFOUNDATION
166 //#define MPT_WITH_MINIMP3
167 //#define MPT_WITH_MINIZ
168 #define MPT_WITH_MPG123
169 #define MPT_WITH_OGG
170 //#define MPT_WITH_STBVORBIS
171 #define MPT_WITH_VORBIS
172 #define MPT_WITH_VORBISFILE
173 #define MPT_WITH_ZLIB
174 
175 #endif // LIBOPENMPT_BUILD_SMALL
176 
177 #endif // LIBOPENMPT_BUILD
178 
179 #endif // MPT_BUILD_MSVC
180 
181 
182 #if defined(MPT_BUILD_XCODE)
183 
184 #if defined(MODPLUG_TRACKER)
185 
186 // n/a
187 
188 #endif // MODPLUG_TRACKER
189 
190 #if defined(LIBOPENMPT_BUILD)
191 
192 //#define MPT_WITH_DL
193 //#define MPT_WITH_FLAC
194 //#define MPT_WITH_LTDL
195 //#define MPT_WITH_MEDIAFOUNDATION
196 //#define MPT_WITH_MINIMP3
197 //#define MPT_WITH_MINIZ
198 #define MPT_WITH_MPG123
199 #define MPT_WITH_OGG
200 //#define MPT_WITH_STBVORBIS
201 #define MPT_WITH_VORBIS
202 #define MPT_WITH_VORBISFILE
203 #define MPT_WITH_ZLIB
204 
205 #endif // LIBOPENMPT_BUILD
206 
207 #endif // MPT_BUILD_XCODE
208 
209 
210 
211 #if defined(MODPLUG_TRACKER)
212 
213 #define MPT_UPDATE_LEGACY 1
214 
215 // Enable built-in test suite.
216 #if defined(MPT_BUILD_DEBUG) || defined(MPT_BUILD_CHECKED)
217 #define ENABLE_TESTS
218 #endif
219 
220 // Disable any file saving functionality (not really useful except for the player library)
221 //#define MODPLUG_NO_FILESAVE
222 
223 // Disable any debug logging
224 #if !defined(MPT_BUILD_DEBUG) && !defined(MPT_BUILD_CHECKED) && !defined(MPT_BUILD_WINESUPPORT)
225 #define MPT_LOG_GLOBAL_LEVEL_STATIC
226 #define MPT_LOG_GLOBAL_LEVEL 0
227 #endif
228 
229 // Enable all individual logging macros and MPT_LOG calls
230 //#define MPT_ALL_LOGGING
231 
232 // Disable all runtime asserts
233 #if !defined(MPT_BUILD_DEBUG) && !defined(MPT_BUILD_CHECKED) && !defined(MPT_BUILD_WINESUPPORT)
234 #define NO_ASSERTS
235 #endif
236 
237 // Enable global ComponentManager
238 #define MPT_COMPONENT_MANAGER 1
239 
240 // Support for externally linked samples e.g. in MPTM files
241 #define MPT_EXTERNAL_SAMPLES
242 
243 // Support mpt::ChartsetLocale
244 #define MPT_ENABLE_CHARSET_LOCALE
245 
246 // Use architecture-specific intrinsics
247 #define MPT_ENABLE_ARCH_INTRINSICS
248 
249 #if !defined(MPT_BUILD_RETRO)
250 #define MPT_ENABLE_UPDATE
251 #endif // !MPT_BUILD_RETRO
252 
253 // Disable unarchiving support
254 //#define NO_ARCHIVE_SUPPORT
255 
256 // Disable the built-in reverb effect
257 //#define NO_REVERB
258 
259 // Disable built-in miscellaneous DSP effects (surround, mega bass, noise reduction)
260 //#define NO_DSP
261 
262 // Disable the built-in equalizer.
263 //#define NO_EQ
264 
265 // Disable the built-in automatic gain control
266 //#define NO_AGC
267 
268 // (HACK) Define to build without any plugin support
269 //#define NO_PLUGINS
270 
271 #endif // MODPLUG_TRACKER
272 
273 
274 
275 #if defined(LIBOPENMPT_BUILD)
276 
277 #if (defined(_DEBUG) || defined(DEBUG)) && !defined(MPT_BUILD_DEBUG)
278 #define MPT_BUILD_DEBUG
279 #endif
280 
281 #if defined(LIBOPENMPT_BUILD_TEST)
282 #define ENABLE_TESTS
283 #else
284 #define MODPLUG_NO_FILESAVE
285 #endif
286 #if defined(MPT_BUILD_ANALZYED) || defined(MPT_BUILD_DEBUG) || defined(MPT_BUILD_CHECKED) || defined(ENABLE_TESTS)
287 // enable asserts
288 #else
289 #define NO_ASSERTS
290 #endif
291 //#define MPT_ALL_LOGGING
292 #define MPT_COMPONENT_MANAGER 0
293 //#define MPT_EXTERNAL_SAMPLES
294 #if defined(ENABLE_TESTS) || defined(MPT_BUILD_HACK_ARCHIVE_SUPPORT)
295 #define MPT_ENABLE_CHARSET_LOCALE
296 #else
297 //#define MPT_ENABLE_CHARSET_LOCALE
298 #endif
299 // Do not use architecture-specifid intrinsics in library builds. There is just about no codepath which would use it anyway.
300 //#define MPT_ENABLE_ARCH_INTRINSICS
301 #if defined(MPT_BUILD_HACK_ARCHIVE_SUPPORT)
302 //#define NO_ARCHIVE_SUPPORT
303 #else
304 #define NO_ARCHIVE_SUPPORT
305 #endif
306 //#define NO_REVERB
307 #define NO_DSP
308 #define NO_EQ
309 #define NO_AGC
310 //#define NO_PLUGINS
311 
312 #endif // LIBOPENMPT_BUILD
313 
314 
315 
316 #if MPT_OS_WINDOWS
317 
318 	#ifndef MPT_ENABLE_CHARSET_LOCALE
319 	#define MPT_ENABLE_CHARSET_LOCALE
320 	#endif
321 
322 #elif MPT_OS_LINUX
323 
324 #elif MPT_OS_ANDROID
325 
326 #elif MPT_OS_EMSCRIPTEN
327 
328 #elif MPT_OS_MACOSX_OR_IOS
329 
330 #elif MPT_OS_DJGPP
331 
332 #endif
333 
334 
335 
336 #if (MPT_COMPILER_MSVC && !defined(MPT_USTRING_MODE_UTF8_FORCE)) || defined(MODPLUG_TRACKER)
337 
338 	// Use wide strings for MSVC because this is the native encoding on
339 	// microsoft platforms.
340 
341 	// mpt::ToWString, mpt::wfmt, ConvertStrTo<std::wstring>
342 	// Required by the tracker to ease interfacing with WinAPI.
343 	// Required by MPT_USTRING_MODE_WIDE to ease type tunneling in mpt::format.
344 	#define MPT_WSTRING_FORMAT 1
345 
346 #else
347 
348 	#define MPT_WSTRING_FORMAT 0
349 
350 #endif
351 
352 #if (MPT_COMPILER_MSVC && !defined(MPT_USTRING_MODE_UTF8_FORCE)) || MPT_OS_WINDOWS || MPT_WSTRING_FORMAT
353 
354 	// mpt::ToWide
355 	// Required on Windows by mpt::PathString.
356 	// Required by MPT_USTRING_MODE_WIDE as they share the conversion functions.
357 	// Required by MPT_WSTRING_FORMAT because of std::string<->std::wstring conversion in mpt::ToAString and mpt::ToWString.
358 	#define MPT_WSTRING_CONVERT 1
359 
360 #else
361 
362 	#define MPT_WSTRING_CONVERT 0
363 
364 #endif
365 
366 
367 
368 // fixing stuff up
369 
370 #if defined(MPT_BUILD_ANALYZED) || defined(MPT_BUILD_CHECKED)
371 #ifdef NO_ASSERTS
372 #undef NO_ASSERTS // static or dynamic analyzers want assertions on
373 #endif
374 #endif
375 
376 #if defined(MPT_BUILD_FUZZER)
377 #ifndef MPT_FUZZ_TRACKER
378 #define MPT_FUZZ_TRACKER
379 #endif
380 #endif
381 
382 #if defined(MPT_ENABLE_ARCH_INTRINSICS)
383 #if MPT_COMPILER_MSVC && defined(_M_IX86)
384 
385 #define MPT_ENABLE_ARCH_X86
386 
387 #define MPT_ENABLE_ARCH_INTRINSICS_SSE
388 #define MPT_ENABLE_ARCH_INTRINSICS_SSE2
389 
390 #elif MPT_COMPILER_MSVC && defined(_M_X64)
391 
392 #define MPT_ENABLE_ARCH_AMD64
393 
394 #define MPT_ENABLE_ARCH_INTRINSICS_SSE
395 #define MPT_ENABLE_ARCH_INTRINSICS_SSE2
396 
397 #endif // arch
398 #endif // MPT_ENABLE_ARCH_INTRINSICS
399 
400 #if defined(ENABLE_TESTS) && defined(MODPLUG_NO_FILESAVE)
401 #undef MODPLUG_NO_FILESAVE // tests recommend file saving
402 #endif
403 
404 #if defined(MPT_WITH_ZLIB) && defined(MPT_WITH_MINIZ)
405 // Only one deflate implementation should be used. Prefer zlib.
406 #undef MPT_WITH_MINIZ
407 #endif
408 
409 #if !MPT_OS_WINDOWS && defined(MPT_WITH_MEDIAFOUNDATION)
410 #undef MPT_WITH_MEDIAFOUNDATION // MediaFoundation requires Windows
411 #endif
412 
413 #if !MPT_COMPILER_MSVC && !MPT_COMPILER_CLANG && defined(MPT_WITH_MEDIAFOUNDATION)
414 #undef MPT_WITH_MEDIAFOUNDATION // MediaFoundation requires MSVC or Clang due to ATL (no MinGW support)
415 #endif
416 
417 #if (defined(MPT_WITH_MPG123) || defined(MPT_WITH_MINIMP3)) && !defined(MPT_ENABLE_MP3_SAMPLES)
418 #define MPT_ENABLE_MP3_SAMPLES
419 #endif
420 
421 #if defined(ENABLE_TESTS)
422 #define MPT_ENABLE_FILEIO // Test suite requires PathString for file loading.
423 #endif
424 
425 #if defined(MODPLUG_TRACKER) && !defined(MPT_ENABLE_FILEIO)
426 #define MPT_ENABLE_FILEIO // Tracker requires disk file io
427 #endif
428 
429 #if defined(MPT_EXTERNAL_SAMPLES) && !defined(MPT_ENABLE_FILEIO)
430 #define MPT_ENABLE_FILEIO // External samples require disk file io
431 #endif
432 
433 #if defined(NO_PLUGINS)
434 // Any plugin type requires NO_PLUGINS to not be defined.
435 #if defined(MPT_WITH_VST)
436 #undef MPT_WITH_VST
437 #endif
438 #endif
439 
440 
441 
442 #if defined(MODPLUG_TRACKER) && !defined(MPT_BUILD_WINESUPPORT) && !defined(MPT_BUILD_WINESUPPORT_WRAPPER)
443 #ifndef MPT_NO_NAMESPACE
444 #define MPT_NO_NAMESPACE
445 #endif
446 #endif
447 
448 #if defined(MPT_NO_NAMESPACE)
449 
450 #ifdef OPENMPT_NAMESPACE
451 #undef OPENMPT_NAMESPACE
452 #endif
453 #define OPENMPT_NAMESPACE
454 
455 #ifdef OPENMPT_NAMESPACE_BEGIN
456 #undef OPENMPT_NAMESPACE_BEGIN
457 #endif
458 #define OPENMPT_NAMESPACE_BEGIN
459 
460 #ifdef OPENMPT_NAMESPACE_END
461 #undef OPENMPT_NAMESPACE_END
462 #endif
463 #define OPENMPT_NAMESPACE_END
464 
465 #else
466 
467 #ifndef OPENMPT_NAMESPACE
468 #define OPENMPT_NAMESPACE OpenMPT
469 #endif
470 
471 #ifndef OPENMPT_NAMESPACE_BEGIN
472 #define OPENMPT_NAMESPACE_BEGIN namespace OPENMPT_NAMESPACE {
473 #endif
474 #ifndef OPENMPT_NAMESPACE_END
475 #define OPENMPT_NAMESPACE_END   }
476 #endif
477 
478 #endif
479 
480 
481 
482 // platform configuration
483 
484 #ifdef MPT_WITH_MFC
485 //#define MPT_MFC_FULL  // use full MFC, including MFC controls
486 #define _CSTRING_DISABLE_NARROW_WIDE_CONVERSION
487 #endif // MPT_WITH_MFC
488 
489 #if defined(MODPLUG_TRACKER)
490 #if MPT_OS_WINDOWS
491 #if !defined(MPT_BUILD_WINESUPPORT)
492 #ifndef MPT_MFC_FULL
493 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS	// Do not include support for MFC controls in dialogs (reduces binary bloat; remove this #define if you want to use MFC controls)
494 #endif // !MPT_MFC_FULL
495 #endif // !MPT_BUILD_WINESUPPORT
496 #endif // MPT_OS_WINDOWS
497 #endif // MODPLUG_TRACKER
498 
499 #if MPT_OS_WINDOWS
500 
501 #define WIN32_LEAN_AND_MEAN
502 
503 // windows.h excludes
504 #define NOMEMMGR          // GMEM_*, LMEM_*, GHND, LHND, associated routines
505 #define NOMINMAX          // Macros min(a,b) and max(a,b)
506 #define NOSERVICE         // All Service Controller routines, SERVICE_ equates, etc.
507 #define NOCOMM            // COMM driver routines
508 #define NOKANJI           // Kanji support stuff.
509 #define NOPROFILER        // Profiler interface.
510 #define NOMCX             // Modem Configuration Extensions
511 
512 // mmsystem.h excludes
513 #define MMNODRV
514 //#define MMNOSOUND
515 //#define MMNOWAVE
516 //#define MMNOMIDI
517 #define MMNOAUX
518 #define MMNOMIXER
519 //#define MMNOTIMER
520 #define MMNOJOY
521 #define MMNOMCI
522 //#define MMNOMMIO
523 //#define MMNOMMSYSTEM
524 
525 // mmreg.h excludes
526 #define NOMMIDS
527 //#define NONEWWAVE
528 #define NONEWRIFF
529 #define NOJPEGDIB
530 #define NONEWIC
531 #define NOBITMAP
532 
533 #endif // MPT_OS_WINDOWS
534 
535 
536 
537 // stdlib configuration
538 
539 #if MPT_COMPILER_CLANG
540 #pragma clang diagnostic push
541 #pragma clang diagnostic ignored "-Wreserved-id-macro"
542 #endif
543 
544 #define __STDC_CONSTANT_MACROS
545 #define __STDC_FORMAT_MACROS
546 #define __STDC_LIMIT_MACROS
547 
548 #define _USE_MATH_DEFINES
549 
550 #ifndef _FILE_OFFSET_BITS
551 #define _FILE_OFFSET_BITS 64
552 #endif
553 
554 #if MPT_COMPILER_CLANG
555 #pragma clang diagnostic pop
556 #endif
557 
558 
559 
560 // compiler configuration
561 
562 #if MPT_COMPILER_MSVC
563 
564 #define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers
565 
566 #pragma warning(default:4800) // Implicit conversion from 'int' to bool. Possible information loss
567 
568 #pragma warning(disable:4355) // 'this' : used in base member initializer list
569 
570 // happens for immutable classes (i.e. classes containing const members)
571 #pragma warning(disable:4512) // assignment operator could not be generated
572 
573 #pragma warning(error:4309) // Treat "truncation of constant value"-warning as error.
574 #pragma warning(error:4463) // Treat overflow; assigning value to bit-field that can only hold values from low_value to high_value"-warning as error.
575 
576 #ifdef MPT_BUILD_ANALYZED
577 // Disable Visual Studio static analyzer warnings that generate too many false positives in VS2010.
578 //#pragma warning(disable:6246)
579 //#pragma warning(disable:6262)
580 #pragma warning(disable:6297) // 32-bit value is shifted, then cast to 64-bit value.  Results might not be an expected value.
581 #pragma warning(disable:6326) // Potential comparison of a constant with another constant
582 //#pragma warning(disable:6385)
583 //#pragma warning(disable:6386)
584 #endif // MPT_BUILD_ANALYZED
585 
586 #endif // MPT_COMPILER_MSVC
587 
588 #if MPT_COMPILER_CLANG
589 
590 #if defined(MPT_BUILD_MSVC)
591 #pragma clang diagnostic warning "-Wimplicit-fallthrough"
592 #endif // MPT_BUILD_MSVC
593 
594 #if defined(MODPLUG_TRACKER)
595 #pragma clang diagnostic ignored "-Wunused-local-typedef"
596 #endif // MODPLUG_TRACKER
597 
598 #endif // MPT_COMPILER_CLANG
599 
600 
601 
602 
603 
604 // standard library quirks
605 
606 
607 
608 
609 
610 // third-party library configuration
611 
612 #if MPT_OS_WINDOWS
613 #ifndef UNICODE
614 #define MPT_CHECK_WINDOWS_IGNORE_WARNING_NO_UNICODE
615 #endif // !UNICODE
616 #endif // MPT_OS_WINDOWS
617 
618 #ifdef MPT_WITH_ANCIENT
619 #ifdef MPT_BUILD_MSVC_SHARED
620 #define ANCIENT_API_DECLSPEC_DLLIMPORT
621 #endif
622 #endif
623 
624 #ifdef MPT_WITH_FLAC
625 #ifdef MPT_BUILD_MSVC_STATIC
626 #define FLAC__NO_DLL
627 #endif
628 #endif
629 
630 #ifdef MPT_WITH_SMBPITCHSHIFT
631 #ifdef MPT_BUILD_MSVC_SHARED
632 #define SMBPITCHSHIFT_USE_DLL
633 #endif
634 #endif
635 
636 #ifdef MPT_WITH_STBVORBIS
637 #define STB_VORBIS_HEADER_ONLY
638 #ifndef STB_VORBIS_NO_PULLDATA_API
639 #define STB_VORBIS_NO_PULLDATA_API
640 #endif
641 #ifndef STB_VORBIS_NO_STDIO
642 #define STB_VORBIS_NO_STDIO
643 #endif
644 #endif
645 
646 #ifdef MPT_WITH_VORBISFILE
647 #ifndef OV_EXCLUDE_STATIC_CALLBACKS
648 #define OV_EXCLUDE_STATIC_CALLBACKS
649 #endif
650 #endif
651 
652 #ifdef MPT_WITH_ZLIB
653 #ifdef MPT_BUILD_MSVC_SHARED
654 #define ZLIB_DLL
655 #endif
656 #endif
657 
658 
659 
660 #ifdef __cplusplus
661 
662 #include "mpt/base/namespace.hpp"
663 
664 OPENMPT_NAMESPACE_BEGIN
665 
666 namespace mpt {
667 
668 #ifndef MPT_NO_NAMESPACE
669 using namespace ::mpt;
670 #endif
671 
672 } // namespace mpt
673 
674 OPENMPT_NAMESPACE_END
675 
676 #endif
677