* boot-9.scm (inherit-print-state): New experimental function.
[bpt/guile.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index a7b1d77..891522b 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -6,17 +6,29 @@ To build Guile on unix, there are two basic steps:
        2. Type "make", to build the package.
 
 Generic instructions for configuring and compiling GNU distributions
-are included below.  For Guile, you might type the commands below.
-Their voluminous output is not shown.
+are included below.
 
-       $ tar xvfz guile-970416.tar.gz          # unpack the sources
-       $ cd guile-970416
-       $ ./configure                           # adapt Guile to your system
-       $ make                                  # compile Guile
-        $ make install                         # install in the usual places
 
-(Note: under SunOS 4.1, you may need to say ./configure --disable-shared;
-Guile's shared library support for that systems seems to be confused.)
+Special Instructions For Some Systems =====================================
+
+We would like Guile to build on all systems using the simple
+instructions above, but it seems that a few systems still need special
+treatment.  If you can send us fixes for these problems, we'd be
+grateful.
+
+SunOS 4.1: Guile's shared library support seems to be confused, but
+    hey; shared libraries are confusing.  You may need to configure
+    Guile with a command like:
+       ./configure --disable-shared
+    For more information on `--disable-shared', see below, "Flags
+    Accepted by Configure".
+
+HP/UX: GCC 2.7.2 (and maybe other versions) have trouble creating
+    shared libraries if they depend on any non-shared libraries.  GCC
+    seems to have other problems as well.  To work around this, we
+    suggest you configure Guile to use the system's C compiler:
+       CC=cc ./configure
+
 
 What You Get ==============================================================
 
@@ -56,12 +68,22 @@ cooperative threading.  If you use this switch, Guile will also build
 and install the QuickThreads non-preemptive threading library,
 libqt.a, which you will need to link into your programs after
 libguile.a.  That is, you should pass the switches -lguile -qt to your
-linker.  Coop threads are not yet thoroughly tested; once they are,
-they will be enabled by default.
+linker.
 
---enable-dynamic-linking --- Build a Guile executable and library that
-supports dynamic linking, on systems that support it.  This feature is
-not yet thoroughly tested; once it is, it will be enabled by default.
+Coop threads are not yet thoroughly tested; once they are, they will
+be enabled by default.  The interaction with blocking I/O is pretty ad
+hoc at the moment.  In our experience, bugs in the thread support do
+not affect you if you don't actually use threads.
+
+At the moment, threads are known not to work with the NetBSD 1.2
+assembler.
+
+--enable-dynamic-linking --- Build a Guile executable and library
+providing Scheme functions which can load a shared library and
+initialize it, perhaps thereby adding new functions to Guile.  This
+feature is not yet thoroughly tested; once it is, it will be enabled
+by default.  This option has no effect on systems that do not support
+shared libraries.
 
 --disable-shared --- Do not build shared libraries.  Normally, Guile
 will build shared libraries if your system supports them.  Guile
@@ -72,18 +94,41 @@ Using Guile Without Installing It =========================================
 
 If you want to run Guile without installing it, set the environment
 variable `SCHEME_LOAD_PATH' to a colon-separated list of directories,
-including the directory containing this INSTALL file.  For example, if
-you unpacked Guile so that the full filename of this file is
-`/home/jimb/guile-snap/INSTALL', then you might say
+including the directory containing this INSTALL file.  If you used a
+separate build directory, you'll need to include the build directory
+in the path as well.
+
+For example, suppose the Guile distribution unpacked into a directory
+called `/home/jimb/guile-snap' (so the full name of this file would be
+`/home/jimb/guile-snap/INSTALL').  Then you might say:
 
-       export SCHEME_LOAD_PATH=/home/jimb/my-scheme:/home/jimb/guile-snap
+  export SCHEME_LOAD_PATH=/home/jimb/guile-snap
 
 if you're using Bash or any other Bourne shell variant, or
 
-       setenv SCHEME_LOAD_PATH /home/jimb/my-scheme:/home/jimb/guile-snap
+  setenv SCHEME_LOAD_PATH /home/jimb/guile-snap
 
 if you're using CSH or one of its variants.
 
+If you built Guile in a separate directory from the source tree, then
+you'll need to include your build directory in the SCHEME_LOAD_PATH as
+well.  For example, if you built in a subdirectory of the source tree
+called `pentium', you might say:
+
+  export SCHEME_LOAD_PATH=/home/jimb/guile-snap:/home/jimb/guile-snap/pentium
+
+
+Building a Statically Linked Guile ========================================
+
+Sometimes it's useful to build a statically-linked version of the
+Guile executable.  It's helpful in debugging, and for producing
+stand-alone executables for distribution to machines you don't
+control.
+
+To do this, set the LDFLAGS environment variable to `-static' before
+you configure, or before you run the `make' command to build the
+executable.
+
 
 Generic Instructions for Building Auto-Configured Packages ================