This file contains the instructions for building scm4e 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 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 , and is maintained by me. Please direct any problems you have with either scm itself or this configuration software to . 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 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 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 , 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.