blob: a46c510b709f0286a7184e267f86150df88ee2bd [file] [log] [blame]
Gilad Arnold968bf192015-07-17 00:23:30 -07001#ifndef HEADER_CARES_SETUP_H
2#define HEADER_CARES_SETUP_H
3
4
5/* Copyright (C) 2004 - 2009 by Daniel Stenberg et al
6 *
7 * Permission to use, copy, modify, and distribute this software and its
8 * documentation for any purpose and without fee is hereby granted, provided
9 * that the above copyright notice appear in all copies and that both that
10 * copyright notice and this permission notice appear in supporting
11 * documentation, and that the name of M.I.T. not be used in advertising or
12 * publicity pertaining to distribution of the software without specific,
13 * written prior permission. M.I.T. makes no representations about the
14 * suitability of this software for any purpose. It is provided "as is"
15 * without express or implied warranty.
16 */
17
18/*
19 * Define WIN32 when build target is Win32 API
20 */
21
22#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
23#define WIN32
24#endif
25
26/*
27 * Include configuration script results or hand-crafted
28 * configuration file for platforms which lack config tool.
29 */
30
31#ifdef HAVE_CONFIG_H
32#include "ares_config.h"
33#else
34
35#ifdef WIN32
36#include "config-win32.h"
37#endif
38
39#endif /* HAVE_CONFIG_H */
40
41/* ================================================================ */
42/* Definition of preprocessor macros/symbols which modify compiler */
43/* behaviour or generated code characteristics must be done here, */
44/* as appropriate, before any system header file is included. It is */
45/* also possible to have them defined in the config file included */
46/* before this point. As a result of all this we frown inclusion of */
47/* system header files in our config files, avoid this at any cost. */
48/* ================================================================ */
49
50/*
51 * AIX 4.3 and newer needs _THREAD_SAFE defined to build
52 * proper reentrant code. Others may also need it.
53 */
54
55#ifdef NEED_THREAD_SAFE
56# ifndef _THREAD_SAFE
57# define _THREAD_SAFE
58# endif
59#endif
60
61/*
62 * Tru64 needs _REENTRANT set for a few function prototypes and
63 * things to appear in the system header files. Unixware needs it
64 * to build proper reentrant code. Others may also need it.
65 */
66
67#ifdef NEED_REENTRANT
68# ifndef _REENTRANT
69# define _REENTRANT
70# endif
71#endif
72
73/* ================================================================ */
74/* If you need to include a system header file for your platform, */
75/* please, do it beyond the point further indicated in this file. */
76/* ================================================================ */
77
78/*
79 * c-ares external interface definitions are also used internally,
80 * and might also include required system header files to define them.
81 */
82
83#include <ares_build.h>
84
85/*
86 * Compile time sanity checks must also be done when building the library.
87 */
88
89#include <ares_rules.h>
90
91/* ================================================================= */
92/* No system header file shall be included in this file before this */
93/* point. The only allowed ones are those included from ares_build.h */
94/* ================================================================= */
95
96/*
97 * Include header files for windows builds before redefining anything.
98 * Use this preproessor block only to include or exclude windows.h,
99 * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
100 * to any other further and independent block. Under Cygwin things work
101 * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
102 * never be included when __CYGWIN__ is defined. configure script takes
103 * care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H,
104 * neither HAVE_WS2TCPIP_H when __CYGWIN__ is defined.
105 */
106
107#ifdef HAVE_WINDOWS_H
108# ifndef WIN32_LEAN_AND_MEAN
109# define WIN32_LEAN_AND_MEAN
110# endif
111# include <windows.h>
112# ifdef HAVE_WINSOCK2_H
113# include <winsock2.h>
114# ifdef HAVE_WS2TCPIP_H
115# include <ws2tcpip.h>
116# endif
117# else
118# ifdef HAVE_WINSOCK_H
119# include <winsock.h>
120# endif
121# endif
122#endif
123
124/*
125 * Define USE_WINSOCK to 2 if we have and use WINSOCK2 API, else
126 * define USE_WINSOCK to 1 if we have and use WINSOCK API, else
127 * undefine USE_WINSOCK.
128 */
129
130#undef USE_WINSOCK
131
132#ifdef HAVE_WINSOCK2_H
133# define USE_WINSOCK 2
134#else
135# ifdef HAVE_WINSOCK_H
136# define USE_WINSOCK 1
137# endif
138#endif
139
140/*
141 * Work-arounds for systems without configure support
142 */
143
144#ifndef HAVE_CONFIG_H
145
146#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__)
147#define HAVE_SYS_TIME_H
148#endif
149
150#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER)
151#define HAVE_UNISTD_H 1
152#endif
153
154#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS)
155#define HAVE_SYS_UIO_H
156#endif
157
158#endif /* HAVE_CONFIG_H */
159
160#ifdef __POCC__
161# include <sys/types.h>
162# include <unistd.h>
163# define ESRCH 3
164#endif
165
166/*
167 * Recent autoconf versions define these symbols in ares_config.h. We don't
168 * want them (since they collide with the libcurl ones when we build
169 * --enable-debug) so we undef them again here.
170 */
171
172#undef PACKAGE_STRING
173#undef PACKAGE_TARNAME
174#undef PACKAGE_VERSION
175#undef PACKAGE_BUGREPORT
176#undef PACKAGE_NAME
177#undef VERSION
178#undef PACKAGE
179
180/* IPv6 compatibility */
181#if !defined(HAVE_AF_INET6)
182#if defined(HAVE_PF_INET6)
183#define AF_INET6 PF_INET6
184#else
185#define AF_INET6 AF_MAX+1
186#endif
187#endif
188
189/*
190 * Include macros and defines that should only be processed once.
191 */
192
193#ifndef __SETUP_ONCE_H
194#include "setup_once.h"
195#endif
196
197#endif /* HEADER_CARES_SETUP_H */