*** empty log message ***
[bpt/guile.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 4fc2565..e0e0b33 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,16 +1,39 @@
+Brief Installation Instructions ===========================================
+
 To build Guile on unix, there are two basic steps:
 
-       1. Configure the package by running the configure script.
-       2. Build the package by running make.
+       1. Type "./configure", to configure the package for your system.
+       2. Type "make", to build the package.
 
 Generic instructions for configuring and compiling GNU distributions
-are included below.  Here is an illustration of commands that might be
-used to build Guile.  The voluminous output of the commands is not shown.
+are included below.
+
+
+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
 
-       % tar xvfz guile-snap.tar.gz    # unpack the sources
-       % cd guile-snap
-       % ./configure
-       % make
+NetBSD: Perry Metzger says, "Guile will build under NetBSD only using
+    gmake -- the native make will not work.  (gmake is in our package
+    system, so this will not be a problem when we packagize 1.3.)"
+
+What You Get ==============================================================
 
 The `configure' script examines your system, and adapts Guile to
 compile and run on it.
@@ -18,38 +41,91 @@ compile and run on it.
 The `make' command builds several things:
 - An executable file `guile/guile', which is an interactive shell for
   talking with the Guile Scheme interpreter.
-- An object library `guile/libguile.a', containing the Guile Scheme
+- An object library `libguile/.libs/libguile.a', containing the Guile Scheme
   interpreter, ready to be linked into your programs.
-- An object library `gtcltk-lib/libgtcltk.a', containing a simple
-  interface between Guile and Tcl/Tk.  This is only built if the
-  configure script notices that you have the appropriate version of
-  Tcl/Tk installed on your system already.  If it is installed, `make'
-  will automatically include Tcl/Tk and the interface in the guile
-  shell.  If the interface were documented, we'd include a pointer to
-  it here.
 
 To install Guile, type `make install'.  This installs the executable
 and libraries mentioned above, as well as Guile's header files and
 Scheme libraries.
 
+Make also builds shared libraries, on systems that support them.
+Because of the nature of shared libraries, before linking against
+them, you should probably install them; `make install' takes care of
+this.
+
+
+Flags Accepted by Configure ===============================================
+
+If you run the configure script with no arguments, it should examine
+your system and set things up appropriately.  However, there are a few
+switches specific to Guile you may find useful in some circumstances.
+
+--enable-maintainer-mode --- If you have automake, autoconf, and
+libtool installed on your system, this switch causes configure to
+generate Makefiles which know how to automatically regenerate
+configure scripts, makefiles, and headers, when they are out of date. 
+The README file says which versions of those tools you will need.
+
+--with-threads --- Build a Guile executable and library that supports
+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.
+
+Cooperative 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.
+
+--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 enabled by default; you only need to use this option (as
+`--enable-dynamic-linking=no') if you want to build a Guile which does
+not support dynamic linking.
+
+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
+always builds static libraries.
+
+
+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
+variable `GUILE_LOAD_PATH' to a colon-separated list of directories,
+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 INSTALL file
+would be `/home/jimb/guile-snap/INSTALL').  Then you might say, if
+you're using Bash or any other Bourne shell variant,
+
+  export GUILE_LOAD_PATH=/home/jimb/guile-snap
+
+or if you're using CSH or one of its variants:
 
-       export SCHEME_LOAD_PATH=/home/jimb/my-scheme:/home/jimb/guile-snap
+  setenv GUILE_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
+Building a Statically Linked Guile ========================================
 
-if you're using CSH or one of its variants.
+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
-      ==========================================================
 
+Generic Instructions for Building Auto-Configured Packages ================
 
 To compile this package: