aboutsummaryrefslogtreecommitdiff
path: root/lib/README.ares
blob: c20b2505e1ff3f40ae93090fb660938ee85e5c29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
$Id$
                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

          How To Build libcurl to Use ares For Asynch Name Resolves
          =========================================================

ares:
  ftp://athena-dist.mit.edu/pub/ATHENA/ares/ares-1.1.1.tar.gz
  http://curl.haxx.se/dev/ares-1.1.1.tar.gz
  http://curl.sourceforge.net/dev/ares-1.1.1.tar.gz
  http://curl.planetmirror.com/dev/ares-1.1.1.tar.gz
  http://curl.tsuren.net/dev/ares-1.1.1.tar.gz
  
c-ares: (a patched and improved version of ares)
  http://curl.haxx.se/beta/arescurl-1.0-pre1.tar.gz

NOTE
  libcurl works with ares 1.1.1, but several patches and improvements have
  been put into the c-ares package which has made it more portable and better
  working on several platforms.

Build ares
==========

1. unpack the ares archive
2. cd ares-dir
3. ./configure
4. make

Build libcurl to use ares in the curl source tree
=================================================

1. name the ares source directory 'ares' in the curl source directory
2. ./configure --enable-ares
3. make

Build libcurl to use an installed ares
======================================

1. ./configure --enable-ares=/path/to/ares/install
2. make

Ares and ipv6
=============

If the configure script enables IPv6 support you need to explicitly disable
that (--disable-ipv6) since ares isn't IPv6 compatible (yet).

Ares on win32
=============
(description brought by Dominick Meglio)

First I compiled curl-ares. I changed the default C runtime library to be the
single-threaded rather than the multi-threaded (this seems to be required to
prevent linking errors later on). Then I simply build the areslib project (the
other projects adig/ahost seem to fail under MSVC).

Next was libcurl. I opened lib/config-win32.h and I added a:
 #define USE_ARES 1

Next thing I added was, near the HAVE_GETTIMEOFDAY checks I added:
#ifdef USE_ARES
#define HAVE_GETTIMEOFDAY 1
#endif

The reason is, it seems curl-ares has a gettimeofday function in it (perhaps
this should be made static in ares to avoid this kludge?) To prevent a
duplicate symbol error, I had to make sure libcurl didn't also try and create
a gettimeofday() function.

Next thing I did was I added the path for the ares includes to the include
path, and the libares.lib to the libraries.

Lastly, I also changed libcurl to be single-threaded rather than
multi-threaded, again this was to prevent some duplicate symbol errors. I'm
not sure why I needed to change everything to single-threaded, but when I
didn't I got redefinition errors for several CRT functions (malloc, stricmp,
etc.)

I would have modified the MSVC++ project files, but I only have VC.NET and it
uses a different format than VC6.0 so I didn't want to go and change
everything and remove VC6.0 support from libcurl.