aboutsummaryrefslogtreecommitdiff
path: root/dep/g3dlite/G3D/platform.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/g3dlite/G3D/platform.h')
-rw-r--r--dep/g3dlite/G3D/platform.h331
1 files changed, 331 insertions, 0 deletions
diff --git a/dep/g3dlite/G3D/platform.h b/dep/g3dlite/G3D/platform.h
new file mode 100644
index 00000000000..11ba0127a16
--- /dev/null
+++ b/dep/g3dlite/G3D/platform.h
@@ -0,0 +1,331 @@
+/**
+ @file platform.h
+
+ \#defines for platform specific issues.
+
+ @maintainer Morgan McGuire, http://graphics.cs.williams.edu
+
+ @created 2003-06-09
+ @edited 2010-01-11
+ */
+
+#ifndef G3D_platform_h
+#define G3D_platform_h
+
+/**
+ The version number of G3D in the form: MmmBB ->
+ version M.mm [beta BB]
+ */
+#define G3D_VER 80004
+
+// fatal error for unsupported architectures
+#if defined(__powerpc__)
+# error PowerPC is not supported by G3D!
+#endif
+
+#if defined(G3D_RELEASEDEBUG)
+# define G3D_DEBUGRELEASE
+#endif
+
+#if defined(G3D_DEBUGRELEASE) && defined(_DEBUG)
+# undef _DEBUG
+#endif
+
+/** @def G3D_DEBUG()
+ Defined if G3D is built in debug mode. */
+#if !defined(G3D_DEBUG) && (defined(_DEBUG) || defined(G3D_DEBUGRELEASE))
+# define G3D_DEBUG
+#endif
+
+#ifndef _MSC_VER
+/// Fast call is a register-based optimized calling convention supported only by Visual C++
+#define __fastcall
+
+#endif
+
+#ifdef _MSC_VER
+ #define G3D_WIN32
+#elif defined(__FreeBSD__) || defined(__OpenBSD__)
+ #define G3D_FREEBSD
+ #define G3D_LINUX
+#elif defined(__linux__)
+ #define G3D_LINUX
+#elif defined(__APPLE__)
+ #define G3D_OSX
+
+ // Prevent OS X fp.h header from being included; it defines
+ // pi as a constant, which creates a conflict with G3D
+#define __FP__
+#else
+ #error Unknown platform
+#endif
+
+// Detect 64-bit under various compilers
+#if (defined(_M_X64) || defined(_WIN64) || defined(__LP64__) || defined(_LP64))
+# define G3D_64BIT
+ #if defined(WIN32)
+ #include <intrin.h>
+ #endif
+#else
+# define G3D_32BIT
+#endif
+
+// Strongly encourage inlining on gcc
+#ifdef __GNUC__
+#define inline __inline__
+#endif
+
+
+// Verify that the supported compilers are being used and that this is a known
+// processor.
+
+#ifdef G3D_LINUX
+# ifndef __GNUC__
+# error G3D only supports the gcc compiler on Linux.
+# endif
+#endif
+
+#ifdef G3D_OSX
+# ifndef __GNUC__
+# error G3D only supports the gcc compiler on OS X.
+# endif
+
+# if defined(__i386__)
+# define G3D_OSX_INTEL
+# elif defined(__PPC__)
+# define G3D_OSX_PPC
+# else
+# define G3D_OSX_UNKNOWN
+# endif
+
+#endif
+
+
+#ifdef _MSC_VER
+// Microsoft Visual C++ 8.0 ("Express") = 1400
+// Microsoft Visual C++ 7.1 ("2003") _MSC_VER = 1310
+// Microsoft Visual C++ 7.0 ("2002") _MSC_VER = 1300
+// Microsoft Visual C++ 6.0 _MSC_VER = 1200
+// Microsoft Visual C++ 5.0 _MSC_VER = 1100
+
+// Turn off warnings about deprecated C routines
+# pragma warning (disable : 4996)
+
+// Turn off "conditional expression is constant" warning; MSVC generates this
+// for debug assertions in inlined methods.
+# pragma warning (disable : 4127)
+
+/** @def G3D_DEPRECATED()
+ Creates deprecated warning. */
+# define G3D_DEPRECATED __declspec(deprecated)
+
+// Prevent Winsock conflicts by hiding the winsock API
+# ifndef _WINSOCKAPI_
+# define _G3D_INTERNAL_HIDE_WINSOCK_
+# define _WINSOCKAPI_
+# endif
+
+// Disable 'name too long for browse information' warning
+# pragma warning (disable : 4786)
+// TODO: remove
+# pragma warning (disable : 4244)
+
+# define restrict
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_PRINTF_ARGS
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_VPRINTF_ARGS
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_PRINTF_METHOD_ARGS
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_VPRINTF_METHOD_ARGS
+
+ // On MSVC, we need to link against the multithreaded DLL version of
+ // the C++ runtime because that is what SDL and ZLIB are compiled
+ // against. This is not the default for MSVC, so we set the following
+ // defines to force correct linking.
+ //
+ // For documentation on compiler options, see:
+ // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_.2f.md.2c_2f.ml.2c_2f.mt.2c_2f.ld.asp
+ // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_Compiler_Reference.asp
+ //
+
+ // DLL runtime
+ #ifndef _DLL
+ #define _DLL
+ #endif
+
+ // Multithreaded runtime
+ #ifndef _MT
+ #define _MT 1
+ #endif
+
+ // Ensure that we aren't forced into the static lib
+ #ifdef _STATIC_CPPLIB
+ #undef _STATIC_CPPLIB
+ #endif
+
+ #ifdef _DEBUG
+ #pragma comment (linker, "/NODEFAULTLIB:LIBCMTD.LIB")
+ #pragma comment (linker, "/NODEFAULTLIB:LIBCPMTD.LIB")
+ #pragma comment (linker, "/NODEFAULTLIB:LIBCPD.LIB")
+ #pragma comment (linker, "/DEFAULTLIB:MSVCPRTD.LIB")
+ #pragma comment(linker, "/NODEFAULTLIB:LIBCD.LIB")
+ #pragma comment(linker, "/DEFAULTLIB:MSVCRTD.LIB")
+ #else
+ #pragma comment(linker, "/NODEFAULTLIB:LIBC.LIB")
+ #pragma comment(linker, "/DEFAULTLIB:MSVCRT.LIB")
+ #pragma comment (linker, "/NODEFAULTLIB:LIBCMT.LIB")
+ #pragma comment (linker, "/NODEFAULTLIB:LIBCPMT.LIB")
+ #pragma comment(linker, "/NODEFAULTLIB:LIBCP.LIB")
+ #pragma comment (linker, "/DEFAULTLIB:MSVCPRT.LIB")
+ #endif
+
+ // Now set up external linking
+
+# ifdef _DEBUG
+ // zlib was linked against the release MSVCRT; force
+ // the debug version.
+# pragma comment(linker, "/NODEFAULTLIB:MSVCRT.LIB")
+# endif
+
+
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+
+
+# define NOMINMAX 1
+# ifndef _WIN32_WINNT
+# define _WIN32_WINNT 0x0500
+# endif
+# include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+# undef NOMINMAX
+
+# ifdef _G3D_INTERNAL_HIDE_WINSOCK_
+# undef _G3D_INTERNAL_HIDE_WINSOCK_
+# undef _WINSOCKAPI_
+# endif
+
+
+/** @def G3D_START_AT_MAIN()
+ Defines necessary wrapper around WinMain on Windows to allow transfer of execution to main(). */
+# define G3D_START_AT_MAIN()\
+int WINAPI G3D_WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw);\
+int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) {\
+ return G3D_WinMain(hInst, hPrev, szCmdLine, sw);\
+}
+
+#else
+
+/** @def G3D_START_AT_MAIN()
+ Defines necessary wrapper around WinMain on Windows to allow transfer of execution to main(). */
+# define G3D_START_AT_MAIN()
+
+#endif // win32
+
+#ifdef __GNUC__
+
+# include <stdint.h>
+
+# if __STDC_VERSION__ < 199901
+# define restrict __restrict__
+# endif
+
+/** @def G3D_DEPRECATED()
+ Creates deprecated warning. */
+# define G3D_DEPRECATED __attribute__((__deprecated__))
+
+// setup function calling conventions
+# if defined(__i386__) && ! defined(__x86_64__)
+
+# ifndef __cdecl
+# define __cdecl __attribute__((cdecl))
+# endif
+
+# ifndef __stdcall
+# define __stdcall __attribute__((stdcall))
+# endif
+
+# elif defined(__x86_64__)
+
+# ifndef __cdecl
+# define __cdecl
+# endif
+
+# ifndef __stdcall
+# define __stdcall
+# endif
+# endif // calling conventions
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_PRINTF_METHOD_ARGS __attribute__((__format__(__printf__, 2, 3)))
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_VPRINTF_METHOD_ARGS __attribute__((__format__(__printf__, 2, 0)))
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_PRINTF_ARGS __attribute__((__format__(__printf__, 1, 2)))
+
+/** @def G3D_CHECK_PRINTF_METHOD_ARGS()
+ Enables printf parameter validation on gcc. */
+# define G3D_CHECK_VPRINTF_ARGS __attribute__((__format__(__printf__, 1, 0)))
+#endif
+
+
+/**
+ @def STR(expression)
+
+ Creates a string from the expression. Frequently used with G3D::Shader
+ to express shading programs inline.
+
+ <CODE>STR(this becomes a string)\verbatim<PRE>\endverbatim evaluates the same as \verbatim<CODE>\endverbatim"this becomes a string"</CODE>
+ */
+#define STR(x) #x
+
+/** @def PRAGMA(expression)
+ \#pragma may not appear inside a macro, so this uses the pragma operator
+ to create an equivalent statement.*/
+#ifdef _MSC_VER
+// Microsoft's version http://msdn.microsoft.com/en-us/library/d9x1s805.aspx
+# define PRAGMA(x) __pragma(x)
+#else
+// C99 standard http://www.delorie.com/gnu/docs/gcc/cpp_45.html
+# define PRAGMA(x) _Pragma(#x)
+#endif
+
+/** @def G3D_BEGIN_PACKED_CLASS(byteAlign)
+ Switch to tight alignment
+ See G3D::Color3uint8 for an example.*/
+#ifdef _MSC_VER
+# define G3D_BEGIN_PACKED_CLASS(byteAlign) PRAGMA( pack(push, byteAlign) )
+#else
+# define G3D_BEGIN_PACKED_CLASS(byteAlign)
+#endif
+
+/** @def G3D_END_PACKED_CLASS(byteAlign)
+ End switch to tight alignment
+ See G3D::Color3uint8 for an example.*/
+#ifdef _MSC_VER
+# define G3D_END_PACKED_CLASS(byteAlign) ; PRAGMA( pack(pop) )
+#elif defined(__GNUC__)
+# define G3D_END_PACKED_CLASS(byteAlign) __attribute((aligned(byteAlign))) ;
+#else
+# define G3D_END_PACKED_CLASS(byteAlign) ;
+#endif
+
+
+// Header guard
+#endif