// Name of library
#define ICY_NAME "icey"

// Define the library version
#define ICY_VERSION "2.4.5"
#define ICY_VERSION_MAJOR 2
#define ICY_VERSION_MINOR 4
#define ICY_VERSION_PATCH 5

// Define the source path
#define ICY_SOURCE_DIR ""

// Define the build path
#define ICY_BUILD_DIR ""

// Define the installation path
#define ICY_INSTALL_DIR ""

// Building as shared library (.so or .dll)
#define ICY_SHARED_LIBRARY

// Enable logging
#define ICY_ENABLE_LOGGING

// Attempt to recover from internal exceptions
/* #undef ICY_EXCEPTION_RECOVERY */

// icey modules
#define HAVE_ICY_base
#define HAVE_ICY_crypto
#define HAVE_ICY_net
#define HAVE_ICY_http
#define HAVE_ICY_json
#define HAVE_ICY_av
/* #undef HAVE_ICY_socketio */
#define HAVE_ICY_symple
#define HAVE_ICY_stun
#define HAVE_ICY_turn
/* #undef HAVE_ICY_util */
#define HAVE_ICY_sched
#define HAVE_ICY_archo
/* #undef HAVE_ICY_pacm */
/* #undef HAVE_ICY_pluga */
// OpenSSL library
#define HAVE_OPENSSL

// FFmpeg video library
#define HAVE_FFMPEG
#define HAVE_FFMPEG_AVCODEC
#define HAVE_FFMPEG_AVFORMAT
#define HAVE_FFMPEG_AVUTIL
#define HAVE_FFMPEG_AVFILTER
#define HAVE_FFMPEG_AVDEVICE
/* #undef HAVE_FFMPEG_AVRESAMPLE */
#define HAVE_FFMPEG_SWRESAMPLE
#define HAVE_FFMPEG_SWSCALE
/* #undef HAVE_FFMPEG_POSTPROC */

// OpenCV library
/* #undef HAVE_OPENCV */

// Define to 1 if you have the <inttypes.h> header file.
/* #undef HAVE_INTTYPES_H */

// Enable macros for format specifiers in <inttypes.h>
#define __STDC_FORMAT_MACROS


//
/// Platform and compiler definitions
//

#ifdef _WIN32 // Windows (x64 and x86)
#define ICY_WIN
#endif
#if __unix__ // Unix
#define ICY_UNIX
#endif
#if __posix__ // POSIX
#define ICY_POSIX
#endif
#if __linux__ // Linux
#define ICY_LINUX
#endif
#if __APPLE__ // Mac OS
#define ICY_APPLE
#endif
#if __GNUC__ // GCC compiler
#define ICY_GNUC
#endif
#if defined(__MINGW32__) || defined(__MINGW64__) // MinGW
#define ICY_MINGW
#endif


//
/// Windows specific
//

#ifdef ICY_WIN

// Verify that we're building with the multithreaded
// versions of the runtime libraries
#if defined(_MSC_VER) && !defined(_MT)
#error Must compile with /MD, /MDd, /MT or /MTd
#endif

// Check debug/release settings consistency
#if defined(NDEBUG) && defined(_DEBUG)
#error Inconsistent build settings (check for /MD[d])
#endif

// Unicode Support
#if defined(UNICODE)
#define ICY_UNICODE
#endif

// Disable unnecessary warnings
#if defined(_MSC_VER)
#pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union
#pragma warning(disable : 4251) // ... needs to have dll-interface warning
#pragma warning(disable : 4355) // 'this' : used in base member initializer list
#pragma warning(disable : 4996) // VC++ 8.0 deprecation warnings
#pragma warning(disable : 4351) // new behavior: elements of array '...' will be default initialized
#pragma warning(disable : 4675) // resolved overload was found by argument-dependent lookup
#pragma warning(disable : 4100) // MSVS 'unreferenced formal parameter' warnings showing false positives
#pragma warning(disable : 4706) // assignment within conditional expression
#endif

#endif // ICY_WIN
