arch.h

00001 #ifndef KARCH_ARCH_H
arch.h
00002 #define KARCH_ARCH_H 00003 /************************************************************************** 00004 Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors. 00005 All Rights Reserved. 00006 00007 The coded instructions, statements, computer programs, and/or related 00008 material (collectively the "Data") in these files contain unpublished 00009 information proprietary to Autodesk, Inc. and/or its licensors, which is 00010 protected by Canada and United States of America federal copyright law 00011 and by international treaties. 00012 00013 The Data may not be disclosed or distributed to third parties, in whole 00014 or in part, without the prior written consent of Autodesk, Inc. 00015 ("Autodesk"). 00016 00017 THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY. 00018 ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 00019 WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 00020 ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 00021 OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 00022 PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 00023 WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 00024 FREE. 00025 00026 IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 00027 OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 00028 EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 00029 DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 00030 OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 00031 DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 00032 LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 00033 LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 00034 DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 00035 BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE. 00036 00037 **************************************************************************/ 00038 00039 /* 00040 * Intel IA32 Architecture 00041 */ 00042 #define KARCH_ARCH_80286 200 00043 #define KARCH_ARCH_I386 300 00044 #define KARCH_ARCH_I486 400 00045 #define KARCH_ARCH_PENTIUM 500 00046 #define KARCH_ARCH_PENTIUMPRO 600 00047 #define KARCH_ARCH_PENTIUMII 630 00048 #define KARCH_ARCH_PENTIUMIII 670 00049 #define KARCH_ARCH_PENTIUMIV 700 00050 00051 /* 00052 * AMD x64 Architecture 00053 */ 00054 #define KARCH_ARCH_AMD64 800 00055 00056 /* 00057 * Intel IA64 Architecture 00058 */ 00059 #define KARCH_ARCH_ITANIUM 1000 00060 00061 00062 #if defined(linux) || defined(__CYGWIN32__) 00063 #define KARCH_DEV_GNUC __GNUC__ 00064 #define KARCH_ENV_UNIX 1 00065 #define KARCH_ENV_POSIX 1 00066 00067 #if defined(linux) 00068 #define KARCH_ENV_LINUX 1 00069 #endif 00070 00071 #if defined(__GNUC__) 00072 #ifndef _GNU_SOURCE 00073 #define _GNU_SOURCE 00074 #endif 00075 #define KARCH_DEV_GNUC __GNUC__ 00076 00077 // CPU Determination. 00078 #if defined(__ia64__) && !defined(KARCH_CPU_IA64) 00079 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM 00080 #elif !defined(KARCH_CPU_IA32) 00081 #if defined(__pentiumiii__) 00082 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII 00083 #elif defined(__pentiumii__) 00084 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII 00085 #elif defined(__i686__) || defined(__pentiumpro__) 00086 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO 00087 #elif defined(__i586__) || defined(__pentium__) || defined(__k6__) 00088 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00089 #elif defined(__i486__) 00090 #define KARCH_CPU_IA32 KARCH_ARCH_I486 00091 #elif defined(__i386__) 00092 #define KARCH_CPU_IA32 KARCH_ARCH_I386 00093 #else 00094 #define KARCH_CPU_IA32 KARCH_ARCH_I286 00095 #endif 00096 #endif 00097 00098 // ARCH Determination. 00099 #if defined(KARCH_CPU_IA64) 00100 #define KARCH_ARCH_IA64 KARCH_CPU_IA64 00101 #define KARCH_ARCH_NATIVE64 1 00102 #elif defined(KARCH_CPU_IA32) 00103 #define KARCH_ARCH_IA32 KARCH_CPU_IA32 00104 00105 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII) 00106 #define KARCH_CPU_IA32_MMX 00107 #endif 00108 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII) 00109 #define KARCH_CPU_IA32_SIMD 00110 #endif 00111 #endif 00112 #else 00113 #error "Compiler not supported" 00114 #endif 00115 #elif defined(_XBOX) 00116 #define KARCH_ENV_WIN 1 00117 #define KARCH_ENV_WIN32 _WIN32 00118 #define KARCH_ENV_XBOX _XBOX 00119 #define KARCH_DEV_MSC _MSC_VER 00120 #define KARCH_ARCH_IA32 _M_IX86 00121 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00122 //#define KARCH_CPU_IA32_MMX 00123 //#define KARCH_CPU_IA32_SIMD 00124 00125 #elif defined(_WIN32) || defined(_WIN64) 00126 #define KARCH_ENV_WIN 1 00127 #define KARCH_ENV_WIN32 _WIN32 00128 #if defined(_WINNT) 00129 #define KARCH_ENV_WINNT _WINNT 00130 #endif 00131 #define _WIN32_WINNT 0x0501 // for SetThreadIdealProcessor,TryEnterCriticalSection that does not work on windows 95/98 00132 #define WINVER 0x0501 00133 00134 #ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 00135 #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 00136 #endif 00137 #ifndef _CRT_NONSTDC_NO_WARNINGS 00138 #define _CRT_NONSTDC_NO_WARNINGS 1 00139 #endif 00140 #ifndef _CRT_SECURE_NO_WARNINGS 00141 #define _CRT_SECURE_NO_WARNINGS 1 00142 #endif 00143 #ifndef _CRT_SECURE_NO_DEPRECATE 00144 #define _CRT_SECURE_NO_DEPRECATE 1 00145 #endif 00146 00147 // Use a newer version of comctl32.dll tooltips for Sketchbook 00148 #if defined _M_IX86 00149 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 00150 #elif defined _M_IA64 00151 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") 00152 #elif defined _M_X64 00153 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") 00154 #else 00155 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 00156 #endif 00157 00158 #if defined(__MINGW32__) 00159 #define KARCH_ENV_MING32 __MINGW32__ 00160 #endif 00161 #if defined(__ICL) 00162 #define KARCH_DEV_INTEL __ICL 00163 #endif 00164 #if defined(_MSC_VER) 00165 #define KARCH_DEV_MSC _MSC_VER 00166 #if (_MSC_VER >= 1400) // The Visual C++ 2005 compiler version is 1400 00167 #ifndef _CRT_SECURE_NO_WARNINGS 00168 #define _CRT_SECURE_NO_WARNINGS 1 // Disable security deprecation warning (which isn't real deprecation) 00169 #endif 00170 #ifndef _CRT_SECURE_NO_DEPRECATE 00171 #define _CRT_SECURE_NO_DEPRECATE 1 00172 #endif 00173 #endif 00174 #elif defined(__GNUC__) 00175 #define KARCH_DEV_GNUC __GNUC__ 00176 #if !defined(KARCH_CPU_IA32) 00177 #if defined(__pentiumiii__) 00178 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII 00179 #elif defined(__pentiumii__) 00180 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMII 00181 #elif defined(__i686__) || defined(__pentiumpro__) 00182 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMPRO 00183 #elif defined(__i586__) || defined(__pentium__) || defined(__k6__) 00184 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00185 #elif defined(__i486__) 00186 #define KARCH_CPU_IA32 KARCH_ARCH_I486 00187 #elif defined(__i386__) 00188 #define KARCH_CPU_IA32 KARCH_ARCH_I386 00189 #else 00190 #define KARCH_CPU_IA32 KARCH_ARCH_I286 00191 #endif 00192 #endif 00193 #if !defined(KARCH_ARCH_IA32) 00194 #define KARCH_ARCH_IA32 KARCH_CPU_IA32 00195 #elif (KARCH_ARCH_IA32 < KARCH_CPU_IA32) 00196 #error "Selected architecture doesn't support selected instruction set" 00197 #endif 00198 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII) 00199 #define KARCH_CPU_IA32_MMX 00200 #endif 00201 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII) 00202 #define KARCH_CPU_IA32_SIMD 00203 #endif 00204 #else 00205 #error "Compiler not supported" 00206 #endif 00207 #if defined(_M_IX86) 00208 #define KARCH_ARCH_IA32 _M_IX86 00209 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUMIII // to force a minimum of PENTIUM II 00210 #if !defined(KARCH_CPU_IA32) 00211 #if (KARCH_ARCH_IA32 >= KARCH_ARCH_PENTIUM) 00212 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00213 #else 00214 #define KARCH_CPU_IA32 KARCH_ARCH_IA32 00215 #endif 00216 #endif 00217 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMII) 00218 #define KARCH_CPU_IA32_MMX 00219 #endif 00220 #if (KARCH_CPU_IA32 >= KARCH_ARCH_PENTIUMIII) 00221 #define KARCH_CPU_IA32_SIMD 00222 #endif 00223 #elif defined(_M_X64) 00224 #define KARCH_ARCH_X64 _M_X64 00225 #define KARCH_CPU_X64 KARCH_ARCH_AMD64 00226 #define KARCH_ENV_WIN64 _WIN64 00227 #define KARCH_ARCH_NATIVE64 1 00228 #elif defined(_M_IA64) 00229 #define KARCH_ARCH_IA64 _M_IA64 00230 #define KARCH_CPU_IA64 KARCH_ARCH_ITANIUM 00231 #define KARCH_ENV_WIN64 _WIN64 00232 #define KARCH_ARCH_NATIVE64 1 00233 #else 00234 #error "Architecture not supported" 00235 #endif 00236 #elif defined(__MACH__) 00237 00238 #if defined(__i386__) 00239 #define KARCH_CPU_IA32 KARCH_ARCH_PENTIUM 00240 #define KARCH_ARCH_IA32 KARCH_CPU_IA32 00241 #elif defined(__x86_64__) 00242 #define KARCH_ARCH_X64 _M_X64 00243 #define KARCH_ARCH_NATIVE64 1 00244 #else 00245 #define KARCH_ARCH_POWERPC 00246 #define KARCH_CPU_POWERPC 00247 #endif 00248 00249 #define KARCH_DEV_MACOSX 00250 #define KARCH_DEV_GNUC_MACOSX 00251 #define KARCH_ENV_MACOSX 00252 #define KARCH_DEV_GNUC __GNUC__ 00253 #define KARCH_ENV_UNIX 1 00254 #define KARCH_ENV_POSIX 1 00255 00256 #else 00257 #error "Environment not supported" 00258 #endif 00259 00260 #endif /* KARCH_ARCH_H */

Please send us your comments about this page.