$Id$

Sun-3 and Sun-4, SunOS 4.1

   o  Tested with /bin/cc, various gcc versions, and with the Sun
      SPARCompiler 2.0.1 (acc).

   o  For compiling Elk with gcc and the generational garbage collector,
      see the remark in the file BUGS.


Sun-4, SunOS 5.2 (Solaris 2.2)

   o  Tested with various gcc versions and with ANSI SPARCompiler 2.0.1.
      If you have gcc, however, you should use it rather than the Sun
      compiler.  gcc produces much faster code.

   o  The Motif extension has been tested with both vanilla OSF Motif 1.2
      as well as Sun's version of Motif (which usually lives in /usr/dt).
      The X11 extensions have been tested with OpenWindows in addition
      to X Consortium X11R6.

   o  Certain versions of gcc complain about syntax errors in code that
      uses sigset_t (from <signal.h>), although this should not happen
      unless -ansi is given.  A possible fix is to add add -D__STDC__=0
      to the cflags in the config file.


DECstation 5100, Ultrix 4.2

   o  Prototypes have been disabled in the config file, as cc has trouble
      with certain forms of prototype declarations (this looks like a bug).

   o  The LDFLAGS "-Wl,-D,800000" are required for dynamic loading to work.

   o  You have to create "-G 0" versions of all X libraries to be able to
      dynamically load the X11 extensions of Elk (the MIPS linker requires
      this).


DEC/Alpha, OSF/1

   o  This platform uses ELF and the dlopen()-style linker interface.


SGI IRIS Indy, Irix 5.3

   o  examples/unix/calc.scm doesn't work, because /usr/bin/dc uses
      buffered output if stdout is not a terminal.

   o  For Irix 5.2, -lSM and -lICE must be removed from the libx*
      definitions in config/site (the X11 version seems to be X11R5).


HP 9000/700, HP-UX 9.0 and HP-UX 10.0

   o  Dynamic loading is based on the shl_load() interface to the dynamic
      linker of HP-UX.  If you are writing your own extensions, compile
      them with the option +z and use $install_dir/lib/makedl to link them.
      The load-libraries are simply shl_loaded before the files passed to
      the "load" primitives.  Each load-library is only loaded once.

   o  wait3 has been set to `no' in the system file, because this function
      has a non-standard third argument in HP-UX 9.0.

   o  HP-UX 10 does have a stack-extending alloca() (in contrast to
      HP-UX 9.0), but it has a serious bug and therefore is not used
      by Elk (the function overwrites its argument if it is a register
      variable).

   o  The incremental garbage collector doesn't work (see the file BUGS).

   o  The Athena widgets are not included with HP-UX 9.0.


IBM RS/6000, AIX 3.2

   o  Dynamic loading does not work.  It is not clear whether the dynamic
      loading semantics of Elk can be implemented with the dynamic linker
      interface of AIX at all.


PowerPC, AIX 4.1 (xlc and gcc)

   o  No dynamic loading.

   o  The incremental garbage collector doesn't work (see the file BUGS).


NeXT workstation, MACH/NeXT-OS 3.3

   o  Dynamic loading is implemented by means of the rld_load() library
      function.  Due to what looks like a bug in rld_load(), it only
      works sometimes.  In particular, it is not possible to load the
      UNIX extension.

      The source of the problem seems to be that sometimes the string table
      of the newly loaded object file gets truncated when being mapped into
      memory by rld_load().  You can observe the problem by inserting a
      statement like "write(1, strtab, sym_cmd->strsize);" right after
      the line beginning with "strtab =" in src/stab-macho.c.

   o  Linking extensions statically with the interpreter doesn't work
      either; there are no symbols in the symbol table when it is read
      on startup of the executable.  This seems to be related to the
      bug described above.
      
      These two problems render Elk virtually unusable on the NeXT.


386/486-PC, Linux 1.2.8

   o  examples/unix/calc.scm doesn't work, because /usr/bin/dc uses
      buffered output if stdout is not a terminal.


386/486-PC, 32-bit gcc (DJGPP) and `go32' DOS extender

    o  Elk 3.0 has not been tested on this platform.

    o  As the typical DOS machine doesn't have a fully functional UNIX
       shell, sed, etc., you have to cross-localize the source tree on a
       UNIX machine (i.e. create all the localized Makefiles, create
       include/config.h, etc.).  To do so, just copy the DOS config file
       to config/system (or make a link), edit config/site, and call

          make localized.zip

       This cleans the source tree, performs the necessary localizations,
       and packages a minimal distribution into a zip file.  You can
       then FTP the zip file to the DOS machine and run `make' there.
       The zip file basically contains the interpreter sources, the Scheme
       files needed at runtime, the extensions in lib/misc, and the
       localized Makefiles and include files.


X Window System

   o  You need either X11R4, X11R5, X11R6, or (on Suns) OpenWindows 3.x to
      use the Elk/X11 extensions.  The current release of Elk has been
      tested with X11R6 and OpenWindows.

      If you are still running X11R4, edit the file lib/xaw/build and
      remove the lines referring to the Athena widgets that are new in
      X11R5 (panner, porthole, repeater, and tree).

      If you are running X11R5 or older, you may want to edit lib/xaw/build
      and add lines for the `clock' widget.  Also, remove -lSM and -lICE
      from the definitions in config/site.  examples/xaw/porthole.scm
      and examples/xaw/viewport.scm don't work with X11R6, as they are
      using the clock widget which doesn't exist any longer.


Motif Widgets

   o  You need at least Motif 1.1 to use the Elk/Motif extension.
      The current release of Elk has been tested with OSF/Motif 1.2
      and, under Solaris 2.4, with Sun Motif (/usr/dt).

      Make sure that X11 has been compiled with the symbol MotifBC set
      to YES in site.def.

