README
1c-ares
2======
3
4This is c-ares, an asynchronous resolver library. It is intended for
5applications which need to perform DNS queries without blocking, or need to
6perform multiple DNS queries in parallel. The primary examples of such
7applications are servers which communicate with multiple clients and programs
8with graphical user interfaces.
9
10The full source code is available in the 'c-ares' release archives, and in a
11git repository: http://github.com/bagder/c-ares
12
13If you find bugs, correct flaws, have questions or have comments in general in
14regard to c-ares (or by all means the original ares too), get in touch with us
15on the c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares
16
17c-ares is of course distributed under the same MIT-style license as the
18original ares.
19
20You'll find all c-ares details and news here:
21
22 http://c-ares.haxx.se/
23
24
25NOTES FOR C-ARES HACKERS
26
27The following notes apply to c-ares version 1.7.0 and later.
28
29* The distributed ares_build.h file is only intended to be used on systems
30 which can not run the also distributed configure script.
31
32* The distributed ares_build.h file is generated as a copy of ares_build.h.dist
33 when the c-ares source code distribution archive file is originally created.
34
35* If you check out from git on a non-configure platform, you must run the
36 appropriate buildconf* script to set up ares_build.h and other local files
37 before being able of compiling the library.
38
39* On systems capable of running the configure script, the configure process
40 will overwrite the distributed ares_build.h file with one that is suitable
41 and specific to the library being configured and built, this new file is
42 generated from the ares_build.h.in template file.
43
44* If you intend to distribute an already compiled c-ares library you _MUST_
45 also distribute along with it the generated ares_build.h which has been
46 used to compile it. Otherwise the library will be of no use for the users of
47 the library that you have built. It is _your_ responsibility to provide this
48 file. No one at the c-ares project can know how you have built the library.
49
50* File ares_build.h includes platform and configuration dependent info,
51 and must not be modified by anyone. Configure script generates it for you.
52
53* We cannot assume anything else but very basic compiler features being
54 present. While c-ares requires an ANSI C compiler to build, some of the
55 earlier ANSI compilers clearly can't deal with some preprocessor operators.
56
57* Newlines must remain unix-style for older compilers' sake.
58
59* Comments must be written in the old-style /* unnested C-fashion */
60
61
README.cares
1c-ares
2======
3
4This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
5fork and release a separate project since the ares author didn't want the
6improvements that were vital for our use of it.
7
8This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
9within the curl project (hence the letter C) and it makes a nice pun. Also,
10c-ares is not API compatible with ares: a new name makes that more obvious to
11the public.
12
13The original libares was distributed at athena-dist.mit.edu:pub/ATHENA/ares.
14
README.msvc
1
2
3 ___ __ _ _ __ ___ ___
4 / __| ___ / _` | '__/ _ \/ __|
5 | (_ |___| (_| | | | __/\__ \
6 \___| \__,_|_| \___||___/
7
8
9 How to build c-ares using MSVC or Visual Studio
10 =================================================
11
12
13
14 How to build using MSVC from the command line
15 ---------------------------------------------
16
17 Open a command prompt window and ensure that the environment is properly
18 set up in order to use MSVC or Visual Studio compiler tools.
19
20 Change to c-ares source folder where Makefile.msvc file is located and run:
21
22 > nmake -f Makefile.msvc
23
24 This will build all c-ares libraries as well as three sample programs.
25
26 Once the above command has finished a new folder named MSVCXX will exist
27 below the folder where makefile.msvc is found. The name of the folder
28 depends on the MSVC compiler version being used to build c-ares.
29
30 Below the MSVCXX folder there will exist four folders named 'cares',
31 'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that
32 holds the c-ares libraries you have just generated, the other three
33 hold sample programs that use the libraries.
34
35 The above command builds four versions of the c-ares library, dynamic
36 and static versions and each one in release and debug flavours. Each
37 of these is found in folders named dll-release, dll-debug, lib-release,
38 and lib-debug, which hang from the 'cares' folder mentioned above. Each
39 sample program also has folders with the same names to reflect which
40 library version it is using.
41
42
43 How to install using MSVC from the command line
44 -----------------------------------------------
45
46 In order to allow easy usage of c-ares libraries it may be convenient to
47 install c-ares libraries and header files to a common subdirectory tree.
48
49 Once that c-ares libraries have been built using procedure described above,
50 use same command prompt window to define environment variable INSTALL_DIR
51 to designate the top subdirectory where installation of c-ares libraries and
52 header files will be done.
53
54 > set INSTALL_DIR=c:\c-ares
55
56 Afterwards, run following command to actually perform the installation:
57
58 > nmake -f Makefile.msvc install
59
60 Installation procedure will copy c-ares libraries to subdirectory 'lib' and
61 c-ares header files to subdirectory 'include' below the INSTALL_DIR subdir.
62
63 When environment variable INSTALL_DIR is not defined, installation is done
64 to c-ares source folder where Makefile.msvc file is located.
65
66
67 How to build using Visual Studio 6 IDE
68 --------------------------------------
69
70 A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc'
71 folder to allow proper building of the library and sample programs.
72
73 1) Open the vc6aws.dsw workspace with MSVC6's IDE.
74 2) Select 'Build' from top menu.
75 3) Select 'Batch Build' from dropdown menu.
76 4) Make sure that the sixteen project configurations are 'checked'.
77 5) Click on the 'Build' button.
78 6) Once the sixteen project configurations are built you are done.
79
80 Dynamic and static c-ares libraries are built in debug and release flavours,
81 and can be located each one in its own subdirectory, dll-debug, dll-release,
82 lib-debug and lib-release, all of them below the 'vc\cares' subdirectory.
83
84 In the same way four executable versions of each sample program are built,
85 each using its respective library. The resulting sample executables are
86 located in its own subdirectory, dll-debug, dll-release, lib-debug and
87 lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders.
88
89 These reference VC++ 6.0 configurations are generated using the dynamic CRT.
90
91
92 How to build using Visual Studio 2003 or newer IDE
93 --------------------------------------------------
94
95 First you have to convert the VC++ 6.0 reference workspace and project files
96 to the Visual Studio IDE version you are using, following next steps:
97
98 1) Open vc\vc6aws.dsw with VS20XX.
99 2) Allow VS20XX to update all projects and workspaces.
100 3) Save ALL and close VS20XX.
101 4) Open vc\vc6aws.sln with VS20XX.
102 5) Select batch build, check 'all' projects and click 'build' button.
103
104 Same comments relative to generated files and folders as done above for
105 Visual Studio 6 IDE apply here.
106
107
108 Relationship between c-ares library file names and versions
109 -----------------------------------------------------------
110
111 c-ares static release library version files:
112
113 libcares.lib -> static release library
114
115 c-ares static debug library version files:
116
117 libcaresd.lib -> static debug library
118
119 c-ares dynamic release library version files:
120
121 cares.dll -> dynamic release library
122 cares.lib -> import library for the dynamic release library
123 cares.exp -> export file for the dynamic release library
124
125 c-ares dynamic debug library version files:
126
127 caresd.dll -> dynamic debug library
128 caresd.lib -> import library for the dynamic debug library
129 caresd.exp -> export file for the dynamic debug library
130 caresd.pdb -> debug symbol file for the dynamic debug library
131
132
133 How to use c-ares static libraries
134 ----------------------------------
135
136 When using the c-ares static library in your program, you will have to
137 define preprocessor symbol CARES_STATICLIB while building your program,
138 otherwise you will get errors at linkage stage.
139
140
141Have Fun!
142
143