As of GC6.0alpha8, we attempt to support GNU-style builds based on automake,
autoconf and libtool.  This is based almost entirely on Tom Tromey's work
with gcj.

To build and install libraries use

configure; make; make install

The advantages of this process are:

1) It should eventually do a better job of automatically determining the
right compiler to use, etc.  It probably already does in some cases.

2) It tries to automatically set a good set of default GC parameters for
the platform (e.g. thread support).  It provides an easier way to configure
some of the others.

3) It integrates better with other projects using a GNU-style build process.

4) It builds both dynamic and static libraries.

The known disadvantages are:

1) The build scripts are much more complex and harder to debug (though largely
standard).  I don't understand them all, and there's probably lots of redundant
stuff.

2) It probably doesn't work on all Un*x-like platforms yet.  It probably will
never work on the rest.

3) The scripts are not yet complete.  Some of the standard GNU targets don't
yet work.  (Corrections/additions are very welcome.)

The distribution should contain all files needed to run "configure" and "make",
as well as the sources needed to regenerate the derived files.  (If I missed
some, please let me know.)

Note that the distribution comes with a "Makefile" which will be overwritten
by "configure" with one that is not at all equiavelent to the original.  The
distribution contains a copy of the original "Makefile" in "Makefile.direct". 

Important options to configure:

  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --enable-threads=TYPE   choose threading package
  --enable-parallel-mark  parallelize marking and free list construction
  --enable-full-debug	include full support for pointer backtracing etc.

Unless --prefix is set (or --exec-prefix or one of the more obscure options),
make install will install libgc.a and libgc.so in /usr/local/bin, which
would typically require the "make install" to be run as root.

Most commonly --enable-threads=posix or will be needed.  --enable-parallel-mark
is recommended for multiprocessors if it is supported on the platform.


