4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync/* Pixman uses some non-standard compiler features. This file ensures
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * they exist
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync *
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * The features are:
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync *
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * FUNC must be defined to expand to the current function
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * PIXMAN_EXPORT should be defined to whatever is required to
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * export functions from a shared library
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * limits limits for various types must be defined
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * inline must be defined
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync * force_inline must be defined
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync */
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#if defined (__GNUC__)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define FUNC ((const char*) (__PRETTY_FUNCTION__))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#elif defined (__sun) || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define FUNC ((const char*) (__func__))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#else
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define FUNC ((const char*) ("???"))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef INT16_MIN
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define INT16_MIN (-32767-1)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef INT16_MAX
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define INT16_MAX (32767)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef INT32_MIN
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define INT32_MIN (-2147483647-1)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef INT32_MAX
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define INT32_MAX (2147483647)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef UINT32_MIN
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define UINT32_MIN (0)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef UINT32_MAX
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define UINT32_MAX (4294967295U)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifndef M_PI
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define M_PI 3.14159265358979323846
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#ifdef _MSC_VER
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync/* 'inline' is available only in C++ in MSVC */
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define inline __inline
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define force_inline __forceinline
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#elif defined __GNUC__ || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define inline __inline__
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define force_inline __inline__ __attribute__ ((__always_inline__))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#else
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# ifndef force_inline
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define force_inline inline
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync/* GCC visibility */
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#if defined(__GNUC__) && __GNUC__ >= 4
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define PIXMAN_EXPORT __attribute__ ((visibility("default")))
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync/* Sun Studio 8 visibility */
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define PIXMAN_EXPORT __global
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#else
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync# define PIXMAN_EXPORT
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync#endif
4fedcd2da6f840dbadee84e579f146ad0f1fde22vboxsync