101 lines
1.9 KiB
C
101 lines
1.9 KiB
C
|
#ifndef HX_OS_H
|
||
|
#define HX_OS_H
|
||
|
|
||
|
// OS FLAGS
|
||
|
#if defined(_WIN32)
|
||
|
# define NEKO_WINDOWS
|
||
|
#endif
|
||
|
|
||
|
#if defined(__APPLE__) || defined(__MACH__) || defined(macintosh)
|
||
|
# define NEKO_MAC
|
||
|
#endif
|
||
|
|
||
|
#if defined(linux) || defined(__linux__)
|
||
|
# define NEKO_LINUX
|
||
|
#endif
|
||
|
|
||
|
#if defined(__FreeBSD_kernel__)
|
||
|
# define NEKO_GNUKBSD
|
||
|
#endif
|
||
|
|
||
|
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||
|
# define NEKO_BSD
|
||
|
#endif
|
||
|
|
||
|
// COMPILER/PROCESSOR FLAGS
|
||
|
#if defined(__GNUC__)
|
||
|
# define NEKO_GCC
|
||
|
#endif
|
||
|
|
||
|
#if defined(_MSC_VER)
|
||
|
# define NEKO_VCC
|
||
|
#endif
|
||
|
|
||
|
#if defined(__MINGW32__)
|
||
|
# define NEKO_MINGW
|
||
|
#endif
|
||
|
|
||
|
#if defined(__i386__) || defined(_WIN32)
|
||
|
# define NEKO_X86
|
||
|
#endif
|
||
|
|
||
|
#if defined(__ppc__)
|
||
|
# define NEKO_PPC
|
||
|
#endif
|
||
|
|
||
|
#if !defined(_64BITS) && (defined(__LP64__) || defined(_LP64))
|
||
|
#define _64BITS
|
||
|
#endif
|
||
|
|
||
|
#if defined(_64BITS)
|
||
|
# define NEKO_64BITS
|
||
|
#endif
|
||
|
|
||
|
#if defined(NEKO_LINUX) || defined(NEKO_MAC) || defined(NEKO_BSD) || defined(NEKO_GNUKBSD)
|
||
|
# define NEKO_POSIX
|
||
|
#endif
|
||
|
|
||
|
#if defined(NEKO_GCC)
|
||
|
# define NEKO_THREADED
|
||
|
# define NEKO_DIRECT_THREADED
|
||
|
#endif
|
||
|
|
||
|
#include <stddef.h>
|
||
|
#ifndef NEKO_VCC
|
||
|
# include <stdint.h>
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#undef EXPORT
|
||
|
#undef IMPORT
|
||
|
#if defined(NEKO_VCC) || defined(NEKO_MINGW)
|
||
|
# define INLINE __inline
|
||
|
# define EXPORT __declspec( dllexport )
|
||
|
# define IMPORT __declspec( dllimport )
|
||
|
#elif defined (HX_LINUX)
|
||
|
# define INLINE inline
|
||
|
# define EXPORT __attribute__ ((visibility("default")))
|
||
|
# define IMPORT
|
||
|
#else
|
||
|
# define INLINE inline
|
||
|
# define EXPORT __attribute__ ((visibility("default")))
|
||
|
# define IMPORT
|
||
|
#endif
|
||
|
|
||
|
#ifdef NEKO_POSIX
|
||
|
# include <errno.h>
|
||
|
# define POSIX_LABEL(name) name:
|
||
|
# define HANDLE_EINTR(label) if( errno == EINTR ) goto label
|
||
|
# define HANDLE_FINTR(f,label) if( ferror(f) && errno == EINTR ) goto label
|
||
|
#else
|
||
|
# define POSIX_LABEL(name)
|
||
|
# define HANDLE_EINTR(label)
|
||
|
# define HANDLE_FINTR(f,label)
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif
|