REQUIREMENTS
============

To build saml(3), you need a Un*x system, and gcc 2.5.0 or more. The
library takes advantage of many gcc extensions: arrays of length zero,
conditional expressions without middle operand, automatic arrays of
variable length, inline functions, 64-bit integers, and assembler. So
you really need gcc, not any ISO C compiler.

The Makefiles require GNU make. Either get GNU make, or fix the
makefiles yourself.

The code has not been tested on 64-bit machines.

Some machines have a C library with is incompatible with ISO/POSIX. For
instance, SunOS doesn't have strtol/strtoul nor memmove, and
realloc(0,size) doesn't work. On these machines you'll have to replace
the missing or broken functions. You'll also need getopt_long() which
exists only in glibc.  And you may want to install Doug Lea's malloc
replacement. To include all this in libsaml.a, copy the appropriate files
of lib/support into lib (or use symbolic links) and edit lib/Makefile.

Many scripts require perl(1); factorint and induce requires gdbm(3).
Here again, you really need gdbm, not dbm/ndbm nor Berkeley db. Induce
also requires a not-too-ancient version of the m4(1) preprocessor. On
SunOS you should use /usr/5bin/m4 -- see the comments in
induce/Makefile.

It is very desirable to compile samuel(1) with readline(3) support,
unless you're a masochist.  Either get the "official" GNU readline
library, preferably as a shared library since it's very very big, or use
the little editline(3) clone written by Rich Salz and Simmule Turner;
I've put it in lib/editline.shar. It doesn't have all the bells and
whistles of the GNU version (most importantly, it doesn't handle line
wrapping) but it's ten times as small. See the comments in
samuel/Makefile.

COMPILATION
===========

The main Makefile shouldn't require changes. Examine, and modify where
appropriate, {lib,samuel,induce,factorint}/Makefile, and also
make.common in the root directory. When everything looks fine, type
"make" in the root directory. It should create the library (libsaml.a or
.so), and the utilities: samuel, factorint, induce.

INSTALLATION
============

You put the files where you want, but remember, it's experimental
software. Essentially you need to put samuel, factorint, induce,
colorize, rgind and all the fn_* scripts somewhere in your path.  Put
the manpages (samuel.1, factorint.1, induce.1) and saml-doc.texi in
accessible places for easy reference, or print them.

Then test the software. If it doesn't behave like the docs say it should,
then it's a bug. Otherwise, it's a feature.

Have fun,
Thierry
