/* * libopenmpt_config.h * ------------------- * Purpose: libopenmpt public interface configuration * Notes : (currently none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #ifndef LIBOPENMPT_CONFIG_H #define LIBOPENMPT_CONFIG_H /* clang-format off */ /*! \defgroup libopenmpt libopenmpt */ /*! \addtogroup libopenmpt @{ */ /* provoke warnings if already defined */ #define LIBOPENMPT_API #undef LIBOPENMPT_API #define LIBOPENMPT_CXX_API #undef LIBOPENMPT_CXX_API /*! @} */ /*! \addtogroup libopenmpt_c @{ */ /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_buffer.h exists. */ #define LIBOPENMPT_STREAM_CALLBACKS_BUFFER /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_fd.h exists. * \since 0.3 * \remarks * Use the following to check for availability: * \code * #include * #if defined(LIBOPENMPT_STREAM_CALLBACKS_FD) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1))) * #include * #endif * \endcode */ #define LIBOPENMPT_STREAM_CALLBACKS_FD /*! \brief Defined if libopenmpt/libopenmpt_stream_callbacks_file.h exists. * \since 0.3 * \remarks * Use the following to check for availability: * \code * #include * #if defined(LIBOPENMPT_STREAM_CALLBACKS_FILE) || ((OPENMPT_API_VERSION_MAJOR == 0) && ((OPENMPT_API_VERSION_MINOR == 2) || (OPENMPT_API_VERSION_MINOR == 1))) * #include * #endif * \endcode */ #define LIBOPENMPT_STREAM_CALLBACKS_FILE /*! @} */ /*! \addtogroup libopenmpt @{ */ #if defined(__DOXYGEN__) #define LIBOPENMPT_API_HELPER_EXPORT #define LIBOPENMPT_API_HELPER_IMPORT #define LIBOPENMPT_API_HELPER_PUBLIC #define LIBOPENMPT_API_HELPER_LOCAL #elif defined(_MSC_VER) #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) #define LIBOPENMPT_API_HELPER_PUBLIC #define LIBOPENMPT_API_HELPER_LOCAL #elif defined(__EMSCRIPTEN__) #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) __attribute__((used)) #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) __attribute__((used)) #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used)) #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden"))) #elif (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32) #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden"))) #elif defined(__GNUC__) || defined(__clang__) #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden"))) #elif defined(_WIN32) #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport) #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport) #define LIBOPENMPT_API_HELPER_PUBLIC #define LIBOPENMPT_API_HELPER_LOCAL #else #define LIBOPENMPT_API_HELPER_EXPORT #define LIBOPENMPT_API_HELPER_IMPORT #define LIBOPENMPT_API_HELPER_PUBLIC #define LIBOPENMPT_API_HELPER_LOCAL #endif #if defined(LIBOPENMPT_BUILD_DLL) #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_EXPORT #elif defined(LIBOPENMPT_USE_DLL) #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_IMPORT #else #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_PUBLIC #endif #ifdef __cplusplus #define LIBOPENMPT_CXX_API LIBOPENMPT_API #if defined(LIBOPENMPT_USE_DLL) #if defined(_MSC_VER) && !defined(_DLL) #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." #undef LIBOPENMPT_CXX_API #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL #endif #endif #if defined(__EMSCRIPTEN__) /* Only the C API is supported for emscripten. Disable the C++ API. */ #undef LIBOPENMPT_CXX_API #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL #endif #endif /*! @} */ /* C */ #if !defined(LIBOPENMPT_NO_DEPRECATE) #if defined(__clang__) #define LIBOPENMPT_DEPRECATED __attribute__((deprecated)) #elif defined(__GNUC__) #define LIBOPENMPT_DEPRECATED __attribute__((deprecated)) #elif defined(_MSC_VER) #define LIBOPENMPT_DEPRECATED __declspec(deprecated) #else #define LIBOPENMPT_DEPRECATED #endif #else #define LIBOPENMPT_DEPRECATED #endif #ifndef __cplusplus #if !defined(LIBOPENMPT_NO_DEPRECATE) LIBOPENMPT_DEPRECATED static const int LIBOPENMPT_DEPRECATED_STRING_CONSTANT = 0; #define LIBOPENMPT_DEPRECATED_STRING( str ) ( LIBOPENMPT_DEPRECATED_STRING_CONSTANT ? ( str ) : ( str ) ) #else #define LIBOPENMPT_DEPRECATED_STRING( str ) str #endif #else #define LIBOPENMPT_DEPRECATED_STRING( str ) str #endif /* C++ */ #ifdef __cplusplus #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS) #endif #if !defined(LIBOPENMPT_NO_DEPRECATE) #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]] #else #define LIBOPENMPT_ATTR_DEPRECATED #endif #endif /* clang-format on */ #include "libopenmpt_version.h" #endif /* LIBOPENMPT_CONFIG_H */