FBX C++ API Reference
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fbxarch.h
Go to the documentation of this file.
1 /****************************************************************************************
2 
3  Copyright (C) 2015 Autodesk, Inc.
4  All rights reserved.
5 
6  Use of this software is subject to the terms of the Autodesk license agreement
7  provided at the time of installation or download, or which otherwise accompanies
8  this software in either electronic or hard copy form.
9 
10 ****************************************************************************************/
11 
43 #ifndef _FBXSDK_CORE_ARCH_ARCH_H_
44 #define _FBXSDK_CORE_ARCH_ARCH_H_
45 
46 #if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------
47 
48  #define FBXSDK_ENV_WIN 1
49 
50  #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
51  #define FBXSDK_ENV_WINSTORE 1
52  #endif
53 
54  #if defined(_M_X64)
55  #define FBXSDK_ARCH_AMD64 1
56  #define FBXSDK_CPU_64 1
57  #elif defined(_M_IX86)
58  #define FBXSDK_ARCH_IX86 1
59  #define FBXSDK_CPU_32 1
60  #elif defined(_M_ARM)
61  #define FBXSDK_ARCH_ARM 1
62  #define FBXSDK_CPU_32 1
63  #else
64  #error Unsupported architecture!
65  #endif
66 
67  #if defined(_MSC_VER)
68  #define FBXSDK_COMPILER_MSC 1
69  #elif defined(__GNUC__)
70  #define FBXSDK_COMPILER_GNU 1
71  #elif defined(__ICL)
72  #define FBXSDK_COMPILER_INTEL 1
73  #else
74  #error Unsupported compiler!
75  #endif
76 
77 #elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X ---------------------------
78 
79  #include "TargetConditionals.h"
80 
81  #define FBXSDK_ENV_MAC 1
82 
83  #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
84  #define FBXSDK_ENV_IOS 1
85  #endif
86 
87  #if defined(__i386__)
88  #define FBXSDK_ARCH_IX86 1
89  #define FBXSDK_CPU_32 1
90  #elif defined(__x86_64__) || defined(__x86_64)
91  #define FBXSDK_ARCH_AMD64 1
92  #define FBXSDK_CPU_64 1
93  #elif defined(__arm__)
94  #define FBXSDK_ARCH_ARM 1
95  #define FBXSDK_CPU_32 1
96  #elif defined(__arm64__)
97  #define FBXSDK_ARCH_ARM 1
98  #define FBXSDK_CPU_64 1
99  #else
100  #error Unsupported architecture!
101  #endif
102 
103  #if defined(__GNUC__)
104  #define FBXSDK_COMPILER_GNU 1
105  #endif
106 
107  #if defined(__clang__)
108  #define FBXSDK_COMPILER_CLANG 1
109  #endif
110 
111  #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG)
112  #error Unsupported compiler!
113  #endif
114 
115 #elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux ---------------------------------
116 
117  #define FBXSDK_ENV_LINUX 1
118 
119  #if defined(EMSCRIPTEN)
120  #define FBXSDK_ENV_EMSCRIPTEN 1
121  #endif
122 
123  #if defined(ANDROID)
124  #define FBXSDK_ENV_ANDROID 1
125  #endif
126 
127  #if defined(__i386__)
128  #define FBXSDK_ARCH_IX86 1
129  #define FBXSDK_CPU_32 1
130  #elif defined(__x86_64__) || defined(__x86_64)
131  #define FBXSDK_ARCH_AMD64 1
132  #define FBXSDK_CPU_64 1
133  #elif defined(__arm__)
134  #define FBXSDK_ARCH_ARM 1
135  #define FBXSDK_CPU_32 1
136  #elif defined(EMSCRIPTEN)
137  #define FBXSDK_ARCH_AMD64 1
138  #define FBXSDK_CPU_64 1
139  #else
140  #error Unsupported architecture!
141  #endif
142 
143  #if defined(__GNUC__)
144  #define FBXSDK_COMPILER_GNU 1
145  #elif defined(EMSCRIPTEN)
146  #define FBXSDK_COMPILER_EMSCRIPTEN 1
147  #else
148  #error Unsupported compiler!
149  #endif
150  #else
151  #error Unsupported platform!
152 #endif
153 
154 //---------------------------------------------------------------------------------------
155 //Compiler Specifics
156 #if defined(FBXSDK_SHARED)
157  #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL)
158  #define FBXSDK_DLLIMPORT __declspec(dllimport)
159  #define FBXSDK_DLLEXPORT __declspec(dllexport)
160  #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4)
161  #define FBXSDK_DLLIMPORT __attribute__((visibility("default")))
162  #define FBXSDK_DLLEXPORT __attribute__((visibility("default")))
163  #else
164  #define FBXSDK_DLLIMPORT
165  #define FBXSDK_DLLEXPORT
166  #endif
167 #else
168  #define FBXSDK_DLLIMPORT
169  #define FBXSDK_DLLEXPORT
170 #endif
171 
172 #ifndef FBXSDK_DLL
173  #define FBXSDK_DLL FBXSDK_DLLIMPORT
174 #endif
175 
176 #if defined(FBXSDK_COMPILER_MSC)
177  #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
178  #if _MSC_VER >= 1300 // 7.1
179  #define FBX_DEPRECATED __declspec(deprecated)
180  #else
181  #define FBX_DEPRECATED
182  #endif
183 #elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN)
184  #define FBX_DEPRECATED __attribute__((deprecated))
185 #elif defined(FBXSDK_COMPILER_INTEL)
186  #if __INTEL_COMPILER >= 810
187  #define FBX_DEPRECATED __declspec(deprecated)
188  #else
189  #define FBX_DEPRECATED
190  #endif
191 #else
192  #error Unsupported compiler!
193 #endif
194 
195 #ifdef FBXSDK_COMPILER_CLANG
196  #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p)))
197 #else
198  #define FBX_UNUSED(p) (void)(p)
199 #endif
200 
201 //---------------------------------------------------------------------------------------
202 //Platform Standardization
203 #ifndef NULL
204  #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
205  #define NULL (__null)
206  #else
207  #if defined(__cplusplus)
208  #define NULL 0
209  #else
210  #define NULL ((void*)0)
211  #endif
212  #endif
213 #endif
214 
215 #if !defined(_MAX_PATH)
216  #define _MAX_PATH 260
217 #endif
218 
219 #if defined(FBXSDK_ENV_WIN)
220  #define snprintf _snprintf //for stdio.h platform compatibility
221 #endif
222 
223 #if !defined(FBXSDK_COMPILER_MSC)
224  #ifndef strcmpi
225  #define strcmpi strcasecmp
226  #endif
227  #ifndef stricmp
228  #define stricmp strcasecmp
229  #endif
230  #ifndef strncmpi
231  #define strncmpi strncasecmp
232  #endif
233  #ifndef strnicmp
234  #define strnicmp strncasecmp
235  #endif
236 #endif
237 
238 #endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */