libsbml-draw
SagittariusPlatform.h
Go to the documentation of this file.
1 /* MIT License
2  */
3 
4 //== FILEDOC =========================================================================
5 
16 //== BEGINNING OF CODE ===============================================================
17 
18 #include "SagittariusConfigure.h"
19 
20 #ifndef __SAGITTARIUS_PLATFORM_H_
21 #define __SAGITTARIUS_PLATFORM_H_
22 
23 //namespace Sagittarius //Pointless
24 //{
25 //Platform parameters
26 #define SAGITTARIUS_PLATFORM_WIN 1
27 #define SAGITTARIUS_PLATFORM_APPLE 2
28 #define SAGITTARIUS_PLATFORM_LINUX 3
29 
30 #define SAGITTARIUS_COMPILER_GNUC 1
31 #define SAGITTARIUS_COMPILER_MINGW 2
32 #define SAGITTARIUS_COMPILER_MSVC 3
33 #define SAGITTARIUS_COMPILER_BORL 4
34 
35 #define SAGITTARIUS_LITTLE_ENDIAN 1
36 #define SAGITTARIUS_BIG_ENDIAN 2
37 
38 #define SAGITTARIUS_ARCH_32 1
39 #define SAGITTARIUS_ARCH_64 2
40 
41 //Determine compiler type and version
42 #if defined ( __MINGW32__ )
43  //Must test before __GNUC__ because MinGW also defines that (maybe)
44 # define SAGITTARIUS_COMPILER SAGITTARIUS_COMPILER_MINGW
45 //GNU C/C++ compiler
46 #elif defined( __GNUC__ )
47 # define SAGITTARIUS_COMPILER SAGITTARIUS_COMPILER_GNUC
48 # if defined ( __GNUC_PATCHLEVEL__ )
49 # define SAGITTARIUS_COMPILER_VERSION ( ( __GNUC__ )*100 ) + ( ( __GNUC_MINOR__ )*10 ) + __GNUC_PATCHLEVEL__
50 # else
51 # define SAGITTARIUS_COMPILER_VERSION ( ( __GNUC__ )*100 ) + ( ( __GNUC_MINOR__ )*10 )
52 # define SAGITTARIUS_CXX_STD_LIB_VER __GLIBCXX__
53 # endif
54 //Determine libstdc++ version
55 # define SAGITTARIUS_CXX_STD_LIB_VER __GLIBCXX__
56 #elif defined ( _MSC_VER )
57 # define SAGITTARIUS_COMPILER SAGITTARIUS_COMPILER_MSVC
58 # define SAGITTARIUS_COMPILER_VERSION _MSC_VER
59 #elif defined ( __BORLANDC__ )
60 # error "Borland C/C++ is not supported"
61 #else
62 # error "This compiler does not appear to be supported"
63 #endif
64 
65 // http://stackoverflow.com/questions/295120/c-mark-as-deprecated
66 # if (SAGITTARIUS_COMPILER == SAGITTARIUS_COMPILER_MSVC)
67 # define SAGITTARIUS_DEPRECATED(f) __declspec(deprecated) f
68 # else
69 # define SAGITTARIUS_DEPRECATED(f) f __attribute__((deprecated))
70 # endif
71 
72 //Determine the appropriate way to force inlining of a function
73 #if SAGITTARIUS_COMPILER == SAGITTARIUS_COMPILER_MSVC
74 # if SAGITTARIUS_COMPILER_VERSION >= 1200
75 # define FORCEINLINE __forceinline
76 # endif
77 #elif defined( __MINGW32__ )
78 # if !defined(FORCEINLINE)
79 # define FORCEINLINE __inline
80 # endif
81 #else
82 # define FORCEINLINE __inline
83 #endif
84 
85 //Determine what the current platform is
86 #if defined( __WIN32__ ) || defined ( _WIN32 )
87 # define SAGITTARIUS_PLATFORM SAGITTARIUS_PLATFORM_WIN
88 # define SAGITTARIUS_IS_POSIX_VAR 0 //True if on a POSIX variant
89 #elif defined ( __APPLE_CC__ )
90 # define SAGITTARIUS_PLATFORM SAGITTARIUS_PLATFORM_APPLE
91 # define SAGITTARIUS_IS_POSIX_VAR 1
92 #elif defined ( __linux__ )
93 # define SAGITTARIUS_PLATFORM SAGITTARIUS_PLATFORM_LINUX
94 # define SAGITTARIUS_IS_POSIX_VAR 1
95 #else
96 # warning Platform unknown trying Linux
97 # define SAGITTARIUS_PLATFORM SAGITTARIUS_PLATFORM_LINUX
98 #endif
99 
100 //Determine if the platform supports a 64-bit architecture
101 #if defined( __x86_64__ ) || defined( _M_X64 )
102 # define SAGITTARIUS_ARCH SAGITTARIUS_ARCH_64
103 # define SG_PTR_SIZE 8
104 #else
105 # define SAGITTARIUS_ARCH SAGITTARIUS_ARCH_32
106 # define SG_PTR_SIZE 4
107 #endif
108 
109 #define GF_MACRO_QUOTE( x ) # x
110 #define GF_EXPAND_AND_QUOTE( x ) GF_MACRO_QUOTE(x)
111 #define SAGITTARIUS_WARN( x ) message( __FILE__ "(" MACRO_QUOTE( __LINE__ ) ") : " x "\n" )
112 
113 //Platform specific settings
114 #if SAGITTARIUS_PLATFORM == SAGITTARIUS_PLATFORM_WIN
115 # include "SagittariusPlatformWin.h"
116 # define OS_SEP MACRO_QUOTE(/)
117  //The client switch controls the behavior of _GraphfabExport.
118  //When building a library, symbols must be exported, so _GraphfabExport
119  //is synonymous with __declspec(dllexport). When linking to said library,
120  //the same symbols must instead be imported, hence the meaning of _GraphfabExport
121  //is changed to __declspec(dllimport)
122 # if(!SBNW_CLIENT_BUILD)
123 # define _GraphfabExport __declspec(dllexport)
124 # define _GraphfabPrivate
125 # else
126 # define _GraphfabExport __declspec(dllimport)
127 # define _GraphfabPrivate
128 # endif
129 #elif SAGITTARIUS_PLATFORM == SAGITTARIUS_PLATFORM_APPLE
130 # define _GraphfabExport
131 # define _GraphfabPrivate
132 #elif SAGITTARIUS_PLATFORM == SAGITTARIUS_PLATFORM_LINUX
133 # define OS_SEP MACRO_QUOTE(/)
134 # if defined( SAGITTARIUS_GCC_VISIBILITY )
135 # define _GraphfabExport __attribute__ ((visibility("default")))
136 # define _GraphfabPrivate __attribute__ ((visibility("hidden")))
137 # else
138 # define _GraphfabExport
139 # define _GraphfabPrivate
140 # endif
141 #endif
142 
143 #define SAGITTARIUS_UNICODE_SUPPORT 0
144 
145 #ifdef SAGITTARIUS_CONFIG_BIG_ENDIAN
146 # define SAGITTARIUS_ENDIAN SAGITTARIUS_BIG_ENDIAN
147 #else
148 # define SAGITTARIUS_ENDIAN SAGITTARIUS_LITTLE_ENDIAN
149 #endif
150 
151 //} //namespace Sagittarius
152 
153 #endif