This document describes how to compile the SILC source tree after checkout from the CVS. This README.CVS file will appear only in the checkout source tree and not in any public distribution. Howto Checkout Source Tree ========================== Be sure to set the CVSROOT environment variable first or use -d option of CVS. I suggest setting CVSROOT environment variable. export CVSROOT=:pserver:anoncvs@silc.pspt.fi:/silc Checkout of SILC source tree, and to bemore specific, SILC trunk, give, cvs co silc or cvs -d :pserver:anoncvs@silc.pspt.fi:/silc co silc CVS will ask password. The password for anonymous (read access) CVS is CVS password: silccvs CVS currently does not have branches, thus this checkouts the trunk. What SILC Source Tree Includes ============================== SILC Source tree includes a lot more stuff that appears in public distribution. The source tree includes, for example, internal scripts, configuration files, SILC webpages etc. These never appear on a public distribution. Following directories currently exist in SILC source tree. doc/ Includes all the SILC documentation. Some of the documentation are generated when distribution is generated. The automatically generated files must never be commited to CVS. includes/ Includes SILC include files. lib/ Includes SILC libraries. There maybe libraries on the CVS that does not appear on public distribution. public_html/ Includes the official SILC web pages and everything that relates to them. This directory never appears on public distribution. silc/ Includes SILC client. There can be some extra files that will never appear in public distribution, such as, configuration files. silcd/ Includes SILC server. There can be some extra files that will never appear in public distribution, such as, configuration files. Howto Compile SILC Source Tree ============================== After checkout from CVS the SILC source tree must be prepared for configuration and compilation. To compile the source three, give, ./prepare ./configure --enable-debug make The ./prepare script is included in to the source tree and it never appears in public distribution. The script prepares the source tree by creating configuration scripts and Makefiles. The prepare must be run every time you make some changes to configuration scripts. As a developer you should read the ./configure scripts help by giving ./configure --help and study all of its different options. Also, you should configure the script with --enable-debug option as it compiles SILC with -g (debugging) option and it enables the SILC_LOG_DEBUG* scripts. Warning is due here: The debugging produced by both cilent and server is very heavy, thus it is common to test the programs as follows: ./silc -f 2>silc.log ./silcd -f 2>silcd.log Howto Clean SILC Source Tree ============================ To entirely clear the source tree to the state after it was checkedout from CVS, give, ./prepare-clean This calls `make distclean' plus removes automatically generated files by hand. It also removes *.log files. Makefiles and configuration files ================================= Developers should never directly write a Makefile. All Makefiles are always automatically generated by ./prepare and later by ./configure scripts. Instead, developers must write Makefile.am files. There are plenty of examples what they should look like. If you change Makefile.am during development you don't have to run ./prepare, just run normal make. Configuration files the files that ./prepare automatically generates and what will be included into public distribution. ./prepare creates for example the ./configure script that is not commited to the CVS and must not be commited. `configure.in' is the file that developers must edit to change ./configure script. After changing one must run ./prepare. Creating Distribution ===================== The version of the distribution is currently always set in the configure.in file. The actual distribution is created by simply giving, make dist Information About CVS Repository ================================ SILC CVS repository resides in silc.pspt.fi (193.166.51.47) in a 2 Gb SCSI harddrive. The repository is backuped every morning at 06:00 EEST. The entire repository is backuped and the backup is distributed to at least two independent machines and the backup is recorded into tapes, as well. There are always week's of backups in hand in case they are needed. Every week the "lastweek's" backups are removed and "this weeks" backups are saved. $Id$