This file is for those who wants to hack the cutting-edge
Gauche sources from the git repository.  If you just want to
compile from the distribution, you don't need to read any further.


[TOOLS REQUIRED FOR BUILDING]

On Unix platforms
-----------------

In order to build Gauche from the svn sources, instead of from
the distribution, you need to have autoconf 2.54 or higher.
The author using autoconf 2.57.

You also need to have the *latest* release of Gauche installed
on your machine, for it is required to generate some C files.

The svn source tree doesn't include "configure" scripts.
You can use the DIST script like the following to generate them.

  % ./DIST gen

Note for seasoned libtool/automake users: the svn source tree
includes files that are usually generated automatically by
autotools, such as aclocal.m4, ltmain.sh, src/gauche/config.h.in,
etc.  Be careful not to clobber these files.  First, if your
autotools version doesn't match mine, it tends to break.
Second, those files are likely to be edited after generated,
in order to fix some build problem on certain platform.


On Windows/VisualC
------------------

Gauche build process largely relies on the code generation
during building, and it is lots of pain to adapt it for VC.
So we chose a hybrid approach; the source tree needs to be
preprocessed on the Unix platform (or Cygwin) with pre-installed
Gauche so that the machine-generated files are already there
when VC tries to compile.
To preprocess the source tree, run 'DIST' command as the following:

  % ./DIST winvc

Once preparation is done, look for the VC solution file under
winnt/ subdirectory.  



[DEPENDENCIES]

Quite a few files are generated by Gauche itself if you build
Gauche from scratch.  Consequently, there are qute a few nasty
dependency issues.  If you modify files listed below, be careful
not to introduce undesirable dependencies.

- The compiler (compile.scm) shouldn't depend on anything that
  are not compiled into the libgauche core.

- gencomp, genstub, geninsn shouldn't depend on the extension
  modules except the 'pre-loaded' ones in HOSTGOSH.  

- An extension compiled by gencomp shouldn't depend on other
  extension compiled by gencomp.  This is because gencomp is
  run by HOSTGOSH and it may not be able to load the other
  extension compiled for the target gosh.

- ext/xlink shouldn't depend on anything that requires loading
  extension modules, since it is called before all the extension
  modules are generated.

