X-Git-Url: https://git.hcoop.net/bpt/guile.git/blobdiff_plain/cab6e6c0410f07b0f414215fec89842deb0a0792..1d82efbceb6123a4b9130c8d0e2b558f566a023a:/README diff --git a/README b/README index c4f24f88e..1e9c2f8cd 100644 --- a/README +++ b/README @@ -18,7 +18,9 @@ The next stable release will likely be version 2.0.0. 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 =========================================== @@ -34,11 +36,14 @@ Guile depends on the following external libraries. - 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 @@ -50,16 +55,19 @@ names (where that is supported), makes it impossible to later move 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 ================================================ @@ -88,6 +96,33 @@ Guile requires the following 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= + + - BDW_GC_LIBS= + + Note that because you're bypassing all pkg-config checks, you will + also have to specify libffi flags as well: + + - LIBFFI_CFLAGS= + + - LIBFFI_LIBS= + Special Instructions For Some Systems ===================================== @@ -121,10 +156,6 @@ switches specific to Guile you may find useful in some circumstances. 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. @@ -174,16 +205,9 @@ switches specific to Guile you may find useful in some circumstances. '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. @@ -304,10 +328,9 @@ Example: 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