X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=README.CVS;h=0dd847d32c8f06da21d1601c369e2afe950bbc1b;hp=486a221e80f313a15990d8f3e17c17a9e476d44c;hb=8fc3402eeef449d1a0b7dfa10a2f316a181d8a27;hpb=01f3ed70ac686777ebfb992e062d65f2322d8998 diff --git a/README.CVS b/README.CVS index 486a221e..0dd847d3 100644 --- a/README.CVS +++ b/README.CVS @@ -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. @@ -119,39 +123,65 @@ Following directories currently exist in SILC source tree. lib/silcutil/ The SILC Utility library. Provides various utility functions - for the appliations. + for the applications. + + lib/silcutil/unix/ + + The SILC Utility library. Provides various Unix specific utility + functions for the applications. + + lib/silcutil/win32/ + + The SILC Utility library. Provides various WIN32 specific utility + functions for the applications. public_html/ Includes the official SILC web pages and everything that relates to them. This directory never appears on public distribution. - silc/ + apps/silc/ - Includes SILC client. There can be some extra files that will - never appear in public distribution, such as, configuration files. + 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. + + apps/silcer/ - silcd/ + Includes an example implementation of GUI (Gnome) base SILC + client. Please read silcer/README for more information. + + apps/silcd/ Includes SILC server. There can be some extra files that will never appear in public distribution, such as, configuration files. + win32/ + + Includes win32 Toolkit specific files. It includes MSVC++ + Workspace files. The win32/tests includes example code for + use of SILC Toolkit and SILC Client Library on Win32 GUI + application. + 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/ + +To prepare the CVS source tree for configuration and compilation, give: - ./prepare + 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, @@ -161,37 +191,82 @@ 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 -d -f configfile 2>log - ./silcd -d -f configfile 2>log + ./silc -d "*" -f configfile 2>log + ./silcd -d "*" -f configfile 2>log -Do not give the -d options if you do not want to dump the debugging. +The -d option enables the debug printing. The argument for the -d option +is a string that is used to match the output debug. The example "*" will +match for everything, and all debugs will be printed. If you want to +limit the debugs you want to printout you can give for example a string +like "*server*,*rng*" to match all functions, and filenames that has +"server" or "rng" string in them. Others will not be printed out. You +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.