fbxarch.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /****************************************************************************************
  2. Copyright (C) 2015 Autodesk, Inc.
  3. All rights reserved.
  4. Use of this software is subject to the terms of the Autodesk license agreement
  5. provided at the time of installation or download, or which otherwise accompanies
  6. this software in either electronic or hard copy form.
  7. ****************************************************************************************/
  8. /** \file fbxarch.h
  9. * Architecture definition.
  10. *
  11. * List of available preprocessor defines that can appear on various systems:
  12. *
  13. * Operating System Environment:
  14. * FBXSDK_ENV_WIN (Windows)
  15. * FBXSDK_ENV_WINSTORE (Windows Store App)
  16. * FBXSDK_ENV_MAC (MacOSX)
  17. * FBXSDK_ENV_IOS (iOS)
  18. * FBXSDK_ENV_LINUX (Linux)
  19. *
  20. * Architecture:
  21. * FBXSDK_ARCH_IX86 (Intel x86)
  22. * FBXSDK_ARCH_AMD64 (AMD64)
  23. * FBXSDK_ARCH_ARM (Advanced RISC Machine)
  24. *
  25. * Processor:
  26. * FBXSDK_CPU_32 (32bit processor)
  27. * FBXSDK_CPU_64 (64bit processor)
  28. *
  29. * Compiler:
  30. * FBXSDK_COMPILER_MSC (Microsoft Compiler)
  31. * FBXSDK_COMPILER_GNU (GNU Compiler)
  32. * FBXSDK_COMPILER_INTEL (Intel Compiler)
  33. * FBXSDK_COMPILER_CLANG (Clang Compiler)
  34. *
  35. * These definitions are based on the information found here:
  36. * http://predef.sourceforge.net/index.php
  37. *
  38. */
  39. #ifndef _FBXSDK_CORE_ARCH_ARCH_H_
  40. #define _FBXSDK_CORE_ARCH_ARCH_H_
  41. #if defined(_WIN32) || defined(_WIN64) //Microsoft Windows ------------------------------
  42. #define FBXSDK_ENV_WIN 1
  43. #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
  44. #define FBXSDK_ENV_WINSTORE 1
  45. #endif
  46. #if defined(_M_X64)
  47. #define FBXSDK_ARCH_AMD64 1
  48. #define FBXSDK_CPU_64 1
  49. #elif defined(_M_IX86)
  50. #define FBXSDK_ARCH_IX86 1
  51. #define FBXSDK_CPU_32 1
  52. #elif defined(_M_ARM)
  53. #define FBXSDK_ARCH_ARM 1
  54. #define FBXSDK_CPU_32 1
  55. #else
  56. #error Unsupported architecture!
  57. #endif
  58. #if defined(_MSC_VER)
  59. #define FBXSDK_COMPILER_MSC 1
  60. #elif defined(__GNUC__)
  61. #define FBXSDK_COMPILER_GNU 1
  62. #elif defined(__ICL)
  63. #define FBXSDK_COMPILER_INTEL 1
  64. #else
  65. #error Unsupported compiler!
  66. #endif
  67. #elif defined(__APPLE__) || defined(__MACH__) //Apple MacOS/X ---------------------------
  68. #include "TargetConditionals.h"
  69. #define FBXSDK_ENV_MAC 1
  70. #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
  71. #define FBXSDK_ENV_IOS 1
  72. #endif
  73. #if defined(__i386__)
  74. #define FBXSDK_ARCH_IX86 1
  75. #define FBXSDK_CPU_32 1
  76. #elif defined(__x86_64__) || defined(__x86_64)
  77. #define FBXSDK_ARCH_AMD64 1
  78. #define FBXSDK_CPU_64 1
  79. #elif defined(__arm__)
  80. #define FBXSDK_ARCH_ARM 1
  81. #define FBXSDK_CPU_32 1
  82. #elif defined(__arm64__)
  83. #define FBXSDK_ARCH_ARM 1
  84. #define FBXSDK_CPU_64 1
  85. #else
  86. #error Unsupported architecture!
  87. #endif
  88. #if defined(__GNUC__)
  89. #define FBXSDK_COMPILER_GNU 1
  90. #endif
  91. #if defined(__clang__)
  92. #define FBXSDK_COMPILER_CLANG 1
  93. #endif
  94. #if !defined(FBXSDK_COMPILER_GNU) && !defined(FBXSDK_COMPILER_CLANG)
  95. #error Unsupported compiler!
  96. #endif
  97. #elif defined(__linux__) || defined(__CYGWIN__) || defined(EMSCRIPTEN) || defined(ANDROID) //Linux ---------------------------------
  98. #define FBXSDK_ENV_LINUX 1
  99. #if defined(EMSCRIPTEN)
  100. #define FBXSDK_ENV_EMSCRIPTEN 1
  101. #endif
  102. #if defined(ANDROID)
  103. #define FBXSDK_ENV_ANDROID 1
  104. #endif
  105. #if defined(__i386__)
  106. #define FBXSDK_ARCH_IX86 1
  107. #define FBXSDK_CPU_32 1
  108. #elif defined(__x86_64__) || defined(__x86_64)
  109. #define FBXSDK_ARCH_AMD64 1
  110. #define FBXSDK_CPU_64 1
  111. #elif defined(__arm__)
  112. #define FBXSDK_ARCH_ARM 1
  113. #define FBXSDK_CPU_32 1
  114. #elif defined(EMSCRIPTEN)
  115. #define FBXSDK_ARCH_AMD64 1
  116. #define FBXSDK_CPU_64 1
  117. #else
  118. #error Unsupported architecture!
  119. #endif
  120. #if defined(__GNUC__)
  121. #define FBXSDK_COMPILER_GNU 1
  122. #elif defined(EMSCRIPTEN)
  123. #define FBXSDK_COMPILER_EMSCRIPTEN 1
  124. #else
  125. #error Unsupported compiler!
  126. #endif
  127. #else
  128. #error Unsupported platform!
  129. #endif
  130. //---------------------------------------------------------------------------------------
  131. //Compiler Specifics
  132. #if defined(FBXSDK_SHARED)
  133. #if defined(FBXSDK_COMPILER_MSC) || defined(FBXSDK_COMPILER_INTEL)
  134. #define FBXSDK_DLLIMPORT __declspec(dllimport)
  135. #define FBXSDK_DLLEXPORT __declspec(dllexport)
  136. #elif defined(FBXSDK_COMPILER_GNU) && (__GNUC__ >= 4)
  137. #define FBXSDK_DLLIMPORT __attribute__((visibility("default")))
  138. #define FBXSDK_DLLEXPORT __attribute__((visibility("default")))
  139. #else
  140. #define FBXSDK_DLLIMPORT
  141. #define FBXSDK_DLLEXPORT
  142. #endif
  143. #else
  144. #define FBXSDK_DLLIMPORT
  145. #define FBXSDK_DLLEXPORT
  146. #endif
  147. #ifndef FBXSDK_DLL
  148. #define FBXSDK_DLL FBXSDK_DLLIMPORT
  149. #endif
  150. #if defined(FBXSDK_COMPILER_MSC)
  151. #pragma warning(disable : 4251) //'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
  152. #if _MSC_VER >= 1300 // 7.1
  153. #define FBX_DEPRECATED __declspec(deprecated)
  154. #else
  155. #define FBX_DEPRECATED
  156. #endif
  157. #elif defined(FBXSDK_COMPILER_GNU) || defined(FBXSDK_COMPILER_EMSCRIPTEN)
  158. #define FBX_DEPRECATED __attribute__((deprecated))
  159. #elif defined(FBXSDK_COMPILER_INTEL)
  160. #if __INTEL_COMPILER >= 810
  161. #define FBX_DEPRECATED __declspec(deprecated)
  162. #else
  163. #define FBX_DEPRECATED
  164. #endif
  165. #else
  166. #error Unsupported compiler!
  167. #endif
  168. #ifdef FBXSDK_COMPILER_CLANG
  169. #define FBX_UNUSED(p) _Pragma(FBX_STRINGIFY(unused(p)))
  170. #else
  171. #define FBX_UNUSED(p) (void)(p)
  172. #endif
  173. //---------------------------------------------------------------------------------------
  174. //Platform Standardization
  175. #ifndef NULL
  176. #if defined(__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
  177. #define NULL (__null)
  178. #else
  179. #if defined(__cplusplus)
  180. #define NULL 0
  181. #else
  182. #define NULL ((void*)0)
  183. #endif
  184. #endif
  185. #endif
  186. #if !defined(_MAX_PATH)
  187. #define _MAX_PATH 260
  188. #endif
  189. #if defined(FBXSDK_ENV_WIN)
  190. #define snprintf _snprintf //for stdio.h platform compatibility
  191. #endif
  192. #if !defined(FBXSDK_COMPILER_MSC)
  193. #ifndef strcmpi
  194. #define strcmpi strcasecmp
  195. #endif
  196. #ifndef stricmp
  197. #define stricmp strcasecmp
  198. #endif
  199. #ifndef strncmpi
  200. #define strncmpi strncasecmp
  201. #endif
  202. #ifndef strnicmp
  203. #define strnicmp strncasecmp
  204. #endif
  205. #endif
  206. #endif /* _FBXSDK_CORE_ARCH_ARCH_H_ */