Go to the documentation of this file.
9 #ifndef MI_BASE_CONFIG_H
10 #define MI_BASE_CONFIG_H
23 #define MI_COPYRIGHT_YEARS_STRING "2018"
26 #define MI_COPYRIGHT_COMPANY_STRING "NVIDIA Corporation"
29 #define MI_COPYRIGHT_COPYRIGHT_STRING \
30 "Copyright " MI_COPYRIGHT_YEARS_STRING \
31 " " MI_COPYRIGHT_COMPANY_STRING ". All rights reserved."
34 #define MI_COPYRIGHT_PORTIONS_STRING \
35 "Portions " MI_COPYRIGHT_COPYRIGHT_STRING
70 # define MI_DLL_EXPORT __declspec(dllexport)
72 # define MI_DLL_EXPORT __declspec(dllimport)
75 #elif defined(__GNUC__) && !defined(__ICC)
76 # define MI_DLL_EXPORT __attribute__ ((visibility("default")))
77 # define MI_DLL_LOCAL __attribute__ ((visibility("hidden")))
79 # define MI_DLL_EXPORT
85 #define MI_BASE_JOIN( X, Y ) MI_BASE_DO_JOIN( X, Y )
86 #define MI_BASE_DO_JOIN( X, Y ) MI_BASE_DO_JOIN2(X,Y)
87 #define MI_BASE_DO_JOIN2( X, Y ) X##Y
90 #define MI_BASE_STRINGIZE( X ) MI_BASE_DO_STRINGIZE( X )
91 #define MI_BASE_DO_STRINGIZE( X ) MI_BASE_DO_STRINGIZE2(X)
92 #define MI_BASE_DO_STRINGIZE2( X ) #X
97 #define MI_PREVENT_MACRO_EXPAND
103 #if !defined(MI_PLATFORM_WINDOWS)
104 #define MI_PLATFORM_WINDOWS
105 #endif // !defined(MI_PLATFORM_WINDOWS)
109 #if !defined(MI_PLATFORM_WIN64)
110 #define MI_PLATFORM_WIN64
111 #endif // !defined(MI_PLATFORM_WIN64)
113 #else // defined(_WIN64)
115 #if !defined(MI_PLATFORM_WIN32)
116 #define MI_PLATFORM_WIN32
117 #endif // !defined(MI_PLATFORM_WIN32)
119 #endif // defined(_WIN64)
121 #elif defined(__APPLE__) // defined(_WIN32)
123 #if !defined(MI_PLATFORM_MACOSX)
124 #define MI_PLATFORM_MACOSX
125 #endif // !defined(MI_PLATFORM_MACOSX)
127 #elif defined(__unix__) // defined(__APPLE__)
129 #if !defined(MI_PLATFORM_UNIX)
130 #define MI_PLATFORM_UNIX
131 #endif // !defined(MI_PLATFORM_UNIX)
133 #if defined(__x86_64__)
135 #if !defined(MI_PLATFORM_UNIX64)
136 #define MI_PLATFORM_UNIX64
137 #endif // !defined(MI_PLATFORM_UNIX64)
139 #else // defined(__x86_64__)
141 #if !defined(MI_PLATFORM_UNIX32)
142 #define MI_PLATFORM_UNIX32
143 #endif // !defined(MI_PLATFORM_UNIX32)
145 #endif // defined(__x86_64__)
147 #if defined(__linux__)
149 #if !defined(MI_PLATFORM_LINUX)
150 #define MI_PLATFORM_LINUX
151 #endif // !defined(MI_PLATFORM_LINUX)
153 #endif // defined(__linux__)
155 #endif // defined(__unix__)
161 #if defined(_MSC_VER)
163 #ifndef MI_SKIP_COMPILER_VERSION_CHECK
164 #if (_MSC_VER < 1400)
165 #error Microsoft Visual C++ compiler version is unsupported (smaller than 1400).
167 #endif // MI_SKIP_COMPILER_VERSION_CHECK
169 #if !defined(MI_COMPILER_MSC)
170 #define MI_COMPILER_MSC _MSC_VER
171 #endif // !defined(MI_COMPILER_MSC)
173 #elif defined(__ICC) // defined(_MSC_VER)
175 #ifndef MI_SKIP_COMPILER_VERSION_CHECK
177 #error Intel C++ compiler version is unsupported (smaller than 900).
179 #endif // MI_SKIP_COMPILER_VERSION_CHECK
181 #if !defined(MI_COMPILER_ICC)
182 #define MI_COMPILER_ICC __ICC
183 #endif // !defined(MI_COMPILER_ICC)
185 #elif defined(__GNUC__) && !defined(__ICC) // #elif defined(__ICC)
187 #ifndef MI_SKIP_COMPILER_VERSION_CHECK
188 #if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))
189 #error GNU C++ compiler version is unsupported (smaller than 3.3).
192 #if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4)))
193 #warning GNU C++ compiler version is unsupported (smaller than 3.4).
195 #endif // MI_SKIP_COMPILER_VERSION_CHECK
197 #if !defined(MI_COMPILER_GCC)
198 #define MI_COMPILER_GCC __GNUC__
199 #endif // !defined(MI_COMPILER_GCC)
201 #endif // defined(__GNUC__)
207 #if defined(_M_IX86) || defined(__i386__) || defined(__x86_64__) || defined(_M_X64)
209 #if !defined(MI_ARCH_X86)
211 #endif // !defined(MI_ARCH_X86)
213 #if (defined(__x86_64__) || defined(_M_X64) ) && !defined(MI_ARCH_X86_64)
214 #define MI_ARCH_X86_64
215 #endif // defined(__x86_64__) && !defined(MI_ARCH_X86_64)
217 #if !defined(MI_ARCH_LITTLE_ENDIAN)
218 #define MI_ARCH_LITTLE_ENDIAN
219 #endif // !defined(MI_ARCH_LITTLE_ENDIAN)
221 #elif defined(__sparcv9) // defined(_M_IX86) || defined(__i386__)
223 #if ! defined( MI_ARCH_SPARC_64)
224 #define MI_ARCH_SPARC_64
225 #endif // !defined( MI_ARCH_SPARC_64)
227 #if !defined(MI_ARCH_BIG_ENDIAN)
228 #define MI_ARCH_BIG_ENDIAN
229 #endif // !defined(MI_ARCH_BIG_ENDIAN)
231 #elif defined(__powerpc64__)
233 #if !defined(MI_ARCH_POWERPC_64)
234 #define MI_ARCH_POWERPC_64
235 #endif // !defined( MI_ARCH_ARCH_POWERPC_64)
237 #if !defined(__LITTLE_ENDIAN__)
238 #error Architecture POWERPC_64 is only supported in little endian mode.
241 #if !defined(MI_ARCH_LITTLE_ENDIAN)
242 #define MI_ARCH_LITTLE_ENDIAN
243 #endif // !defined(MI_ARCH_LITTLE_ENDIAN)
247 #if defined(MI_ARCH_X86_64) || defined(MI_ARCH_SPARC_64) || defined(MI_ARCH_POWERPC_64)
248 #define MI_ARCH_64BIT
249 #endif // defined(MI_ARCH_X86_64) ...
252 #if ! defined(MI_ARCH_BIG_ENDIAN) && ! defined(MI_ARCH_LITTLE_ENDIAN)
253 #error Architecture unknown, neither big-endian nor little-endian detected.
269 #if defined(__cplusplus) && !defined(MI_FORCE_INLINE)
270 # if defined(_MSC_VER)
271 # define MI_FORCE_INLINE __forceinline
272 # elif defined(__GNUC__)
277 # define MI_FORCE_INLINE inline
279 # define MI_FORCE_INLINE __attribute__ ((always_inline)) inline
282 # define MI_FORCE_INLINE inline
287 #ifdef MI_PLATFORM_WINDOWS
288 #define MI_BASE_DLL_FILE_EXT ".dll"
291 #define MI_BASE_DLL_FILE_EXT ".so"
295 #if (__cplusplus >= 201103L)
296 #define MI_CXX_FEATURE_RVALUE_REFERENCES
302 #endif // MI_BASE_CONFIG_H