-*- 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@martigny.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 . Check out the other platforms for ideas. errno.scm: Scheme defines for C header values found in . fdflags.scm: Scheme defines for C header values found in . netconst.scm: Scheme defines for C header values found in socket and network includes. signals.scm: Scheme defines for C header values found in . waitcodes.scm: Scheme defines for C header values and macros found in . 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