00001
00004 #ifndef FBXFILESDK_COMPONENTS_KBASELIB_KARCH_ARCH_H
00005 #define FBXFILESDK_COMPONENTS_KBASELIB_KARCH_ARCH_H
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 #define KARCH_ARCH_80286 200
00046 #define KARCH_ARCH_I386 300
00047 #define KARCH_ARCH_I486 400
00048 #define KARCH_ARCH_PENTIUM 500
00049 #define KARCH_ARCH_PENTIUMPRO 600
00050 #define KARCH_ARCH_PENTIUMII 630
00051 #define KARCH_ARCH_PENTIUMIII 670
00052 #define KARCH_ARCH_PENTIUMIV 700
00053
00054
00055
00056
00057 #define KARCH_ARCH_AMD64_GENERIC 800
00058
00059
00060
00061
00062 #define KARCH_ARCH_ITANIUM 1000
00063
00064
00065 #if defined(linux) || defined(__CYGWIN32__)
00066 #define KARCH_DEV_GNUC __GNUC__
00067 #define KARCH_ENV_UNIX 1
00068 #define KARCH_ENV_POSIX 1
00069
00070 #if defined(linux)
00071 #define KARCH_ENV_LINUX 1
00072 #endif
00073
00074 #if defined(__GNUC__)
00075 #ifndef _GNU_SOURCE
00076 #define _GNU_SOURCE
00077 #endif
00078 #define KARCH_DEV_GNUC __GNUC__
00079
00080
00081 #if defined(__ia64__) && !defined(KARCH_CPU_IA64)
00082 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM
00083 #elif defined(__x86_64) && !defined(KARCH_CPU_AMD64)
00084 #define KARCH_CPU_AMD64 KARCH_ARCH_AMD64_GENERIC
00085 #elif !defined(KARCH_CPU_IA32)
00086 #if defined(__pentiumiii__)
00087 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII
00088 #elif defined(__pentiumii__)
00089 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII
00090 #elif defined(__i686__) || defined(__pentiumpro__)
00091 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO
00092 #elif defined(__i586__) || defined(__pentium__) || defined(__k6__)
00093 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00094 #elif defined(__i486__)
00095 #define KARCH_CPU_IA32 KARCH_ARCH_I486
00096 #elif defined(__i386__)
00097 #define KARCH_CPU_IA32 KARCH_ARCH_I386
00098 #else
00099 #define KARCH_CPU_IA32 KARCH_ARCH_I286
00100 #endif
00101 #endif
00102
00103
00104 #if defined(KARCH_CPU_IA64)
00105 #define KARCH_ARCH_IA64 KARCH_CPU_IA64
00106 #define KARCH_ARCH_64 1
00107 #elif defined(KARCH_CPU_AMD64)
00108 #define KARCH_ARCH_AMD64 KARCH_CPU_AMD64
00109 #define KARCH_ARCH_64 1
00110 #elif defined(KARCH_CPU_IA32)
00111 #define KARCH_ARCH_IA32 KARCH_CPU_IA32
00112
00113 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII)
00114 #define KARCH_CPU_IA32_MMX
00115 #endif
00116 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII)
00117 #define KARCH_CPU_IA32_SIMD
00118 #endif
00119 #endif
00120 #else
00121 #error "Compiler not supported"
00122 #endif
00123 #elif defined(_XBOX)
00124 #define KARCH_ENV_WIN 1
00125 #define KARCH_ENV_WIN32 _WIN32
00126 #define KARCH_ENV_XBOX _XBOX
00127 #define KARCH_DEV_MSC _MSC_VER
00128 #define KARCH_ARCH_IA32 _M_IX86
00129 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00130
00131
00132
00133 #elif defined(_WIN32) || defined(_WIN64)
00134 #define KARCH_ENV_WIN 1
00135 #define KARCH_ENV_WIN32 _WIN32
00136 #if defined(_WINNT)
00137 #define KARCH_ENV_WINNT _WINNT
00138 #endif
00139
00140
00141
00142
00143 #if defined _M_IX86
00144 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
00145 #elif defined _M_IA64
00146 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
00147 #elif defined _M_X64
00148 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
00149 #else
00150 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
00151 #endif
00152
00153 #if defined(__MINGW32__)
00154 #define KARCH_ENV_MING32 __MINGW32__
00155 #endif
00156 #if defined(__ICL)
00157 #define KARCH_DEV_INTEL __ICL
00158 #endif
00159 #if defined(_MSC_VER)
00160 #define KARCH_DEV_MSC _MSC_VER
00161 #elif defined(__GNUC__)
00162 #define KARCH_DEV_GNUC __GNUC__
00163 #if !defined(KARCH_CPU_IA32)
00164 #if defined(__pentiumiii__)
00165 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII
00166 #elif defined(__pentiumii__)
00167 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII
00168 #elif defined(__i686__) || defined(__pentiumpro__)
00169 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO
00170 #elif defined(__i586__) || defined(__pentium__) || defined(__k6__)
00171 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00172 #elif defined(__i486__)
00173 #define KARCH_CPU_IA32 KARCH_ARCH_I486
00174 #elif defined(__i386__)
00175 #define KARCH_CPU_IA32 KARCH_ARCH_I386
00176 #else
00177 #define KARCH_CPU_IA32 KARCH_ARCH_I286
00178 #endif
00179 #endif
00180 #if !defined(KARCH_ARCH_IA32)
00181 #define KARCH_ARCH_IA32 KARCH_CPU_IA32
00182 #elif (KARCH_ARCH_IA32 < KARCH_CPU_IA32)
00183 #error "Selected architecture doesn't support selected instruction set"
00184 #endif
00185 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII)
00186 #define KARCH_CPU_IA32_MMX
00187 #endif
00188 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII)
00189 #define KARCH_CPU_IA32_SIMD
00190 #endif
00191 #else
00192 #error "Compiler not supported"
00193 #endif
00194 #if defined(_M_IX86)
00195 #define KARCH_ARCH_IA32 _M_IX86
00196 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII // to force a minimum of PENTIUM II
00197 #if !defined(KARCH_CPU_IA32)
00198 #if (KARCH_ARCH_IA32 >= KARCH_ARCH_PENTIUM)
00199 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00200 #else
00201 #define KARCH_CPU_IA32 KARCH_ARCH_IA32
00202 #endif
00203 #endif
00204 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII)
00205 #define KARCH_CPU_IA32_MMX
00206 #endif
00207 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII)
00208 #define KARCH_CPU_IA32_SIMD
00209 #endif
00210 #elif defined(_M_X64)
00211 #define KARCH_ARCH_X64 _M_X64
00212 #define KARCH_CPU_X64 KARCH_ARCH_AMD64
00213 #define KARCH_ENV_WIN64 _WIN64
00214 #define KARCH_ARCH_64 1
00215 #elif defined(_M_IA64)
00216 #define KARCH_ARCH_IA64 _M_IA64
00217 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM
00218 #define KARCH_ENV_WIN64 _WIN64
00219 #define KARCH_ARCH_64 1
00220 #else
00221 #error "Architecture not supported"
00222 #endif
00223 #elif defined(__MACH__)
00224
00225 #if __LP64__ && !defined(__x86_64__)
00226 #define __x86_64__
00227 #endif
00228
00229 #if defined(__i386__)
00230 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM
00231 #define KARCH_ARCH_IA32 KARCH_CPU_IA32
00232 #elif defined(__x86_64__)
00233 #define KARCH_ARCH_X64 _M_X64
00234 #define KARCH_ARCH_64 1
00235 #else
00236 #define KARCH_ARCH_POWERPC
00237 #define KARCH_CPU_POWERPC
00238 #endif
00239
00240 #define KARCH_DEV_MACOSX
00241 #define KARCH_DEV_GNUC_MACOSX
00242 #define KARCH_ENV_MACOSX
00243 #define KARCH_DEV_GNUC __GNUC__
00244 #define KARCH_ENV_UNIX 1
00245 #define KARCH_ENV_POSIX 1
00246
00247 #else
00248 #error "Environment not supported"
00249 #endif
00250
00251 #endif // FBXFILESDK_COMPONENTS_KBASELIB_KARCH_ARCH_H
00252