We support GNU-style builds based on autoconf, automake and libtool.
This is based almost entirely on Tom Tromey's work with gcj.
Type the following to regenerate configure (if older than configure.ac):
./autogen.sh
Type the following to build, test and install the libraries:
./configure && make && make check && 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 compute a good set of default bdwgc parameters for the platform (e.g. threads support); it provides an easier way to configure some of the other parameters.
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 and understand (though they are largely standard); there might be some redundant stuff.
2. It probably does not work on all UNIX-like platforms yet; it probably will never work on some other.
3. The scripts might be not yet complete; some of the standard GNU targets might not work well yet. (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.
Note that the distribution comes without Makefile which is generated by
configure. The distribution also contains Makefile.direct which is not
always equivalent to the generated one.
Important options to configure:
* --prefix=PREFIX: install architecture-independent files in PREFIX
(/usr/local path by default on UNIX-like platforms).
* --exec-prefix=EPREFIX: install architecture-dependent files in EPREFIX
(same as prefix by default).
* --enable-threads=TYPE: choose threading package.
* --disable-parallel-mark: do not parallelize marking and free list
construction.
* --enable-gc-debug: include full support for pointer back-tracing, etc.
On UNIX-like platforms, 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/lib and /usr/local/bin, respectively, which would
typically require the make install to be run as root.
It is not recommended to turn off parallel marking for multiprocessors unless some issues exist with the feature on the target platform.