1 Compiling SILC from GIT Tree
2 ============================
4 These instructions are meant for developers wanting to compile SILC
5 directly from the GIT tree.
7 To prepare the source tree for making official releases, read the
10 To be able to prepare the GIT tree for configuration and compilation
11 Autodist must be installed into the system. You can download the latest
12 version of Autodist from:
14 http://autodist.silc.fi
20 To prepare SILC Client distribution for compilation give the following
31 To prepare SILC Server distribution for compilation give the following
39 Preparing SILC Toolkit
40 ======================
42 To prepare SILC Toolkit distribution for compilation give the following
50 Preparing any distribution
51 ==========================
53 To compile so called INLINE version of the SILC sources give the following
60 The INLINE version is usually used when doing actual SILC development as
61 it makes all code available for compilation, testing and debugging, while
62 the other distributions limit the available code only to that used by the
66 Running, Debugging and Developing
67 =================================
69 The autodist must be run every time you make some changes to configuration
72 As a developer you should read the ./configure script's help by
73 giving ./configure --help and study all of its different options. Also,
74 you should configure the script with --enable-debug option as it
75 compiles SILC with -g (debugging) option and it enables the
76 SILC_LOG_DEBUG* scripts. Warning is due here: The debugging produced
77 by both cilent and server is very heavy, thus it is common to test
78 the programs as follows:
80 ./silc -d "*" -f configfile 2>log
81 ./silcd -d "*" -f configfile 2>log
83 The -d option enables the debug printing. The argument for the -d option
84 is a string that is used to match the output debug. The example "*" will
85 match for everything, and all debugs will be printed. If you want to
86 limit the debugs you want to printout you can give for example a string
87 like "*server*,*rng*" to match all functions, and filenames that has
88 "server" or "rng" string in them. Others will not be printed out. You
89 can freely define regural expressions as debug string.
92 Makefiles and configuration files
93 =================================
95 Developers should never directly write a Makefile. All Makefiles are
96 always automatically generated by autodist and later by ./configure
97 scripts. Instead, developers must write Makefile.ad files or Makefile.am
98 files. If the Makefile needs to include any distdefs (SILC_DIST_XXX),
99 then Makefile.ad (.ad stands for autodist) must be written. If the
100 Makefile is generic (common to all distributions) then Makefile.am may be
101 written. Note that distdefs MUST NOT be used in Makefile.am files, as the
102 autodist will modify them. See the source tree for examples. If you
103 change Makefile.ad files, the autodist must be rerun.
105 The autodist also creates the configure.ac script from which the autoconf
106 then creates the ./configure script. All changes to configure must
107 always be done into the configure.ad scripts. All changes made to
108 configure.ac will be lost. The autodist distdefs may also be used in
109 configure.ad files. It is also possible to write more than one
110 configure.ad in the source tree. All configure.ad fragments will be
111 collected from the source tree by autodist and combined into one
112 configure.ac scripts. After making changes to configure.ad files the
113 autodist must be rerun.
115 The distdefs are defined in the corresponding distributions. All
116 distributions live in distdir/ directory. The distdefs can be used in any
117 file in the source tree, but mainly they are used in Makefile.ad,
118 configure.ad and source and headers files. See autodist documentation for
119 more information how to use distdefs.
122 What SILC Source Tree Includes
123 ==============================
125 SILC Source tree includes a lot more stuff that appears in public
126 distribution. The source tree includes, for example, internal scripts,
127 configuration files, etc. These never appear on a public distribution.
129 Following directories currently exist in SILC source tree.
137 Includes all the SILC documentation. Some of the documentation
138 are generated when distribution is generated. The automatically
139 generated files must never be commited to CVS.
143 Includes SILC include files.
147 Includes the Irssi SILC Client.
151 Includes SILC libraries. There maybe libraries on the CVS that
152 does not appear on public distribution.
156 Contrib directory for routines that some of the platforms might
157 not have. In that case these routines are provided by the SILC.
161 The SILC Client library. Implementation of the SILC Client without
162 the user interface. The library provides an interface for user
167 The SILC Protocol Core library. Implementation of all the core
168 components of the SILC Protocol. This is used by all the SILC
173 The SILC Crypto library. Provides all cryptographic algorithms
174 used in the SILC. Provides also the Cryptographically strong
175 random number generator.
179 The SILC Math library. Provides the Math and MP routines for
180 SILC applications. The MP library is actually the GMP.
184 The SILC Modules library. Provides the dynamically loadable
189 The SILC Key Exchange (SKE) library. Implementation of the
190 SKE protocol. This is used by all SILC applications.
194 The SILC Utility library. Provides various utility functions
195 for the applications.
199 The SILC Utility library. Provides various Unix specific utility
200 functions for the applications.
204 The SILC Utility library. Provides various WIN32 specific utility
205 functions for the applications.
209 Includes the official SILC web pages and everything that relates
210 to them. This directory never appears on public distribution.
214 Includes an example implementation of ncurses based SILC client.
215 It won't compile with current Toolkit since it is not being
216 updated. It is still good example for Toolkit programmer to
217 figure out how to use SILC Toolkit.
221 Includes an example implementation of GUI (Gnome) base SILC
222 client. Please read silcer/README for more information.
226 Includes SILC server. There can be some extra files that will
227 never appear in public distribution, such as, configuration files.
231 Includes win32 Toolkit specific files. It includes MSVC++
232 Workspace files. The win32/tests includes example code for
233 use of SILC Toolkit and SILC Client Library on Win32 GUI