Open Reality Reference Guide
Loading...
Searching...
No Matches
arch.h
Go to the documentation of this file.
1
4
#ifndef KARCH_ARCH_H
5
#define KARCH_ARCH_H
6
7
/**************************************************************************************
8
9
Copyright (C) 2001 - 2009 Autodesk, Inc. and/or its licensors.
10
All Rights Reserved.
11
12
The coded instructions, statements, computer programs, and/or related material
13
(collectively the "Data") in these files contain unpublished information
14
proprietary to Autodesk, Inc. and/or its licensors, which is protected by
15
Canada and United States of America federal copyright law and by international
16
treaties.
17
18
The Data may not be disclosed or distributed to third parties, in whole or in
19
part, without the prior written consent of Autodesk, Inc. ("Autodesk").
20
21
THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
22
ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
23
WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
24
BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE,
25
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE.
26
WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
27
OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE.
28
29
IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
30
OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
31
OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
32
SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
33
OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
34
HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
35
FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
36
ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
37
WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
38
OR DAMAGE.
39
40
**************************************************************************************/
41
42
/*
43
* Intel IA32 Architecture
44
*/
45
#define KARCH_ARCH_X86 600
46
47
/*
48
* AMD x64 Architecture
49
*/
50
#define KARCH_ARCH_AMD64_GENERIC 800
51
52
#if defined(__linux__) || defined(__CYGWIN__)
53
#define KARCH_DEV_GNUC __GNUC__
54
#define KARCH_ENV_UNIX 1
55
#define KARCH_ENV_POSIX 1
56
57
#if defined(__linux__)
58
#define KARCH_ENV_LINUX 1
59
#elif defined(__CYGWIN__)
60
#define KARCH_ENV_CYGWIN 1
61
#endif
62
63
#if defined(__GNUC__)
64
#define KARCH_DEV_GNUC __GNUC__
65
66
#if (__GNUC__ < 4)
67
#error "Compiler is too old !!!"
68
#else
69
#if __cplusplus < 201603L
70
#define maybe_unused gnu::unused
// until maybe_unused gets defined by the compiler
71
#endif
72
#endif
73
74
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
75
76
// CPU Determination.
77
#if defined(__x86_64)
78
#define KARCH_CPU_AMD64 KARCH_ARCH_AMD64_GENERIC
79
#elif defined(__i386__)
80
#define KARCH_CPU_IA32 KARCH_ARCH_X86
81
#else
82
#error "Architecture not supported"
83
#endif
84
85
// ARCH Determination.
86
#if defined(KARCH_CPU_AMD64)
87
#define KARCH_ARCH_AMD64 KARCH_CPU_AMD64
88
#define KARCH_ARCH_64 1
89
#elif defined(KARCH_CPU_IA32)
90
#define KARCH_ARCH_IA32 KARCH_CPU_IA32
91
#endif
92
#else
93
#error "Compiler not supported"
94
#endif
95
#elif defined(_XBOX)
96
#define KARCH_ENV_WIN 1
97
#define KARCH_ENV_WIN32 _WIN32
98
#define KARCH_ENV_XBOX _XBOX
99
#define KARCH_DEV_MSC _MSC_VER
100
#define KARCH_ARCH_IA32 _M_IX86
101
#define KARCH_CPU_IA32 KARCH_ARCH_X86
102
103
#elif defined(_WIN32) || defined(_WIN64)
104
#define KARCH_ENV_WIN 1
105
#define KARCH_ENV_WIN32 _WIN32
106
#if !defined(_WIN32_WINNT)
107
#define _WIN32_WINNT 0x0A00
// _WIN32_WINNT_WIN10
108
#endif
109
#if !defined(WINVER)
110
#define WINVER 0x0A00
// _WIN32_WINNT_WIN10
111
#endif
112
113
#ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
114
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
115
#endif
116
#ifndef _CRT_NONSTDC_NO_WARNINGS
117
#define _CRT_NONSTDC_NO_WARNINGS 1
118
#endif
119
#ifndef _CRT_SECURE_NO_WARNINGS
120
#define _CRT_SECURE_NO_WARNINGS 1
121
#endif
122
123
#if defined(__MINGW32__)
124
#define KARCH_ENV_MING32 __MINGW32__
125
#endif
126
#if defined(_MSC_VER)
127
#define KARCH_DEV_MSC _MSC_VER
128
#elif defined(__GNUC__)
129
#define KARCH_DEV_GNUC __GNUC__
130
// CPU Determination.
131
#if defined(__x86_64)
132
#define KARCH_CPU_AMD64 KARCH_ARCH_AMD64_GENERIC
133
#elif !defined(__i386__)
134
#define KARCH_CPU_IA32 KARCH_ARCH_X86
135
#else
136
#error "Architecture not supported"
137
#endif
138
#else
139
#error "Compiler not supported"
140
#endif
141
#if defined(_M_IX86)
142
#define KARCH_ARCH_IA32 _M_IX86
143
#define KARCH_CPU_IA32 KARCH_ARCH_X86
144
#elif defined(_M_X64)
145
#define KARCH_ARCH_X64 _M_X64
146
#define KARCH_CPU_X64 KARCH_ARCH_AMD64
147
#define KARCH_ENV_WIN64 _WIN64
148
#define KARCH_ARCH_64 1
149
#else
150
#error "Architecture not supported"
151
#endif
152
153
#else
154
#error "Environment not supported"
155
#endif
156
157
#endif
/* KARCH_ARCH_H */
Components
amKernel
kbaselib
karch
arch.h
Generated by
1.9.7