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