// Name of library
#define SCY_NAME "${LibSourcey_NAME}"

// Define the library version
#define SCY_VERSION "${LibSourcey_VERSION}"
#define SCY_VERSION_MAJOR ${LibSourcey_VERSION_MAJOR}
#define SCY_VERSION_MINOR ${LibSourcey_VERSION_MINOR}
#define SCY_VERSION_PATCH ${LibSourcey_VERSION_PATCH}

// Define the source path
#define SCY_SOURCE_DIR "${LibSourcey_SOURCE_DIR}"

// Define the build path
#define SCY_BUILD_DIR "${LibSourcey_BUILD_DIR}"

// Define the installation path
#define SCY_INSTALL_DIR "${LibSourcey_INSTALL_DIR}"

// Building as shared library (.so or .dll)
#cmakedefine SCY_SHARED_LIBRARY

// Disable logging
#cmakedefine SCY_ENABLE_LOGGING

// Attempt to recover from internal exceptions
// Exceptions thrown inside thread and stream context will be caught, logged and
// handled via the event loop in an attempt to prevent crashes.
#cmakedefine SCY_EXCEPTION_RECOVERY

// LibSourcey modules
// cmakedefine HAVE_SCY_base
// cmakedefine HAVE_SCY_http
// cmakedefine HAVE_SCY_json
// cmakedefine HAVE_SCY_av
// cmakedefine HAVE_SCY_net
// cmakedefine HAVE_SCY_rtp
// cmakedefine HAVE_SCY_sdp
// cmakedefine HAVE_SCY_socketio
// cmakedefine HAVE_SCY_stun
// cmakedefine HAVE_SCY_symple
// cmakedefine HAVE_SCY_turn
// cmakedefine HAVE_SCY_xml
// cmakedefine HAVE_SCY_xmpp
// cmakedefine HAVE_SCY_uv
// cmakedefine HAVE_SCY_rtsp
// cmakedefine HAVE_SCY_ice
// cmakedefine HAVE_SCY_pacm
// cmakedefine HAVE_SCY_webrtc
// cmakedefine HAVE_SCY_anionu
// cmakedefine HAVE_SCY_spotapi

// LibUV library
#cmakedefine HAVE_LIBUV

// OpenSSL library
#cmakedefine HAVE_OPENSSL
#cmakedefine OPENSSL_IS_BORINGSSL

// FFmpeg video library
#cmakedefine HAVE_FFMPEG
#cmakedefine HAVE_FFMPEG_AVCODEC
#cmakedefine HAVE_FFMPEG_AVFORMAT
#cmakedefine HAVE_FFMPEG_AVUTIL
#cmakedefine HAVE_FFMPEG_AVFILTER
#cmakedefine HAVE_FFMPEG_AVDEVICE
#cmakedefine HAVE_FFMPEG_AVRESAMPLE
#cmakedefine HAVE_FFMPEG_SWRESAMPLE
#cmakedefine HAVE_FFMPEG_SWSCALE
#cmakedefine HAVE_FFMPEG_POSTPROC

// OpenCV library
#cmakedefine HAVE_OPENCV

// RtAudio library
#cmakedefine HAVE_RTAUDIO

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

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

// Define to 1 if your processor stores words with the most significant byte
// first (like Motorola and SPARC, unlike Intel and VAX).
#cmakedefine WORDS_BIGENDIAN


//
/// Platform and compiler definitions
//

#ifdef _WIN32 // Windows (x64 and x86)
#define SCY_WIN
#endif
#if __unix__ // Unix
#define SCY_UNIX
#endif
#if __posix__ // POSIX
#define SCY_POSIX
#endif
#if __linux__ // Linux
#define SCY_LINUX
#endif
#if __APPLE__ // Mac OS
#define SCY_APPLE
#endif
#if __GNUC__ // GCC compiler
#define SCY_GNUC
#endif
#if defined(__MINGW32__) || defined(__MINGW64__) // MinGW
#define SCY_MINGW
#endif


//
/// Windows specific
//

#ifdef SCY_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 SCY_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 // SCY_WIN
