• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* MIT License
2  *
3  * Copyright (c) 2004 Daniel Stenberg
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy
6  * of this software and associated documentation files (the "Software"), to deal
7  * in the Software without restriction, including without limitation the rights
8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9  * copies of the Software, and to permit persons to whom the Software is
10  * furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  *
24  * SPDX-License-Identifier: MIT
25  */
26 #ifndef HEADER_CARES_CONFIG_WIN32_H
27 #define HEADER_CARES_CONFIG_WIN32_H
28 
29 /* ================================================================ */
30 /*   c-ares/config-win32.h - Hand crafted config file for Windows   */
31 /* ================================================================ */
32 
33 /* ---------------------------------------------------------------- */
34 /*                          HEADER FILES                            */
35 /* ---------------------------------------------------------------- */
36 
37 /* Define if you have the <assert.h> header file. */
38 #define HAVE_ASSERT_H 1
39 
40 /* Define if you have the <errno.h> header file. */
41 #define HAVE_ERRNO_H 1
42 
43 /* Define if you have the <getopt.h> header file. */
44 #if defined(__MINGW32__) || defined(__POCC__)
45 #  define HAVE_GETOPT_H 1
46 #endif
47 
48 /* Define if you have the <limits.h> header file. */
49 #define HAVE_LIMITS_H 1
50 
51 /* Define if you have the <process.h> header file. */
52 #ifndef __SALFORDC__
53 #  define HAVE_PROCESS_H 1
54 #endif
55 
56 /* Define if you have the <signal.h> header file. */
57 #define HAVE_SIGNAL_H 1
58 
59 /* Define if you have the <sys/time.h> header file */
60 /* #define HAVE_SYS_TIME_H 1 */
61 
62 /* Define if you have the <time.h> header file. */
63 #define HAVE_TIME_H 1
64 
65 /* Define if you have the <unistd.h> header file. */
66 #if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
67   defined(__POCC__)
68 #  define HAVE_UNISTD_H 1
69 #endif
70 
71 /* Define if you have the <windows.h> header file. */
72 #define HAVE_WINDOWS_H 1
73 
74 /* Define if you have the <winsock.h> header file. */
75 #define HAVE_WINSOCK_H 1
76 
77 /* Define if you have the <winsock2.h> header file. */
78 #ifndef __SALFORDC__
79 #  define HAVE_WINSOCK2_H 1
80 #endif
81 
82 /* Define if you have the <ws2tcpip.h> header file. */
83 #ifndef __SALFORDC__
84 #  define HAVE_WS2TCPIP_H 1
85 #endif
86 
87 /* Define if you have <iphlpapi.h> header file */
88 #define HAVE_IPHLPAPI_H 1
89 
90 /* Define if you have <netioapi.h> header file */
91 #ifndef __WATCOMC__
92 #  define HAVE_NETIOAPI_H 1
93 #endif
94 
95 #define HAVE_SYS_TYPES_H 1
96 #define HAVE_SYS_STAT_H  1
97 
98 /* If we are building with OpenWatcom, we need to specify that we have
99  * <stdint.h>. */
100 #if defined(__WATCOMC__)
101 #  define HAVE_STDINT_H
102 #endif
103 
104 /* ---------------------------------------------------------------- */
105 /*                        OTHER HEADER INFO                         */
106 /* ---------------------------------------------------------------- */
107 
108 /* Define if you have the ANSI C header files. */
109 #define STDC_HEADERS 1
110 
111 /* ---------------------------------------------------------------- */
112 /*                             FUNCTIONS                            */
113 /* ---------------------------------------------------------------- */
114 
115 /* Define if you have the closesocket function. */
116 #define HAVE_CLOSESOCKET 1
117 
118 /* Define if you have the getenv function. */
119 #define HAVE_GETENV 1
120 
121 /* Define if you have the gethostname function. */
122 #define HAVE_GETHOSTNAME 1
123 
124 /* Define if you have the ioctlsocket function. */
125 #define HAVE_IOCTLSOCKET 1
126 
127 /* Define if you have a working ioctlsocket FIONBIO function. */
128 #define HAVE_IOCTLSOCKET_FIONBIO 1
129 
130 /* Define if you have the strcasecmp function. */
131 /* #define HAVE_STRCASECMP 1 */
132 
133 /* Define if you have the strdup function. */
134 #define HAVE_STRDUP 1
135 
136 /* Define if you have the stricmp function. */
137 #define HAVE_STRICMP 1
138 
139 /* Define if you have the strncasecmp function. */
140 /* #define HAVE_STRNCASECMP 1 */
141 
142 /* Define if you have the strnicmp function. */
143 #define HAVE_STRNICMP 1
144 
145 /* Define if you have the recv function. */
146 #define HAVE_RECV 1
147 
148 /* Define to the type of arg 1 for recv. */
149 #define RECV_TYPE_ARG1 SOCKET
150 
151 /* Define to the type of arg 2 for recv. */
152 #define RECV_TYPE_ARG2 char *
153 
154 /* Define to the type of arg 3 for recv. */
155 #define RECV_TYPE_ARG3 int
156 
157 /* Define to the type of arg 4 for recv. */
158 #define RECV_TYPE_ARG4 int
159 
160 /* Define to the function return type for recv. */
161 #define RECV_TYPE_RETV int
162 
163 /* Define if you have the recvfrom function. */
164 #define HAVE_RECVFROM 1
165 
166 /* Define to the type of arg 1 for recvfrom. */
167 #define RECVFROM_TYPE_ARG1 SOCKET
168 
169 /* Define to the type pointed by arg 2 for recvfrom. */
170 #define RECVFROM_TYPE_ARG2 char
171 
172 /* Define to the type of arg 3 for recvfrom. */
173 #define RECVFROM_TYPE_ARG3 int
174 
175 /* Define to the type of arg 4 for recvfrom. */
176 #define RECVFROM_TYPE_ARG4 int
177 
178 /* Define to the type pointed by arg 5 for recvfrom. */
179 #define RECVFROM_TYPE_ARG5 struct sockaddr
180 
181 /* Define to the type pointed by arg 6 for recvfrom. */
182 #define RECVFROM_TYPE_ARG6 int
183 
184 /* Define to the function return type for recvfrom. */
185 #define RECVFROM_TYPE_RETV int
186 
187 /* Define if you have the send function. */
188 #define HAVE_SEND 1
189 
190 /* Define to the type of arg 1 for send. */
191 #define SEND_TYPE_ARG1 SOCKET
192 
193 /* Define to the type qualifier of arg 2 for send. */
194 #define SEND_QUAL_ARG2 const
195 
196 /* Define to the type of arg 2 for send. */
197 #define SEND_TYPE_ARG2 char *
198 
199 /* Define to the type of arg 3 for send. */
200 #define SEND_TYPE_ARG3 int
201 
202 /* Define to the type of arg 4 for send. */
203 #define SEND_TYPE_ARG4 int
204 
205 /* Define to the function return type for send. */
206 #define SEND_TYPE_RETV int
207 
208 /* Specifics for the Watt-32 tcp/ip stack. */
209 #ifdef WATT32
210 #  define SOCKET                   int
211 #  define NS_INADDRSZ              4
212 #  define HAVE_ARPA_NAMESER_H      1
213 #  define HAVE_ARPA_INET_H         1
214 #  define HAVE_NETDB_H             1
215 #  define HAVE_NETINET_IN_H        1
216 #  define HAVE_SYS_SOCKET_H        1
217 #  define HAVE_NETINET_TCP_H       1
218 #  define HAVE_AF_INET6            1
219 #  define HAVE_PF_INET6            1
220 #  define HAVE_STRUCT_IN6_ADDR     1
221 #  define HAVE_STRUCT_SOCKADDR_IN6 1
222 #  undef HAVE_WINSOCK_H
223 #  undef HAVE_WINSOCK2_H
224 #  undef HAVE_WS2TCPIP_H
225 #endif
226 
227 /* Threading support enabled */
228 #define CARES_THREADS 1
229 
230 /* ---------------------------------------------------------------- */
231 /*                       TYPEDEF REPLACEMENTS                       */
232 /* ---------------------------------------------------------------- */
233 
234 /* ---------------------------------------------------------------- */
235 /*                            TYPE SIZES                            */
236 /* ---------------------------------------------------------------- */
237 
238 /* ---------------------------------------------------------------- */
239 /*                          STRUCT RELATED                          */
240 /* ---------------------------------------------------------------- */
241 
242 /* Define if you have struct addrinfo. */
243 #define HAVE_STRUCT_ADDRINFO 1
244 
245 /* Define if you have struct sockaddr_storage. */
246 #if !defined(__SALFORDC__) && !defined(__BORLANDC__)
247 #  define HAVE_STRUCT_SOCKADDR_STORAGE 1
248 #endif
249 
250 /* Define if you have struct timeval. */
251 #define HAVE_STRUCT_TIMEVAL 1
252 
253 /* ---------------------------------------------------------------- */
254 /*                        COMPILER SPECIFIC                         */
255 /* ---------------------------------------------------------------- */
256 
257 /* Define to avoid VS2005 complaining about portable C functions. */
258 #if defined(_MSC_VER) && (_MSC_VER >= 1400)
259 #  define _CRT_SECURE_NO_DEPRECATE  1
260 #  define _CRT_NONSTDC_NO_DEPRECATE 1
261 #endif
262 
263 /* Set the Target to Win8 */
264 #if defined(_MSC_VER) && (_MSC_VER >= 1500)
265 #  define MSVC_MIN_TARGET 0x0602
266 #endif
267 
268 /* MSVC default target settings */
269 #if defined(_MSC_VER) && (_MSC_VER >= 1500)
270 #  ifndef _WIN32_WINNT
271 #    define _WIN32_WINNT MSVC_MIN_TARGET
272 #  endif
273 #  ifndef WINVER
274 #    define WINVER MSVC_MIN_TARGET
275 #  endif
276 #endif
277 
278 /* When no build target is specified Pelles C 5.00 and later default build
279    target is Windows Vista. */
280 #if defined(__POCC__) && (__POCC__ >= 500)
281 #  ifndef _WIN32_WINNT
282 #    define _WIN32_WINNT 0x0602
283 #  endif
284 #  ifndef WINVER
285 #    define WINVER 0x0602
286 #  endif
287 #endif
288 
289 /* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is
290    quite convoluted, compiler dependent and even build target dependent. */
291 #if defined(HAVE_WS2TCPIP_H)
292 #  if defined(__POCC__)
293 #    define HAVE_FREEADDRINFO 1
294 #    define HAVE_GETADDRINFO  1
295 #    define HAVE_GETNAMEINFO  1
296 #  elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
297 #    define HAVE_FREEADDRINFO 1
298 #    define HAVE_GETADDRINFO  1
299 #    define HAVE_GETNAMEINFO  1
300 #  elif defined(_MSC_VER) && (_MSC_VER >= 1200)
301 #    define HAVE_FREEADDRINFO 1
302 #    define HAVE_GETADDRINFO  1
303 #    define HAVE_GETNAMEINFO  1
304 #  endif
305 #endif
306 
307 #if defined(__POCC__)
308 #  ifndef _MSC_VER
309 #    error Microsoft extensions /Ze compiler option is required
310 #  endif
311 #  ifndef __POCC__OLDNAMES
312 #    error Compatibility names /Go compiler option is required
313 #  endif
314 #endif
315 
316 /* ---------------------------------------------------------------- */
317 /*                         IPV6 COMPATIBILITY                       */
318 /* ---------------------------------------------------------------- */
319 
320 /* Define if you have address family AF_INET6. */
321 #ifdef HAVE_WINSOCK2_H
322 #  define HAVE_AF_INET6 1
323 #endif
324 
325 /* Define if you have protocol family PF_INET6. */
326 #ifdef HAVE_WINSOCK2_H
327 #  define HAVE_PF_INET6 1
328 #endif
329 
330 /* Define if you have struct in6_addr. */
331 #ifdef HAVE_WS2TCPIP_H
332 #  define HAVE_STRUCT_IN6_ADDR 1
333 #endif
334 
335 /* Define if you have struct sockaddr_in6. */
336 #ifdef HAVE_WS2TCPIP_H
337 #  define HAVE_STRUCT_SOCKADDR_IN6 1
338 #endif
339 
340 /* Define if you have sockaddr_in6 with scopeid. */
341 #ifdef HAVE_WS2TCPIP_H
342 #  define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
343 #endif
344 
345 #if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && !defined(__WATCOMC__)
346 /* Define if you have if_nametoindex() */
347 #  define HAVE_IF_NAMETOINDEX 1
348 /* Define if you have if_indextoname() */
349 #  define HAVE_IF_INDEXTONAME 1
350 /* Define to 1 if you have the `ConvertInterfaceIndexToLuid' function. */
351 #  define HAVE_CONVERTINTERFACEINDEXTOLUID 1
352 /* Define to 1 if you have the `ConvertInterfaceLuidToNameA' function. */
353 #  define HAVE_CONVERTINTERFACELUIDTONAMEA 1
354 #endif
355 
356 /* ---------------------------------------------------------------- */
357 /*                              Win CE                              */
358 /* ---------------------------------------------------------------- */
359 
360 /* FIXME: A proper config-win32ce.h should be created to hold these */
361 
362 /*
363  *  System error codes for Windows CE
364  */
365 
366 #if defined(_WIN32_WCE) && !defined(HAVE_ERRNO_H)
367 #  define ENOENT ERROR_FILE_NOT_FOUND
368 #  define ESRCH  ERROR_PATH_NOT_FOUND
369 #  define ENOMEM ERROR_NOT_ENOUGH_MEMORY
370 #  define ENOSPC ERROR_INVALID_PARAMETER
371 #endif
372 
373 #endif /* HEADER_CARES_CONFIG_WIN32_H */
374