Permalink
Browse files

Miscellaneous changes to improve flexibility of installation.

1) --enable-symlinks configure option (on by default)
2) --enable-multiple-versions configure option (off by default)
3) --enable-absolute-shared-libs configure option (on by default)
4) support for DESTDIR at "make install"
5) support for --bindir=BINDIR, --libdir=LIBDIR, ...
6) Gambit runtime option -:~~bin=BINDIR to override installation directory
7) ~~bin expands to BINDIR (or ~~/bin if none was specified)
8) make uninstall removes all the files that were installed (but not all the directories)
9) configure --help is much more accurate (the exception is that some of the directory specification options are not used, such as --pdfdir=...)
10) gsi -:s automatically loads ~~lib/syntax-case
  • Loading branch information...
feeley committed Dec 23, 2008
1 parent a648b60 commit 321d6cda27224fc217948cde0a7b1800b230952a
Showing with 2,205 additions and 851 deletions.
  1. +90 −39 INSTALL.txt
  2. +109 −59 bin/makefile.in
  3. +241 −60 configure
  4. +215 −50 configure.ac
  5. +1 −1 doc/checkdoc.scm
  6. +132 −102 doc/gambit-c.txi
  7. +87 −16 doc/makefile.in
  8. +1 −1 doc/square.scm
  9. +2 −2 examples/Xlib-simple/Xlib.scm
  10. +23 −11 examples/Xlib-simple/makefile.in
  11. +2 −2 examples/distr-comp/dc.scm
  12. +3 −3 examples/distr-comp/distr-comp.scm
  13. +23 −11 examples/distr-comp/makefile.in
  14. +21 −9 examples/makefile.in
  15. +23 −11 examples/misc/makefile.in
  16. +23 −11 examples/pi/makefile.in
  17. +2 −2 examples/pi/pi.scm
  18. +24 −12 examples/pthread/makefile.in
  19. +23 −11 examples/ring/makefile.in
  20. +2 −2 examples/ring/ring.scm
  21. +23 −11 examples/tcltk/makefile.in
  22. +3 −3 examples/tcltk/tcltk.scm
  23. +23 −11 examples/web-repl/makefile.in
  24. +2 −2 examples/web-repl/web-repl.scm
  25. +3 −3 examples/web-server/base64.scm
  26. +4 −4 examples/web-server/html.scm
  27. +2 −2 examples/web-server/http.scm
  28. +23 −11 examples/web-server/makefile.in
  29. +9 −9 examples/web-server/web-server.scm
  30. +3 −3 gsc/_gsc.scm
  31. +27 −12 gsc/_gsclib.scm
  32. +3 −3 gsc/fixnum.scm
  33. +96 −35 gsc/makefile.in
  34. +3 −3 gsi/_gsi.scm
  35. +2 −10 gsi/main.scm
  36. +96 −35 gsi/makefile.in
  37. +2 −1 include/gambit.h.in
  38. +55 −12 include/makefile.in
  39. +2 −2 include/stamp.h
  40. +27 −1 lib/_eval.scm
  41. +10 −10 lib/_gambit#.scm
  42. +6 −10 lib/_kernel.scm
  43. +30 −15 lib/_nonstd.scm
  44. +1 −1 lib/_repl.scm
  45. +3 −3 lib/digest.scm
  46. +2 −2 lib/gambit#.scm
  47. +21 −9 lib/guide/images/makefile.in
  48. +21 −9 lib/guide/makefile.in
  49. +104 −52 lib/main.c
  50. +85 −35 lib/makefile.in
  51. +171 −1 lib/os_files.c
  52. +6 −2 lib/os_files.h
  53. 0 {misc → lib}/psyntax69c.pp
  54. 0 {misc → lib}/psyntax69c.ss
  55. 0 {misc → lib}/psyntax73.pp
  56. 0 {misc → lib}/psyntax73.ss
  57. +2 −2 lib/r4rs#.scm
  58. +3 −3 lib/r5rs#.scm
  59. +3 −2 lib/setup.c
  60. 0 {misc → lib}/syntax-case-build
  61. 0 {misc → lib}/syntax-case-expand-file
  62. 0 {misc → lib}/syntax-case-postlude.scm
  63. +6 −6 {misc → lib}/syntax-case-prelude.scm
  64. +9 −9 {misc → lib}/syntax-case.scm
  65. +44 −14 makefile.in
  66. +57 −16 misc/makefile.in
  67. +2 −2 prebuilt/README
  68. +1 −1 prebuilt/macosx/build
  69. +2 −1 prebuilt/macosx/build-phase2.in
  70. +20 −8 prebuilt/macosx/makefile.in
  71. +17 −5 prebuilt/macosx/remote-shell
  72. +20 −8 prebuilt/makefile.in
  73. +1 −1 prebuilt/windows/build
  74. +2 −1 prebuilt/windows/build-phase2.in
  75. +20 −8 prebuilt/windows/makefile.in
  76. +17 −5 prebuilt/windows/remote-shell
  77. +30 −0 relpath
  78. +34 −22 tests/makefile.in
View
@@ -1,7 +1,7 @@
Installation instructions for Gambit-C
======================================
- [Time-stamp: <2007-08-21 10:58:51 feeley>]
+ [Time-stamp: <2008-12-23 09:06:13 feeley>]
This directory contains a release of the Gambit-C Scheme programming
@@ -19,15 +19,15 @@ On most Unix platforms the system can be easily built, tested and
installed using the following commands:
% ./configure
- % make
- % make check
- % make install
% make bootstrap
+ % make check
+ % sudo make install
The configure script, which was generated by the "autoconf" tool,
-accepts command line options that control various features. It is
-***highly*** recommended to use the --enable-single-host option to
-improve the execution speed and compactness of the executables:
+accepts many command line options that control various features.
+
+It is ***highly*** recommended to use the --enable-single-host option
+to improve the execution speed and compactness of the executables:
% ./configure --enable-single-host
@@ -39,12 +39,16 @@ the system as the source code can take advantage of some GCC
extensions. Notably the use of GCC's computed gotos reduces the
execution time by roughly 35%.
-When using the GCC compiler it is recommended to use the
+When using some versions of the GCC compiler it is possible to use the
--enable-gcc-opts option to further improve the execution speed and
compactness of the executables:
% ./configure --enable-single-host --enable-gcc-opts
+Note that this option might degrade the execution speed, so it is best
+to build the system both ways and see which works best for your
+version of GCC.
+
These options are not used by default because compilation is much
longer and requires more RAM. In fact some platforms may not have
enough resources to build the system this way. With
@@ -68,6 +72,11 @@ by the compiler evolve and vary in computational complexity. Since
the C files are so large, the compile time is very sensitive to the
computational complexity of the optimization algorithms.
+Finally, in order to support installing multiple versions of Gambit,
+it is recommended to use these options:
+
+ % ./configure --enable-single-host --enable-multiple-versions
+
2) Other options of the "configure" script
==========================================
@@ -78,29 +87,59 @@ obtained with:
% ./configure --help
Most options are the same as for other autoconf generated configure
-scripts. For example, you can select the installation directory with
-the option --prefix:
+scripts. For example, you can select the central installation
+directory with the option --prefix:
- % ./configure --prefix=/u/feeley/my-gambit
+ % ./configure --prefix=/Users/feeley/my-gambit
% make install
- % ~/my-gambit/current/bin/gsi
- Gambit v4.0.0
+ % ~/my-gambit/bin/gsi
+ Gambit v4.4.0
...
If the --prefix option is not used, the default is to install all
-files in /usr/local/Gambit-C and its subdirectories.
+files in /usr/local/Gambit-C and its subdirectories, namely "bin",
+"lib", "include", etc. The files that would normally go in these
+subdirectories can be redirected to other directories using one of
+the following configure options:
+
+ --bindir=DIR executables (gsi, gsc, ...)
+ --libdir=DIR libraries (libgambc.a, syntax-case.scm, ...)
+ --includedir=DIR C header files (gambit.h, ...)
+ --docdir=DIR documentation (gambit-c.pdf, gambit-c.html, ...)
+ --infodir=DIR info documentation (gambit-c.info, ...)
+ --datadir=DIR read-only architecture-independent data (gambit.el)
+
+Note that the install target of the makefiles supports the DESTDIR
+environment variable which allows staging an install to a specific
+directory. The command:
+
+ % make install DESTDIR=/Users/feeley/stage
+
+will install all the files in /Users/feeley/stage as though it was the
+root of the filesystem. Note that the use of DESTDIR is incompatible
+with the combination of --enable-shared and
+--enable-absolute-shared-libs options.
The configure options which are specific to the Gambit-C system are:
--enable-single-host compile each Scheme module as a single C function
- --enable-inline-jumps Generate inline code for jumps
--enable-gcc-opts use expensive GCC optimizations
- --enable-char-size=N define Scheme character size in bytes (N = 1, 2 or 4)
--enable-cplusplus compile using C++ compiler
- --enable-guide include the Gambit Universal IDE
--enable-shared build the Scheme runtime system as a shared library
--enable-debug build system so that it can be debugged
--enable-profile build system so that it can be profiled
+ --enable-feedback1 build system to accumulate trial run data
+ --enable-feedback2 build system using trial run feedback
+ --enable-inline-jumps generate inline code for jumps
+ --enable-char-size=N Scheme character size in bytes (N = 1, 2 or 4)
+ --enable-ansi-c link only with ANSI C libraries
+ --enable-symlinks use symbolic links for installed files not in the
+ central installation directory
+ --enable-multiple-versions
+ multiple installed versions are supported
+ --enable-absolute-shared-libs
+ shared libraries should be linked to using an
+ absolute path
The option --enable-cplusplus should be used when applications
developped with the Gambit-C compiler are to be linked with code or
@@ -109,27 +148,36 @@ source code with a C++ compiler instead of a C compiler (this is
possible because the code generated by the Gambit-C compiler conforms
both to C and C++).
-[NOTE: Due to some last-minute makefile problems, GUIDE is not supported
-in this release.]
-The option --enable-guide will include the Gambit Universal IDE in the
-Gambit-C runtime system. The option --enable-cplusplus must be used
-when the option --enable-guide is used. The Gambit Universal IDE
-requires the Qt GUI library version 3.3. To include GUIDE it is
-necessary to first build the system without including GUIDE (to have a
-working Gambit-C compiler) and then rebuild the system with GUIDE
-enabled. For instance:
-
- % ./configure --enable-cplusplus
- % make bootstrap
- % make clean
- % ./configure --enable-cplusplus --enable-guide
- % make
-
The option --enable-shared will build a shared library for the
Gambit-C runtime system. This is not supported on all platforms.
-The option --enable-debug and --enable-profile are useful for
-debugging the system.
+The option --enable-debug and --enable-profile, --enable-feedback1, and
+--enable-feedback2 are useful for debugging the system.
+
+The option --enable-symlinks is useful when the --bindir, --libdir,
+... options are used. The files will actually be stored in the
+central installation directory and symbolic links to those files will
+be stored in the directories specified to --bindir, --libdir, ...
+
+The option --enable-multiple-versions allows multiple versions of
+Gambit to be installed. When it is enabled the path of the central
+installation directory (specified with --prefix) is automatically
+extended with a subdirectory which is the version number, and a
+"current" symbolic link points to the version subdirectory. All
+symbolic links created as a result of the --enable-symlinks option
+will refer to the files indirectly through the "current" symbolic
+link. Switching to a different version of Gambit can be done by
+simply redirecting the "current" symbolic link to another version
+subdirectory.
+
+When --enable-shared is used, the option --enable-absolute-shared-libs
+will install executables (for gsi and gsc) which contain references to
+the absolute paths of the libraries. This is necessary when multiple
+versions of Gambit are installed so that each executable refers to the
+appropriate Gambit shared library. This is the default behavior.
+Note that this option is incompatible with the use of DESTDIR because
+the executables can only be linked after the Gambit shared libraries
+are installed in their final destination.
By default the configure script will use the GCC compiler to build the
system, if it is available. To override this choice or to use special
@@ -207,19 +255,22 @@ Here is a description of the most useful "make" targets:
% make dist Creates a compressed tar file of
the system.
+ % make dist-devel Creates a compressed tar file of
+ the system including all the source code
+ management files.
+
% make doc Builds the documentation.
- % make hg-setup For initial setup of source code
- management using Mercurial. This should
+ % make rc-setup For initial setup of source code
+ management using git. This should
only be performed by the Gambit maintainers.
% make prebuilt Builds installers for Mac OS X and Windows.
Note: this make target is very platform
specific and is intended for the Gambit
maintainers.
- % make release Builds source tarball and installers and
- uploads them to the Gambit web site.
+ % make release Builds source tarball and installers.
Note: this make target is very platform
specific and is intended for the Gambit
maintainers.
Oops, something went wrong.

0 comments on commit 321d6cd

Please sign in to comment.