This file contains the instructions for building scm4c under Unix
systems.  Scm conforms to Revised^4 Report on the Algorithmic Language
Scheme and the IEEE P1178 specification.  Scm runs under VMS, MS-DOS,
OS2, MacOS, Amiga, Atari-ST, NOS/VE, Unix and similar systems.
 
The author of scm can be reached at jaffer@ai.mit.edu or
Aubrey Jaffer, 84 Pleasant St., Wakefield MA 01880.

The Unix installation support included in this scmconfig distribution
has been written by myself, Bryan O'Sullivan <bos@scrg.cs.tcd.ie>, and
is maintained by me.  Please direct any problems you have with either
scm itself or this configuration software to <bug-scm@scrg.cs.tcd.ie>.

NOTE: Before you get started, make sure that you have unpacked this
      scmconfig distribution into the whatever directory you have
      unpacked the same version of scm.

Several chunks of this file have been lifted more or less verbatim
from the standard INSTALL file which comes with most GNU utilities
these days.

			       MANIFEST

  `README.unix' is this file.  It contains a MANIFEST, INSTALLATION
	INSTRUCTIONS, TROUBLESHOOTING, and various other information.
  `COPYING' details the LACK OF WARRANTY for scmconfig and scm and the
	conditions for distributing scm and scmconfig.
  `acconfig-1.5.h' is a temporary fix for a bug in version 1.5 of GNU
	autoconf.  This file should not concern you unless you are
	familiar with autoconf (you don't need to be).
  `configure' is an executable shell script which generates
	`scmconfig.h' and `Makefile'.
  `configure.in' is a template file used by with autoconf (autoconf is
	not needed to build scm), which produces the `configure'
	script.
  `scmconfig.h.in' is an automatically-generated template file used by
	configure, which produces `scmconfig.h'.
  `Makefile.in' is a template file used by configure, which produces
	`Makefile'.

		      INSTALLATION INSTRUCTIONS

To compile this package:

1.  In the directory that this file is in, type `./configure'.  If
    you're using `csh' on an old version of System V, you might need
    to type `sh configure' instead to prevent `csh' from trying to
    execute `configure' itself.

    You may wish to edit the generated `Makefile' file in order to
    customise scm to your own preferences.  The comments in there
    should be adequate to let you decide what you want to do.
    `Makefile' has a reasonable set of defaults for most Unix systems,
    so you may not have to edit it at all.

[You can skip the rest of this section (down to point 2 below) the
 first time around.]

    The `configure' shell script attempts to guess correct values for
    various system-dependent variables used during compilation, and
    creates the Makefile.

    Running `configure' takes a minute or two.  While it is running,
    it prints some messages that tell what it is doing.  If you don't
    want to see the messages, run `configure' with its standard output
    redirected to `/dev/null'; for example, `./configure >/dev/null'.

    To compile the package in a different directory from the one
    containing the source code, you must use a version of `make' that
    supports the VPATH variable, such as GNU `make'.  `cd' to the
    directory where you want the object files and executables to go
    and run `configure'.  `configure' automatically checks for the
    source code in the directory that `configure' is in and in `..'.
    If for some reason `configure' is not in the source code directory
    that you are configuring, then it will report that it can't find
    the source code.  In that case, run `configure' with the option
    `--srcdir=DIR', where DIR is the directory that contains the
    source code.

    See the section titled `INSTALL' below on building scm with
    different default search paths.  By default, when you run `make',
    scm looks in the source directory for `Init.scm'.  The binary
    which is built when you run `make install' looks in the correct
    places for files.

    Another `configure' option is useful mainly in `Makefile' rules
    for updating `config.status' and `Makefile'.  The `--no-create'
    option figures out the configuration for your system and records
    it in `config.status', without actually configuring the package
    (creating `Makefile's and perhaps a configuration header file).
    Later, you can run `./config.status' to actually configure the
    package.  You can also give `config.status' the `--recheck'
    option, which makes it re-run `configure' with the same arguments
    you used before.  This option is useful if you change `configure'.

    `configure' ignores any other arguments that you give it.

    If your system requires unusual options for compilation or linking
    that `configure' doesn't know about, you can give `configure'
    initial values for some variables by setting them in the
    environment.  In Bourne-compatible shells, you can do that on the
    command line like this:
	CC='gcc -traditional' DEFS=-D_POSIX_SOURCE ./configure

2.  Type `make' to compile the package.  If you want, you can override
    the `make' variables CFLAGS and LDFLAGS like this:
	make CFLAGS=-O2 LDFLAGS=-s

3.  Test scm.  This is done in the following way (user input comes
    after the `bash$' and `>' prompts):
	bash$ scm
	SCM version xxx, Copyright (C) 1990, 1991, 1992, 1993 Aubrey Jaffer.
	SCM comes with ABSOLUTELY NO WARRANTY; for details type `(terms)'.
	This is free software, and you are welcome to redistribute it
	under certain conditions; type `(terms)' for details.
	;loading ".../Transcen.scm"
	;done loading ".../Transcen.scm"
	;Evaluation took 230 mSec (0 in gc) 8661 cons work
	> (load "test.scm")
	...
	> (test-sc4)
	...
	> (test-cont)
	...
	> (test-inexact)

4.  You can remove the program binaries and object files from the
    source directory by typing `make clean'.  To also remove the
    Makefile(s), the header file containing system-dependent definitions
    (if the package uses one), and `config.status' (all the files that
    `configure' created), type `make distclean'.

[You can skip this next bit unless you are editing the `configure.in'
 file, which you should not do unless you are familiar with autoconf.]

    If you are using versions of autoconf before or including 1.5, you
    should rename `acconfig-1.5.h' to `acconfig.h' before running
    autoheader, since these distributions do not handle
    `TIME_WITH_SYS_TIME' correctly.

			       INSTALL

Type `make install' to install programs, data files, and
documentation.

By default, `make install' will install the package's files in
/usr/local/bin, /usr/local/lib, /usr/local/man, etc.  You can specify
an installation prefix other than /usr/local by giving `configure' the
option `--prefix=PATH'.  Alternately, you can do so by consistently
giving a value for the `prefix' variable when you run `make', e.g.,
	make prefix=/usr/gnu
	make prefix=/usr/gnu install

You can specify separate installation prefixes for
architecture-specific files and architecture-independent files.  If
you give `configure' the option `--exec-prefix=PATH' or set the `make'
variable `exec_prefix' to PATH, the package will use PATH as the
prefix for installing programs and libraries.  Data files and
documentation will still use the regular prefix.  Normally, all files
are installed using the regular prefix.

			   TROUBLESHOOTING

If you encounter any problems while building scm, please send
electronic mail to <bug-scm@scrg.cs.tcd.ie> with a description of the
problem, and any solution to it you may have found.  Some mention of
the version of Unix you are trying to build scm on, and the versions
of scm and scmconfig you are using, would be helpful in diagnosing the
problem.

If you encounter any problems with system include files not being
found, or attempts being made to read the wrong files, please contact
<bug-scm@scrg.cs.tcd.ie> with a description of the include files that
are not being handled correctly; the problem probably lies in the
autoconf support, and can usually be quickly fixed by manually editing
`scmconfig.h'.

If you find that scm does not link because it cannot find a
time-related function, please mail a description of the problem to
<bug-scm@scrg.cs.tcd.ie>, stating which function(s) can't be found.
In the mean time, editing the top of `time.c' should provide a fix for
the problem.
