1#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 */ 198