karch/arch.h Source File
 
 
 
karch/arch.h
Go to the documentation of this file.
00001 
00004 #ifndef KARCH_ARCH_H
00005 #define KARCH_ARCH_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright (C) 2001 - 2009 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 /*
00043  *      Intel IA32 Architecture
00044  */
00045 #define KARCH_ARCH_X86          600
00046 
00047 /*
00048  *      AMD x64 Architecture
00049  */
00050 #define KARCH_ARCH_AMD64_GENERIC        800
00051 
00052 /*
00053  *      Intel IA64 Architecture
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                 // CPU Determination.
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                 // ARCH Determination.
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         // Use a newer version of comctl32.dll tooltips for Sketchbook
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                 // CPU Determination.
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 /* KARCH_ARCH_H */