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
+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
+
+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 ==============================================================
talking with the Guile Scheme interpreter.
- An object library `libguile/.libs/libguile.a', containing the Guile Scheme
interpreter, ready to be linked into your programs.
-- An object library `gtcltk-lib/.libs/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
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.
+
+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 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.
+--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
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:
+
+ setenv GUILE_LOAD_PATH /home/jimb/guile-snap
- export SCHEME_LOAD_PATH=/home/jimb/my-scheme:/home/jimb/guile-snap
-if you're using Bash or any other Bourne shell variant, or
+Building a Statically Linked Guile ========================================
- setenv SCHEME_LOAD_PATH /home/jimb/my-scheme:/home/jimb/guile-snap
+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.
-if you're using CSH or one of its variants.
+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 ================