Please send bug reports to bug-guile@gnu.org.
-See the LICENSE file for the specific terms that apply to Guile.
+See the LICENSE file for the specific terms that apply to Guile. Note
+that for any copyright year range specified as YYYY-ZZZZ in this
+package, the range specifies every single year in that closed interval.
Additional INSTALL instructions ===========================================
- libltdl
- libunistring
- libgc
-It will also use the libreadline library if it is available. For each
-of these there is a corresponding --with-XXX-prefix option that you
-can use when invoking ./configure, if you have these libraries
-installed in a location other than the standard places (/usr and
-/usr/local).
+- libffi
+It will also use the libreadline library if it is available.
+
+There is a corresponding `--with-XXX-prefix' option for each of these
+libraries (except for libgc and libffi which use `pkg-config', see
+below) that you can use when invoking ./configure, if you have these
+libraries installed in a location other than the standard places (/usr
+and /usr/local).
These options are provided by the Gnulib `havelib' module, and details
of how they work are documented in `Searching for Libraries' in the
built executables and libraries to an installation location other than
the one that was specified at build time.
-Another possible approach is to set CPPFLAGS and LDFLAGS before
-running configure, so that they include -I options for all the
+Another possible approach is to set CPPFLAGS and LDFLAGS on the
+configure command-line, so that they include -I options for all the
non-standard places where you have installed header files and -L
options for all the non-standard places where you have installed
libraries. This will allow configure and make to find those headers
-and libraries during the build. The locations found will not be
-hardcoded into the build executables and libraries, so with this
-approach you will probably also need to set LD_LIBRARY_PATH
-correspondingly, to allow Guile to find the necessary libraries again
-at runtime.
+and libraries during the build. E.g.:
+
+ ../configure [...] CPPFLAGS='-I/my/include' LDFLAGS='-L/my/lib'
+
+The locations found will not be hardcoded into the build executables and
+libraries, so with this approach you will probably also need to set
+LD_LIBRARY_PATH correspondingly, to allow Guile to find the necessary
+libraries again at runtime.
Required External Packages ================================================
conservative garbage collector used by Guile. It is available
from http://www.hpl.hp.com/personal/Hans_Boehm/gc/ .
+ - libffi
+
+ libffi provides a "foreign function interface", used by the
+ `(system foreign)' module. It is available from
+ http://sourceware.org/libffi/ .
+
+ - pkg-config
+
+ Guile's ./configure script uses pkg-config to discover the correct
+ compile and link options for libgc and libffi. If you don't have
+ pkg-config installed, or you have a version of libgc that doesn't
+ provide a .pc file, you can work around this by setting some
+ variables as part of the configure command-line:
+
+ - PKG_CONFIG=true
+
+ - BDW_GC_CFLAGS=<compile flags for picking up libgc headers>
+
+ - BDW_GC_LIBS=<linker flags for picking up the libgc library>
+
+ Note that because you're bypassing all pkg-config checks, you will
+ also have to specify libffi flags as well:
+
+ - LIBFFI_CFLAGS=<compile flags for picking up libffi headers>
+
+ - LIBFFI_LIBS=<linker flags for picking up the libffi library>
+
Special Instructions For Some Systems =====================================
implementation and helps to keep Guile reasonably clean of historic
baggage.
- Deprecated features are considered harmful; using them is likely a
- bug. See below for the related notion of `discouraged' features,
- which are OK but have fallen out of favor.
-
See the file NEWS for a list of features that are currently
deprecated. Each entry will also tell you what you should replace
your code with.
'warn-deprecated) to enable and disable the detailed messaged at run
time.
---disable-discouraged
-
- In addition to deprecated features, Guile can also contain things
- that are merely `discouraged'. It is OK to continue to use these
- features in old code, but new code should avoid them since there are
- better alternatives.
-
- There is nothing wrong with a discouraged feature per se, but they
- might have strange names, or be non-standard, for example. Avoiding
- them will make your code better.
+ Additionally, if your toolchain is new enough, you will receive
+ warnings at link time if you have a Guile extension that uses
+ deprecated functions provided by Guile.
--disable-shared --- Do not build shared libraries.
--disable-static --- Do not build static libraries.
Guile Documentation ==================================================
-If you've never used Scheme before, then the Guile Tutorial
-(guile-tut.info) is a good starting point. The Guile Reference Manual
-(guile.info) is the primary documentation for Guile. A copy of the
-R5RS Scheme specification is included too (r5rs.info).
+The Guile Reference Manual (guile.info) is the primary documentation for
+Guile. A copy of the R5RS Scheme specification is included too
+(r5rs.info).
Info format versions of this documentation are installed as part of
the normal build process. The texinfo sources are under the doc