-*- Mode: Indented-text; -*-

Here are some remarks to complement what's in the INSTALL file.  

Some Scheme48 info is included here. For the original look at
doc/install.text.s48-0.36.

-----

When running "make", don't worry if the ".notify" target fails.  Its
only purpose is to send an email message so that we can get a rough
idea of how much the Scheme Shell is being used and by whom.  We
will not to use your name or email address for any commercial
purpose.  It does help us justify our activities to our superiors
if we can quantify useage. If you don't want us to know, just do 
"make -t .notify" first.
     
-----

What to do when your system isn't supported

First of all: DON'T PANIC. It's easy to get scsh to work on a new
system. Besides, you'll be a hero to the masses waiting for the Scheme
Shell on your platform. There is a sample "generic" system in
scsh/generic which you can copy as a base to modify. The modifications
mainly involve pulling some constants in from C header files and hacking
a few lines of C based on your standard I/O internals. I know, its C and
all, together we can survive. If you need some hand holding, feel free
to write to the scsh mailing list at scsh@zurich.ai.mit.edu.

stdio_dep.c: 
This is the one C file you have to actually deal with. The code in here
defines two or three simple operations on stdio FILE*'s that are not
part of the stdio.h interface. The main things it needs to be able
to do is see if there is input ready, how much is ready, and to change
the file descriptor associated with a FILE*. Usually how to do this
is fairly obvious from <stdio.h>. Check out the other platforms for ideas.

errno.scm:
Scheme defines for C header values found in <errno.h>.

fdflags.scm:
Scheme defines for C header values found in <fcntl.h>.

netconst.scm:
Scheme defines for C header values found in socket and network includes.

signals.scm:
Scheme defines for C header values found in <sys/signal.h>.

waitcodes.scm:
Scheme defines for C header values and macros found in <sys/wait.h>.

packages.scm:
Scheme48 module definitions for the values in the above scheme files.

load-scsh.scm:
The script of commands and expressions used to build scsh. 

After you've hacked these files together, it'd be nice to also hack
config.scsh to support your new machine. Run config.guess to see what it
thinks your machine is. Then, send us the info, and we'll make sure it
gets in a future release. (That means you, Jonathan.)

-----

Customizing the installation

  1. If you don't believe in configure scripts, or don't have a
     /bin/sh that can handle the configure script, you can make
     sysdep.h and Makefile manually from sysdep.h.in and Makefile.in.
     The technique is fairly obvious.  For Makefile, just give
     reasonable values for all of the variables at the top that are
     defined as "foo = @foo@", e.g. srcdir=., CC=cc, LIBS=-lm,
     INSTALL=cp, etc.  For sysdep.h, read the comments.  If your OS
     is Posix compliant and you don't care whether char-ready? works,
     you can copy sysdep.h.in to sysdep.h unmodified and everything
     should work.

  2. If you definitely won't be installing scsh, you should set
     libdir to the distribution directory (e.g. "make libdir=`pwd`").
     This will make the ,open and ,load-package commands work for the
     library packages defined in more-packages.scm.

  3. If desired, customize the contents of the development environment
     heap image by editing the definitions of USUAL-COMMANDS and/or
     USUAL-FEATURES in more-packages.scm; see below.

  4. If you're using a DEC MIPS, and want to use the foreign function
     interface, specify LDFLAGS=-N (with e.g. "make LDFLAGS=-N").

     -Brian, Olin, and David
