Added ernno setting.
[silc.git] / README.CVS
index e7568ead1ca31985c33708f802e9e21d0c4fbb70..0dd847d32c8f06da21d1601c369e2afe950bbc1b 100644 (file)
@@ -59,6 +59,10 @@ distribution.
 
 Following directories currently exist in SILC source tree.
 
+  apps/
+
+       All applications.
+
   doc/
 
         Includes all the SILC documentation.  Some of the documentation
@@ -69,7 +73,7 @@ Following directories currently exist in SILC source tree.
 
         Includes SILC include files.
 
-  irssi/
+  apps/irssi/
 
        Includes the Irssi SILC Client.
 
@@ -136,19 +140,19 @@ Following directories currently exist in SILC source tree.
         Includes the official SILC web pages and everything that relates
         to them.  This directory never appears on public distribution.
 
-  silc/
+  apps/silc/
 
        Includes an example implementation of ncurses based SILC client.
        It won't compile with current Toolkit since it is not being 
        updated.  It is still good example for Toolkit programmer to 
        figure out how to use SILC Toolkit.
 
-  silcer/
+  apps/silcer/
 
        Includes an example implementation of GUI (Gnome) base SILC
        client.  Please read silcer/README for more information.
 
-  silcd/
+  apps/silcd/
 
         Includes SILC server.  There can be some extra files that will
         never appear in public distribution, such as, configuration files.
@@ -164,18 +168,20 @@ Following directories currently exist in SILC source tree.
 Howto Compile SILC Source Tree
 ==============================
 
-After checkout from CVS the SILC source tree must be prepared for 
-configuration and compilation.  To compile the source tree, give,
+To be able to prepare the CVS tree for configuration and compilation
+Autodist must be installed into the system.  You can download the latest
+version of Autodist from: 
+
+       http://silcnet.org/software/download/autodist/
 
-       ./prepare
+To prepare the CVS source tree for configuration and compilation, give:
+
+       autodist
        ./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 (however,
-making changes to Makefile.am's does not require running ./prepare).
+The autodist must be run every time you make some changes to configuration 
+scripts.
 
 As a developer you should read the ./configure script's help by
 giving ./configure --help and study all of its different options.  Also,
@@ -197,31 +203,70 @@ like "*server*,*rng*" to match all functions, and filenames that has
 can freely define regural expressions as debug string.
 
 
-Howto Clean SILC Source Tree
+Makefiles and configuration files
+=================================
+
+Developers should never directly write a Makefile.  All Makefiles are 
+always automatically generated by autodist and later by ./configure 
+scripts.  Instead, developers must write Makefile.ad files or Makefile.am 
+files.  If the Makefile needs to include any distdefs (SILC_DIST_XXX), 
+then Makefile.ad (.ad stands for autodist) must be written.  If the 
+Makefile is generic (common to all distributions) then Makefile.am may be 
+written.  Note that distdefs MUST NOT be used in Makefile.am files, as the 
+autodist will modify them.  See the source tree for examples.  If you 
+change Makefile.ad files, the autodist must be rerun.
+
+The autodist also creates the configure.ac script from which the autoconf 
+then creates the ./configure script.  All changes to configure must 
+always be done into the configure.ad scripts.  All changes made to 
+configure.ac will be lost.  The autodist distdefs may also be used in 
+configure.ad files.  It is also possible to write more than one 
+configure.ad in the source tree.  All configure.ad fragments will be 
+collected from the source tree by autodist and combined into one 
+configure.ac scripts.  After making changes to configure.ad files the 
+autodist must be rerun.
+
+The distdefs are defined in the corresponding distributions.  All 
+distributions live in distdir/ directory.  The distdefs can be used in any 
+file in the source tree, but mainly they are used in Makefile.ad, 
+configure.ad and source and headers files.  See autodist documentation for 
+more information how to use distdefs.
+
+
+Merging Between CVS Branches
 ============================
 
-To entirely clear the source tree to the state after it was checked out
-from CVS, give,
+Usually development moves from trunk to a specific branch when we are 
+nearing releasing the software.  After release the trunk will continue new 
+development and the branch will continue maintenance of the latest 
+version.  At some point the branch needs to be merged back to trunk to
+bring all relevant fixes back to trunk.  The merge is to be done as 
+follows:
 
-       ./prepare-clean
+  cvs -z3 co -j branch_to_merge silc
+  cd silc
+  ... check trunk status ...
+  cvs -z3 commit
 
-This calls `make distclean' plus removes automatically generated files
-by hand.  It also removes *.log files. However, it will not remove
-any other files you might have created.
+The first command will merge the branch_to_merge to the trunk.  After 
+merging the state of the trunk should be checked for any possible 
+conflicts and fix if any exist.  The trunk then must be committed.
 
+After merge has been done the branch must be tagged:
 
-Makefiles and configuration files
-=================================
+  cvs -z3 co -r branch_to_merge silc
+  cd silc
+  cvs -z3 tag branch_merged_20070701
+
+This tag can be used later when merging more changes from the same branch 
+to the trunk:
+
+  cvs -z3 co -j branch_merged_20070701 -j branch_to_merge silc
+  cd silc
+  ... check trunk status ...
+  cvs -z3 commit
 
-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 are 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.
-`configure.in' is the file that developers must edit to change ./configure
-script.  After changing one must run  ./prepare.
+The tag is relevant so that the earlier changes would not be merged twice.  
+The tag assures that only changes made after the last merge will be merged 
+to trunk.  After this merge has been done the branch must be tagged again 
+in case more changes are merged again later.