Go to the documentation of this file.00001
00004 #ifndef KARCH_ARCH_H
00005 #define 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_X86 600
00046
00047
00048
00049
00050 #define KARCH_ARCH_AMD64_GENERIC 800
00051
00052
00053
00054
00055 #define KARCH_ARCH_ITANIUM 1000
00056
00057 #if defined(__linux__) || defined(__CYGWIN__) //////////////////////////////////////////////// LINUX and CYGWIN
00058 #define KARCH_DEV_GNUC __GNUC__
00059 #define KARCH_ENV_UNIX 1
00060 #define KARCH_ENV_POSIX 1
00061
00062 #if defined(__linux__)
00063 #define KARCH_ENV_LINUX 1
00064 #elif defined(__CYGWIN__)
00065 #define KARCH_ENV_CYGWIN 1
00066 #endif
00067
00068 #if defined(__GNUC__)
00069 #define KARCH_DEV_GNUC __GNUC__
00070
00071 #if (__GNUC__ < 4)
00072 #error "Compiler is too old !!!"
00073 #endif
00074
00075 #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
00076
00077
00078 #if defined(__ia64__)
00079 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM
00080 #elif defined(__x86_64)
00081 #define KARCH_CPU_AMD64 KARCH_ARCH_AMD64_GENERIC
00082 #elif defined(__i386__)
00083 #define KARCH_CPU_IA32 KARCH_ARCH_X86
00084 #else
00085 #error "Architecture not supported"
00086 #endif
00087
00088
00089 #if defined(KARCH_CPU_IA64)
00090 #define KARCH_ARCH_IA64 KARCH_CPU_IA64
00091 #define KARCH_ARCH_64 1
00092 #elif defined(KARCH_CPU_AMD64)
00093 #define KARCH_ARCH_AMD64 KARCH_CPU_AMD64
00094 #define KARCH_ARCH_64 1
00095 #elif defined(KARCH_CPU_IA32)
00096 #define KARCH_ARCH_IA32 KARCH_CPU_IA32
00097 #endif
00098 #else
00099 #error "Compiler not supported"
00100 #endif
00101 #elif defined(_XBOX)
00102 #define KARCH_ENV_WIN 1
00103 #define KARCH_ENV_WIN32 _WIN32
00104 #define KARCH_ENV_XBOX _XBOX
00105 #define KARCH_DEV_MSC _MSC_VER
00106 #define KARCH_ARCH_IA32 _M_IX86
00107 #define KARCH_CPU_IA32 KARCH_ARCH_X86
00108
00109 #elif defined(_WIN32) || defined(_WIN64) //////////////////////////////////////////////// WIN32/WIN64
00110 #define KARCH_ENV_WIN 1
00111 #define KARCH_ENV_WIN32 _WIN32
00112 #if defined(_WINNT)
00113 #define KARCH_ENV_WINNT _WINNT
00114 #endif
00115 #define _WIN32_WINNT 0x0502 // Latest change is for SetDllDirectory()
00116 #define WINVER 0x0502
00117
00118 #ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
00119 #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
00120 #endif
00121 #ifndef _CRT_NONSTDC_NO_WARNINGS
00122 #define _CRT_NONSTDC_NO_WARNINGS 1
00123 #endif
00124 #ifndef _CRT_SECURE_NO_WARNINGS
00125 #define _CRT_SECURE_NO_WARNINGS 1
00126 #endif
00127 #ifndef _CRT_SECURE_NO_DEPRECATE
00128 #define _CRT_SECURE_NO_DEPRECATE 1
00129 #endif
00130
00131
00132 #if defined _M_IX86
00133 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
00134 #elif defined _M_IA64
00135 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
00136 #elif defined _M_X64
00137 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
00138 #else
00139 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
00140 #endif
00141
00142 #if defined(__MINGW32__)
00143 #define KARCH_ENV_MING32 __MINGW32__
00144 #endif
00145 #if defined(__ICL)
00146 #define KARCH_DEV_INTEL __ICL
00147 #endif
00148 #if defined(_MSC_VER)
00149 #define KARCH_DEV_MSC _MSC_VER
00150 #elif defined(__GNUC__)
00151 #define KARCH_DEV_GNUC __GNUC__
00152
00153 #if defined(__ia64__)
00154 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM
00155 #elif defined(__x86_64)
00156 #define KARCH_CPU_AMD64 KARCH_ARCH_AMD64_GENERIC
00157 #elif !defined(__i386__)
00158 #define KARCH_CPU_IA32 KARCH_ARCH_X86
00159 #else
00160 #error "Architecture not supported"
00161 #endif
00162 #else
00163 #error "Compiler not supported"
00164 #endif
00165 #if defined(_M_IX86)
00166 #define KARCH_ARCH_IA32 _M_IX86
00167 #define KARCH_CPU_IA32 KARCH_ARCH_X86
00168 #elif defined(_M_X64)
00169 #define KARCH_ARCH_X64 _M_X64
00170 #define KARCH_CPU_X64 KARCH_ARCH_AMD64
00171 #define KARCH_ENV_WIN64 _WIN64
00172 #define KARCH_ARCH_64 1
00173 #elif defined(_M_IA64)
00174 #define KARCH_ARCH_IA64 _M_IA64
00175 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM
00176 #define KARCH_ENV_WIN64 _WIN64
00177 #define KARCH_ARCH_64 1
00178 #else
00179 #error "Architecture not supported"
00180 #endif
00181
00182 #elif defined(__MACH__)
00183
00184 #if defined(__i386__)
00185 #define KARCH_CPU_IA32 KARCH_ARCH_X86
00186 #define KARCH_ARCH_IA32 KARCH_CPU_IA32
00187 #elif defined(__x86_64__)
00188 #define KARCH_ARCH_X64 _M_X64
00189 #define KARCH_ARCH_64 1
00190 #elif defined(__arm__)
00191 #define KARCH_ARCH_ARM
00192 #define KARCH_CPU_ARM
00193 #define K_REQUIRE_DATA_ALIGNMENT
00194 #else
00195 #error "Architecture not supported"
00196 #endif
00197
00198 #define KARCH_DEV_MACOSX
00199 #define KARCH_ENV_MACOSX
00200 #define KARCH_DEV_GNUC __GNUC__
00201 #define KARCH_ENV_UNIX 1
00202 #define KARCH_ENV_POSIX 1
00203
00204 #else //////////////////////////////////////////////// GENERIC
00205 #error "Environment not supported"
00206 #endif
00207
00208 #endif