ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MinGW/include/sdkddkver.h
Revision: 1046
Committed: Mon Aug 29 13:19:38 2016 UTC (9 years, 1 month ago) by alloc
Content type: text/x-chdr
File size: 10027 byte(s)
Log Message:
Daodan: Added Windows MinGW and build batch file

File Contents

# Content
1 /*
2 * sdkddkver.h
3 *
4 * Macros to set up the compilation environment, such that it provides
5 * support for a user specified host OS version, (default Win2K).
6 *
7 * $Id: sdkddkver.h,v f02731a7c98a 2016/06/02 21:15:06 keithmarshall $
8 *
9 * Written by Earnie Boyd <earnie@users.sourceforge.net>
10 * Copyright (C) 2012, 2013, 2015, MinGW.org Project
11 *
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
19 *
20 * The above copyright notice and this permission notice (including the next
21 * paragraph) shall be included in all copies or substantial portions of the
22 * Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30 * DEALINGS IN THE SOFTWARE.
31 *
32 */
33 #ifndef _SDKDDKVER_H
34 #define _SDKDDKVER_H
35 #pragma GCC system_header
36
37 /* Define masks for extracting version components from NTDDI_VERSION;
38 * values and names are guessed based on comments in the documentation; see
39 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
40 */
41 #define OSVERSION_MASK 0xFFFF0000
42 #define SPVERSION_MASK 0x0000FF00
43 #define SUBVERSION_MASK 0x000000FF
44
45 /* Macros to facilitate such extraction; derived from comments on MSDN or
46 * on social.microsoft.com
47 */
48 #define OSVER(ver) ((ver) & OSVERSION_MASK)
49 #define SPVER(ver) (((ver) & SPVERSION_MASK) >> 8)
50 #define SUBVER(ver) ((ver) & SUBVERSION_MASK)
51 #define WINNTVER(ver) ((ver) >> 16)
52
53 /* Macros to construct a minimal NTDDI_VERSION from a _WIN32_WINNT value.
54 */
55 #define NTDDI_VERSION_FROM_WIN32_WINNT(ver) _NTDDI_VERSION_FROM_WIN32_WINNT(ver)
56 #define _NTDDI_VERSION_FROM_WIN32_WINNT(ver) ver##0000
57
58 /* Version constants specifying _WIN32_WINNT versions; these are defined at
59 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
60 * (values for legacy platforms have been inferred from historical knowledge).
61 */
62 #define _WIN32_WINNT_NT4 0x0400 /* Windows NT4 */
63 #define _WIN32_WINNT_NT4E 0x0401 /* Windows NT4E */
64 #define _WIN32_WINDOWS_95 0x0400 /* Windows 95 */
65 #define _WIN32_WINDOWS_98 0x0410 /* Windows 98 */
66 #define _WIN32_WINDOWS_ME 0x0490 /* Windows Millenium Edition */
67 #define _WIN32_WINNT_WIN2K 0x0500 /* Windows 2000 */
68 #define _WIN32_WINNT_WINXP 0x0501 /* Windows XP */
69 #define _WIN32_WINNT_WS03 0x0502 /* Windows Server 2003 */
70 #define _WIN32_WINNT_WIN6 0x0600 /* Alias for Windows Vista */
71 #define _WIN32_WINNT_VISTA 0x0600 /* Windows Vista */
72 #define _WIN32_WINNT_WS08 0x0600 /* Windows Server 2008 */
73 #define _WIN32_WINNT_LONGHORN 0x0600 /* Alias for Windows Vista */
74 #define _WIN32_WINNT_WIN7 0x0601 /* Windows 7 */
75 #define _WIN32_WINNT_WIN8 0x0602 /* Windows 8 */
76 #define _WIN32_WINNT_WINBLUE 0x0603 /* Windows 8.1 */
77
78 /* Version constants specifying Internet Explorer versions; also defined at
79 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
80 */
81 #define _WIN32_IE_IE50 0x0500
82 #define _WIN32_IE_IE501 0x0501
83 #define _WIN32_IE_IE55 0x0550
84 #define _WIN32_IE_IE56 0x0560
85 #define _WIN32_IE_IE60 0x0600
86 #define _WIN32_IE_IE60SP1 0x0601
87 #define _WIN32_IE_IE60SP2 0x0603
88 #define _WIN32_IE_IE70 0x0700
89 #define _WIN32_IE_IE80 0x0800
90
91 #define _WIN32_IE_IE30 0x0300
92 #define _WIN32_IE_IE301 0x0301
93 #define _WIN32_IE_IE302 0x0302
94 #define _WIN32_IE_IE40 0x0400
95 #define _WIN32_IE_IE401 0x0401
96
97 /* Version constants specifying NTDDI_VERSION; these are also defined at
98 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
99 */
100 #define __NTDDI_WIN5 0x05000000
101 #define __NTDDI_WIN51 0x05010000
102 #define __NTDDI_WIN52 0x05020000
103 #define __NTDDI_WIN6 0x06000000
104 #define __NTDDI_WIN61 0x06010000
105 #define __NTDDI_WIN62 0x06020000
106 #define __NTDDI_WIN63 0x06030000
107 #define __NTDDI_SP0 0x00000000
108 #define __NTDDI_SP1 0x00000100
109 #define __NTDDI_SP2 0x00000200
110 #define __NTDDI_SP3 0x00000300
111 #define __NTDDI_SP4 0x00000400
112
113 #define NTDDI_WIN2K __NTDDI_WIN5 + __NTDDI_SP0
114 #define NTDDI_WIN2KSP1 __NTDDI_WIN5 + __NTDDI_SP1
115 #define NTDDI_WIN2KSP2 __NTDDI_WIN5 + __NTDDI_SP2
116 #define NTDDI_WIN2KSP3 __NTDDI_WIN5 + __NTDDI_SP3
117 #define NTDDI_WIN2KSP4 __NTDDI_WIN5 + __NTDDI_SP4
118
119 #define NTDDI_WINXP __NTDDI_WIN51 + __NTDDI_SP0
120 #define NTDDI_WINXPSP1 __NTDDI_WIN51 + __NTDDI_SP1
121 #define NTDDI_WINXPSP2 __NTDDI_WIN51 + __NTDDI_SP2
122 #define NTDDI_WINXPSP3 __NTDDI_WIN51 + __NTDDI_SP3
123
124 #define NTDDI_WS03 __NTDDI_WIN52 + __NTDDI_SP0
125 #define NTDDI_WS03SP1 __NTDDI_WIN52 + __NTDDI_SP1
126 #define NTDDI_WS03SP2 __NTDDI_WIN52 + __NTDDI_SP2
127
128 #define NTDDI_VISTA __NTDDI_WIN6 + __NTDDI_SP0
129 #define NTDDI_VISTASP1 __NTDDI_WIN6 + __NTDDI_SP1
130 #define NTDDI_VISTASP2 __NTDDI_WIN6 + __NTDDI_SP2
131
132 #define NTDDI_LONGHORN NTDDI_VISTA
133
134 #define NTDDI_WIN6 NTDDI_VISTA
135 #define NTDDI_WIN6SP1 NTDDI_VISTASP1
136 #define NTDDI_WIN6SP2 NTDDI_VISTASP2
137
138 #define NTDDI_WS08 __NTDDI_WIN6 + __NTDDI_SP1
139
140 #define NTDDI_WIN7 __NTDDI_WIN61 + __NTDDI_SP0
141
142 #define NTDDI_WIN8 __NTDDI_WIN62 + __NTDDI_SP0
143
144 #define NTDDI_WINBLUE __NTDDI_WIN63 + __NTDDI_SP0
145
146 /* Although NTDDI_VERSION is now the preferred designator for the
147 * level of support required from the operating system, legacy code
148 * is likely to have specified WINVER, from which _WIN32_WINNT may
149 * be inferred.
150 */
151 #if defined WINVER && ! defined _WIN32_WINNT
152 # define _WIN32_WINNT WINVER
153
154 /* Additionally, legacy code intended for deployment on the Win9x
155 * series operating systems may have specified _WIN32_WINDOWS, as
156 * an alternative to, or in addition to, _WIN32_WINNT.
157 */
158 #elif defined _WIN32_WINDOWS && ! defined _WIN32_WINNT
159 # define _WIN32_WINNT _WIN32_WINDOWS
160 #endif
161
162 /* Stipulate defaults; check consistency of any user specified overrides.
163 */
164 #ifdef NTDDI_VERSION
165 # ifdef _WIN32_WINNT
166 # if _WIN32_WINNT != WINNTVER(NTDDI_VERSION)
167 # error "_WIN32_WINNT setting conflicts with specified NTDDI_VERSION"
168 # endif
169 # else
170 # define _WIN32_WINNT WINNTVER(NTDDI_VERSION)
171 # ifndef WINVER
172 # define WINVER _WIN32_WINNT
173 # endif
174 # endif
175 #endif
176
177 #ifndef _WIN32_WINNT
178 # ifdef WINVER
179 # define _WIN32_WINNT WINVER
180 # else
181 # ifdef _WARN_DEFAULTS
182 # warning "Assuming default setting of _WIN32_WINNT_WIN2K for _WIN32_WINNT"
183 # endif
184 # define _WIN32_WINNT _WIN32_WINNT_WIN2K
185 # endif
186 #endif
187
188 #ifndef WINVER
189 # define WINVER _WIN32_WINNT
190 #elif WINVER != _WIN32_WINNT
191 /* TODO(REVIEW): is this appropriate for WINVER consistency checking?
192 */
193 # error "_WIN32_WINNT setting conflicts with specified WINVER"
194 #endif
195
196 #ifndef NTDDI_VERSION
197 # ifdef _WARN_DEFAULTS
198 # warning "Assuming default NTDDI_VERSION setting to match _WIN32_WINNT"
199 # endif
200 # define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
201 #endif
202
203 /* Map GCC architecture identification macros to their MSVC equivalents.
204 * This mapping was previously specified in <winnt.h>, and duplicated in
205 * <windows.h>; it is now only defined here, because both <windows.h> and
206 * <winnt.h> must include this file anyway, and the potentially error prone
207 * burden of maintaining duplicates is as unnecessary as it is undesirable.
208 */
209 #ifndef _M_IX86
210 /* Note that we must process the _M_IX86 equivalent macros in diminishing
211 * order of processor version, since GCC defines __i386__ as identification
212 * for the X86 processor family, in addition to any one of the other three
213 * macros, which may be used to identify a particular processor version.
214 */
215 # if defined(__i686__)
216 # define _M_IX86 600
217
218 # elif defined(__i586__)
219 # define _M_IX86 500
220
221 # elif defined(__i486__)
222 # define _M_IX86 400
223
224 # elif defined(__i386__)
225 # define _M_IX86 300
226 # endif
227 #endif
228
229 /* The preceding logic may have established the host type as X86, or it
230 * may have done nothing at all; we must check further.
231 */
232 #ifdef _M_IX86
233 /* We've established that we ARE compiling for an X86 host; any MinGW32
234 * compiler SHOULD have set this for us already...
235 */
236 # ifndef _X86_
237 /* ...but cross-check it anyway, in case the user may have some unusual
238 * compiler configuration in place.
239 */
240 # define _X86_ 1
241 # endif
242
243 # ifndef _M_IX86_FP
244 /* MSVC defines this, to provide additional information about particular
245 * capabilties of the X86 host environment; specifically...
246 */
247 # ifdef __SSE2__
248 /* ...this indicates that the SSE2 instruction set (or better) may be
249 * assumed to be supported...
250 */
251 # define _M_IX86_FP 2
252
253 # elif defined(__SSE__)
254 /* ...whereas, this promises only basic SSE instruction set support...
255 */
256 # define _M_IX86_FP 1
257
258 # else
259 /* ...and this disallows its use, entirely.
260 */
261 # define _M_IX86_FP 0
262 # endif
263 # endif
264
265 /* When not compiling for an X86 host; check mapping from other possible
266 * GCC architecture identifiers, to their MSVC equivalents.
267 */
268 #elif defined(__x86_64__) || defined(__amd64__)
269 /* This represents an Intel X86-64, or (compatible) AMD-64 processor;
270 * MSVC defines...
271 */
272 # ifndef _M_X64
273 /* ...this to represent the former, together with...
274 */
275 # define _M_X64 1
276 # endif
277 # ifndef _M_AMD64
278 /* ...this alias, to represent the latter.
279 */
280 # define _M_AMD64 1
281 # endif
282
283 #elif defined(__ia64__)
284 /* This represents an Intel Itanium processor, which MSVC designates
285 * by defining this feature test macro.
286 */
287 # ifndef _M_IA64
288 # define _M_IA64 1
289 # endif
290 #endif /* !_M_IX86 */
291
292 #endif /* _SDKDDKVER_H: $RCSfile: sdkddkver.h,v $: end of file */