Merged silc_1_0_branch to trunk.
[silc.git] / README.CVS
1 Anonymous CVS Access
2 ====================
3
4 Anonymous CVS access is now available to SILC CVS repository. The
5 repository includes everything related to SILC project; source codes,
6 documentation and web pages.
7
8 Also note that this is the closest to real time development you can get
9 thus you cannot expect that the source tree would work or even compile.
10 While it is our intention that the trunk would always at least compile
11 there might be situations when it will not.
12
13
14 Howto Checkout The Source Tree
15 ==============================
16
17 The repository can be checked out by using anonymous pserver with CVS.
18 There are no password restrictions in the SILC anonymous CVS repository.
19
20 For those who are using sh/ksh/bash the check out is done as follows:
21
22 export CVSROOT=:pserver:cvs@cvs.silcnet.org:/cvs/silc
23 cvs login
24 cvs co silc
25
26 For those who are using csh/tcsh the check out is done as follows:
27
28 setenv CVSROOT :pserver:cvs@cvs.silcnet.org:/cvs/silc
29 cvs login
30 cvs co silc
31
32 If you don't want to set $CVSROOT environment variable you can set the
33 path to the cvs as command line options:
34
35 cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc login
36 cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc co silc
37
38 What ever method you decide to use, after you have done cvs login you will
39 be prompted for password:
40
41         CVS password: silc
42
43 Type the password "silc" and press Enter.
44
45 The actual SILC source tree is checked out using the cvs co silc command,
46 described above. This command will fetch the source tree and save it into
47 directory named silc. SILC CVS repository currently does not have any
48 branches thus this will check out the trunk. The size of the trunk is
49 currently about 8 Mb but will grow in the future.
50
51
52 What SILC Source Tree Includes
53 ==============================
54
55 SILC Source tree includes a lot more stuff that appears in public
56 distribution.  The source tree includes, for example, internal scripts,
57 configuration files, SILC webpages etc.  These never appear on a public
58 distribution.
59
60 Following directories currently exist in SILC source tree.
61
62   doc/
63
64         Includes all the SILC documentation.  Some of the documentation
65         are generated when distribution is generated.  The automatically
66         generated files must never be commited to CVS.
67
68   includes/
69
70         Includes SILC include files.
71
72   irssi/
73
74         Includes the Irssi SILC Client.
75
76   lib/
77
78         Includes SILC libraries.  There maybe libraries on the CVS that
79         does not appear on public distribution.
80
81   lib/contrib/
82
83         Contrib directory for routines that some of the platforms might
84         not have.  In that case these routines are provided by the SILC.
85
86   lib/silcclient/
87
88         The SILC Client library. Implementation of the SILC Client without
89         the user interface.  The library provides an interface for user
90         interface designers.
91
92   lib/silccore/
93
94         The SILC Protocol Core library.  Implementation of all the core
95         components of the SILC Protocol.  This is used by all the SILC
96         applications.
97
98   lib/silccrypt/
99
100         The SILC Crypto library. Provides all cryptographic algorithms
101         used in the SILC.  Provides also the Cryptographically strong
102         random number generator.
103
104   lib/silcmath/
105
106         The SILC Math library. Provides the Math and MP routines for
107         SILC applications.  The MP library is actually the GMP.
108
109   lib/silsim/
110
111         The SILC Modules library.  Provides the dynamically loadable
112         modules.
113
114   lib/silcske/
115
116         The SILC Key Exchange (SKE) library.  Implementation of the
117         SKE protocol.  This is used by all SILC applications.
118
119   lib/silcutil/
120
121         The SILC Utility library.  Provides various utility functions
122         for the applications.
123
124   lib/silcutil/unix/
125
126         The SILC Utility library.  Provides various Unix specific utility
127         functions for the applications.
128
129   lib/silcutil/win32/
130
131         The SILC Utility library.  Provides various WIN32 specific utility
132         functions for the applications.
133
134   public_html/
135
136         Includes the official SILC web pages and everything that relates
137         to them.  This directory never appears on public distribution.
138
139   silc/
140
141         Includes an example implementation of ncurses based SILC client.
142         It won't compile with current Toolkit since it is not being 
143         updated.  It is still good example for Toolkit programmer to 
144         figure out how to use SILC Toolkit.
145
146   silcer/
147
148         Includes an example implementation of GUI (Gnome) base SILC
149         client.  Please read silcer/README for more information.
150
151   silcd/
152
153         Includes SILC server.  There can be some extra files that will
154         never appear in public distribution, such as, configuration files.
155
156   win32/
157
158         Includes win32 Toolkit specific files.  It includes MSVC++
159         Workspace files.  The win32/tests includes example code for
160         use of SILC Toolkit and SILC Client Library on Win32 GUI 
161         application.
162
163
164 Howto Compile SILC Source Tree
165 ==============================
166
167 To be able to prepare the CVS tree for configuration and compilation
168 Autodist must be installed into the system.  You can download the latest
169 version of Autodist from: 
170
171         http://silcnet.org/software/download/autodist/
172
173 To prepare the CVS source tree for configuration and compilation, give:
174
175         autodist
176         ./configure --enable-debug
177         make
178
179 The autodist must be run every time you make some changes to configuration 
180 scripts.
181
182 As a developer you should read the ./configure script's help by
183 giving ./configure --help and study all of its different options.  Also,
184 you should configure the script with --enable-debug option as it
185 compiles SILC with -g (debugging) option and it enables the 
186 SILC_LOG_DEBUG* scripts.  Warning is due here:  The debugging produced
187 by both cilent and server is very heavy, thus it is common to test
188 the programs as follows:
189
190         ./silc -d "*" -f configfile 2>log
191         ./silcd -d "*" -f configfile 2>log
192
193 The -d option enables the debug printing.  The argument for the -d option
194 is a string that is used to match the output debug.  The example "*" will
195 match for everything, and all debugs will be printed.  If you want to
196 limit the debugs you want to printout you can give for example a string
197 like "*server*,*rng*" to match all functions, and filenames that has
198 "server" or "rng" string in them.  Others will not be printed out.  You   
199 can freely define regural expressions as debug string.
200
201
202 Makefiles and configuration files
203 =================================
204
205 Developers should never directly write a Makefile.  All Makefiles are 
206 always automatically generated by autodist and later by ./configure 
207 scripts.  Instead, developers must write Makefile.ad files or Makefile.am 
208 files.  If the Makefile needs to include any distdefs (SILC_DIST_XXX), 
209 then Makefile.ad (.ad stands for autodist) must be written.  If the 
210 Makefile is generic (common to all distributions) then Makefile.am may be 
211 written.  Note that distdefs MUST NOT be used in Makefile.am files, as the 
212 autodist will modify them.  See the source tree for examples.  If you 
213 change Makefile.ad files, the autodist must be rerun.
214
215 The autodist also creates the configure.ac script from which the autoconf 
216 then creates the ./configure script.  All changes to configure must 
217 always be done into the configure.ad scripts.  All changes made to 
218 configure.ac will be lost.  The autodist distdefs may also be used in 
219 configure.ad files.  It is also possible to write more than one 
220 configure.ad in the source tree.  All configure.ad fragments will be 
221 collected from the source tree by autodist and combined into one 
222 configure.ac scripts.  After making changes to configure.ad files the 
223 autodist must be rerun.
224
225 The distdefs are defined in the corresponding distributions.  All 
226 distributions live in distdir/ directory.  The distdefs can be used in any 
227 file in the source tree, but mainly they are used in Makefile.ad, 
228 configure.ad and source and headers files.  See autodist documentation for 
229 more information how to use distdefs.