[System.Private.Corelib] More nullable types tweaks
[mono-project.git] / winconfig.h
blob3b2bedc4807a9cd2d281b6082459264fa7a49ea7
1 #pragma once
3 #ifdef _MSC_VER
5 /* Building Mono runtime under MSVC uses this template for it's config.h since autogen.sh can't */
6 /* generate a config.h that is suitable for MSVC builds. The below template will still get */
7 /* some dynamic configuration from autogen.sh config.h, if one exists. */
8 #include <msvc/msvc-win32-support.h>
9 #include <msvc/msvc-disabled-warnings.h>
11 #ifdef HAVE_BOEHM_GC
12 /* Only used when building using Boehm GC and only supported on x86 builds */
13 #define DEFAULT_GC_NAME "Included Boehm (with typed GC)"
14 #endif
16 /* Disable runtime state dumping */
17 #define DISABLE_CRASH_REPORTING 1
19 /* String of disabled features */
20 #define DISABLED_FEATURES "none"
22 /* Disables the IO portability layer */
23 #define DISABLE_PORTABILITY 1
25 /* Start configure DISABLE_DEFINES picked up from cygconfig.h or other external source, if available */
26 /* @DISABLE_DEFINES@ */
27 /* End configure DISABLE_DEFINES picked up from cygconfig.h or other external source, if available */
29 /* No DISABLE_DEFINES below this point */
31 /* Some VES is available at runtime */
32 #define ENABLE_ILGEN 1
34 /* Start configure ENABLE_DEFINES picked up from cygconfig.h or other external source, if available */
35 /* @ENABLE_DEFINES@ */
36 /* End configure ENABLE_DEFINES picked up from cygconfig.h or other external source, if available */
38 #if defined(ENABLE_HYBRID_SUSPEND) || defined(ENABLE_COOP_SUSPEND)
39 /* Windows MSVC builds defaults to preemptive suspend. Disable ENABLE_HYBRID_SUSPEND/ENABLE_COOP_SUSPEND defines. */
40 #undef ENABLE_HYBRID_SUSPEND
41 #undef ENABLE_COOP_SUSPEND
42 #endif
44 /* No ENABLE_DEFINES below this point */
46 /* Have access */
47 #define HAVE_ACCESS 1
49 /* Define to 1 if you have the `system' function. */
50 #if HAVE_WINAPI_FAMILY_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT)
51 #define HAVE_SYSTEM 1
52 #endif
54 /* Define to 1 if you have the <complex.h> header file. */
55 #define HAVE_COMPLEX_H 1
57 #if defined(HAVE_SGEN_GC) && !defined(HAVE_CONC_GC_AS_DEFAULT)
58 /* Defaults to concurrent GC */
59 #define HAVE_CONC_GC_AS_DEFAULT 1
60 #endif
62 /* Have /dev/random */
63 #define HAVE_CRYPT_RNG 1
65 /* Define to 1 if you have the declaration of `InterlockedAdd',
66 and to 0 if you don't. */
67 #define HAVE_DECL_INTERLOCKEDADD 1
69 /* Define to 1 if you have the declaration of `InterlockedAdd64',
70 and to 0 if you don't. */
71 #define HAVE_DECL_INTERLOCKEDADD64 1
73 /* Define to 1 if you have the declaration of `InterlockedCompareExchange64',
74 and to 0 if you don't. */
75 #define HAVE_DECL_INTERLOCKEDCOMPAREEXCHANGE64 1
77 /* Define to 1 if you have the declaration of `InterlockedDecrement64',
78 and to 0 if you don't. */
79 #define HAVE_DECL_INTERLOCKEDDECREMENT64 1
81 /* Define to 1 if you have the declaration of `InterlockedExchange64',
82 and to 0 if you don't. */
83 #define HAVE_DECL_INTERLOCKEDEXCHANGE64 1
85 /* Define to 1 if you have the declaration of `InterlockedIncrement64',
86 and to 0 if you don't. */
87 #define HAVE_DECL_INTERLOCKEDINCREMENT64 1
89 /* Define to 1 if you have the declaration of `__readfsdword',
90 and to 0 if you don't. */
91 #define HAVE_DECL___READFSDWORD 1
93 /* Define to 1 if you have the `getaddrinfo' function. */
94 #define HAVE_GETADDRINFO 1
96 /* Define to 1 if you have the `getnameinfo' function. */
97 #define HAVE_GETNAMEINFO 1
99 /* Define to 1 if you have the `getprotobyname' function. */
100 #define HAVE_GETPROTOBYNAME 1
102 /* Define to 1 if you have the `GetProcessId' function. */
103 #define HAVE_GETPROCESSID 1
105 /* Have inet_ntop */
106 #define HAVE_INET_NTOP 1
108 /* Define to 1 if you have the `inet_pton' function. */
109 #define HAVE_INET_PTON 1
111 /* Define to 1 if you have the <inttypes.h> header file. */
112 #define HAVE_INTTYPES_H 1
114 /* Define to 1 if you have the <memory.h> header file. */
115 #define HAVE_MEMORY_H 1
117 #if defined(HAVE_SGEN_GC) && !defined(HAVE_MOVING_COLLECTOR)
118 /* Moving collector */
119 #define HAVE_MOVING_COLLECTOR 1
120 #endif
122 /* Define to 1 if you have the `signal' function. */
123 #define HAVE_SIGNAL 1
125 /* Define to 1 if you have the <signal.h> header file. */
126 #define HAVE_SIGNAL_H 1
128 /* Define to 1 if you have the <stdint.h> header file. */
129 #define HAVE_STDINT_H 1
131 /* Define to 1 if you have the <stdlib.h> header file. */
132 #define HAVE_STDLIB_H 1
134 /* Define to 1 if you have the <strings.h> header file. */
135 #define HAVE_STRINGS_H 1
137 /* Define to 1 if you have the <string.h> header file. */
138 #define HAVE_STRING_H 1
140 /* Define to 1 if you have the `strtok_r' function. */
141 #define HAVE_STRTOK_R 1
143 /* Have struct ip_mreq */
144 #define HAVE_STRUCT_IP_MREQ 1
146 /* Define to 1 if the system has the type `struct sockaddr_in6'. */
147 #define HAVE_STRUCT_SOCKADDR_IN6 1
149 /* Define to 1 if you have the <sys/stat.h> header file. */
150 #define HAVE_SYS_STAT_H 1
152 /* Define to 1 if you have the <sys/types.h> header file. */
153 #define HAVE_SYS_TYPES_H 1
155 /* Define to 1 if you have the <sys/utime.h> header file. */
156 #define HAVE_SYS_UTIME_H 1
158 /* Define to 1 if you have the <wchar.h> header file. */
159 #define HAVE_WCHAR_H 1
161 /* Define to 1 if you have the <winternl.h> header file. */
162 #define HAVE_WINTERNL_H 1
164 #if defined(HAVE_SGEN_GC) && !defined(HAVE_WRITE_BARRIERS)
165 #define HAVE_WRITE_BARRIERS
166 #endif
168 /* Start configure HAVE_DEFINES picked up from cygconfig.h or other external source, if available */
169 /* @HAVE_DEFINES@ */
170 /* End configure HAVE_DEFINES picked up from cygconfig.h or other external source, if available */
172 /* No HAVE_DEFINES below this point */
174 /* This platform does not support symlinks */
175 #define HOST_NO_SYMLINKS 1
177 /* Host Platform is Win32 */
178 #define HOST_WIN32 1
180 /* The architecture this is running on */
181 #if defined(_M_IA64)
182 #define MONO_ARCHITECTURE "ia64"
183 #elif defined(_M_AMD64)
184 #define MONO_ARCHITECTURE "amd64"
185 #elif defined(_M_IX86)
186 #define MONO_ARCHITECTURE "x86"
187 #else
188 #error Unknown architecture
189 #endif
191 /* Version of the corlib-runtime interface */
192 #define MONO_CORLIB_VERSION "#MONO_CORLIB_VERSION#"
194 /* Have __thread keyword */
195 #define MONO_KEYWORD_THREAD __declspec (thread)
197 /* Length of zero length arrays */
198 #define MONO_ZERO_LEN_ARRAY 1
200 /* Name of /dev/random */
201 #define NAME_DEV_RANDOM ""
203 /* Name of package */
204 #define PACKAGE "mono"
206 /* Define to the address where bug reports for this package should be sent. */
207 #define PACKAGE_BUGREPORT "https://github.com/mono/mono/issues/new"
209 /* Define to the full name of this package. */
210 #define PACKAGE_NAME "mono"
212 /* Define to the full name and version of this package. */
213 #define PACKAGE_STRING "mono #MONO_VERSION#"
215 /* Define to the one symbol short name of this package. */
216 #define PACKAGE_TARNAME "mono"
218 /* Define to the home page for this package. */
219 #define PACKAGE_URL ""
221 /* Define to the version of this package. */
222 #define PACKAGE_VERSION "#MONO_VERSION#"
224 /* The size of `int', as computed by sizeof. */
225 #define SIZEOF_INT 4
227 /* The size of `long', as computed by sizeof. */
228 #define SIZEOF_LONG 4
230 /* The size of `long long', as computed by sizeof. */
231 #define SIZEOF_LONG_LONG 8
233 /* size of target machine integer registers */
234 #ifdef _WIN64
235 #define SIZEOF_REGISTER 8
236 #else
237 #define SIZEOF_REGISTER 4
238 #endif
240 /* The size of `void *', as computed by sizeof. */
241 #ifdef _WIN64
242 #define SIZEOF_VOID_P 8
243 #else
244 #define SIZEOF_VOID_P 4
245 #endif
247 /* Define to 1 if you have the ANSI C header files. */
248 #define STDC_HEADERS 1
250 #ifdef _WIN64
251 #define TARGET_AMD64 1
252 #define HOST_AMD64 1
253 #else
254 #define TARGET_X86 1
255 #define HOST_X86 1
256 #endif
258 /* byte order of target */
259 #define TARGET_BYTE_ORDER G_BYTE_ORDER
261 /* wordsize of target */
262 #define TARGET_SIZEOF_VOID_P SIZEOF_VOID_P
264 /* Platform is Win32 */
265 #define TARGET_WIN32 1
267 /* Version number of package */
268 #define VERSION "#MONO_VERSION#"
270 #else
272 /* Not building under MSVC, use autogen.sh generated config.h */
273 #include "cygconfig.h"
275 #endif
277 #if defined(ENABLE_LLVM) && defined(HOST_WIN32) && defined(TARGET_WIN32) && (!defined(TARGET_AMD64) || !defined(_MSC_VER))
278 #error LLVM for host=Windows and target=Windows is only supported on x64 MSVC build.
279 #endif