1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #ifndef MYGUI_PLATFORM_H_
8 #define MYGUI_PLATFORM_H_
9 
10 // Definition of platforms
11 #define MYGUI_PLATFORM_WIN32		1
12 #define MYGUI_PLATFORM_LINUX		2
13 #define MYGUI_PLATFORM_APPLE		3
14 
15 // Definition of compilers
16 #define MYGUI_COMPILER_MSVC 1
17 #define MYGUI_COMPILER_GNUC 2
18 
19 
20 // Find platform
21 #if defined (__WIN32__) || defined (_WIN32)
22 #	define MYGUI_PLATFORM MYGUI_PLATFORM_WIN32
23 #elif defined (__APPLE_CC__)
24 #	define MYGUI_PLATFORM MYGUI_PLATFORM_APPLE
25 #else
26 #	define MYGUI_PLATFORM MYGUI_PLATFORM_LINUX
27 #endif
28 
29 // Find compiler
30 #if defined( _MSC_VER )
31 #	define MYGUI_COMPILER MYGUI_COMPILER_MSVC
32 #	define MYGUI_COMP_VER _MSC_VER
33 
34 #elif defined( __GNUC__ )
35 #	define MYGUI_COMPILER MYGUI_COMPILER_GNUC
36 #	define MYGUI_COMP_VER (((__GNUC__)*100) + \
37 		(__GNUC_MINOR__*10) + \
38 		__GNUC_PATCHLEVEL__)
39 #else
40 #	pragma error "Unknown compiler! Stop building!!!"
41 #endif
42 
43 // Windows settings
44 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
45 #
46 #	if defined( MYGUI_STATIC )
47 #		define MYGUI_EXPORT
48 #	elif defined( MYGUI_BUILD )
49 #		define MYGUI_EXPORT __declspec( dllexport )
50 #	else
51 #		if defined( __MINGW32__ )
52 #			define MYGUI_EXPORT
53 #		else
54 #			define MYGUI_EXPORT __declspec( dllimport )
55 #		endif
56 #	endif
57 #
58 #	if defined( MYGUI_STATIC )
59 #		define MYGUI_EXPORT_DLL
60 #	elif defined( MYGUI_BUILD_DLL )
61 #		define MYGUI_EXPORT_DLL __declspec( dllexport )
62 #	else
63 #		if defined( __MINGW32__ )
64 #			define MYGUI_EXPORT_DLL
65 #		else
66 #			define MYGUI_EXPORT_DLL __declspec( dllimport )
67 #		endif
68 #	endif
69 #
70 #// Win32 compilers use _DEBUG for specifying debug builds.
71 #	ifdef _DEBUG
72 #		define MYGUI_DEBUG_MODE 1
73 #	else
74 #		define MYGUI_DEBUG_MODE 0
75 #	endif
76 #endif
77 
78 
79 // Linux/Apple Settings
80 #if MYGUI_PLATFORM == MYGUI_PLATFORM_LINUX || MYGUI_PLATFORM == MYGUI_PLATFORM_APPLE
81 #
82 // Add -fvisibility=hidden to compiler options. With -fvisibility=hidden, you are telling
83 // GCC that every declaration not explicitly marked with a visibility attribute (MYGUI_EXPORT)
84 // has a hidden visibility (like in windows).
85 #	ifdef MYGUI_GCC_VISIBILITY
86 #		define MYGUI_EXPORT  __attribute__ ((visibility("default")))
87 #		define MYGUI_EXPORT_DLL  __attribute__ ((visibility("default")))
88 #	else
89 #		define MYGUI_EXPORT
90 #		define MYGUI_EXPORT_DLL
91 #	endif
92 #
93 // Unlike the Win32 compilers, Linux compilers seem to use DEBUG for when
94 // specifying a debug build.
95 // (??? this is wrong, on Linux debug builds aren't marked in any way unless
96 // you mark it yourself any way you like it -- zap ???)
97 #	ifdef DEBUG
98 #		define MYGUI_DEBUG_MODE 1
99 #	else
100 #		define MYGUI_DEBUG_MODE 0
101 #	endif
102 
103 #endif
104 
105 #endif // MYGUI_PLATFORM_H_
106