1
Description of GCL (GNU Common Lisp) system.
5
The GCL system contains C and Lisp source files to build a Common Lisp
6
sytem. The original KCL system was written by Taiichi Yuasa and
7
Masami Hagiya in 1984. The AKCL system work was begun in 1987 by
8
William Schelter and continued through 1994. A number of people have
9
contributed ports and pieces. The file doc/contributors lists some of
10
these. In 1994 AKCL was released as GCL (GNU Common Lisp) under the
11
GNU public library license. Version akcl-1-624 was the last version
12
made under the old license and using the old file change mechanism.
13
This readme only applies to versions gcl.1.0 and later. The GNU
14
library license does allow redistribution of executables containing
15
GCL as well as proprietary code, but such redistribution must be
16
accompanied by sufficient material (eg .o files) to allow recipients
17
to rebuild an executable, after possibly modifying GCL. See the GNU
18
file COPYING.LIB-2.0 for a full description of your right to copy this
21
Releases of GCL after 2.0 contain a GCL connection with the windowing
22
tools TCL/TK. If 'configure' is able to find the relevant libraries on
23
your system, then a gcl-tk server will be compiled as well by the main
24
make. It is based on TK 8.0 and TCL 8.0 and available from
25
ftp.cs.berkeley.edu and many mirrors.
31
* There are source files on ftp.ma.utexas.edu:pub/gcl/gcl.x.x.tgz You
32
probably want the highest XX version number. For example gcl-1.0.tgz
33
would allow you to build the version 1.0 of GCL. In the following
34
this compressed tar file is simply referred to as gcl.tgz. If you
35
do not have gzip it is available in the directory
36
/anyonymous@prep.ai.mit.edu:/u2/emacs .
37
Hopefully sometime, GCL will also be available on prep.ai.mit.edu.
42
To make the whole system, if you have obtained gcl.tgz.
44
UNCOMPRESS and UNTAR the SOURCES:
45
--------------------------------
47
Change to a directory in which you wish to build gcl, eg ~/tmp.
48
Copy the file gcl.tgz to this directory.
50
% gzip -dc gcl.tgz | tar xvf -
52
This will create the subdirectory gcl-y.xxx with all the sources in it.
55
ADD MACHINE DEFINITIONS TO MAKEFILES:
56
------------------------------------
61
This will analyze your system, generate a file called makedefs, insert
62
it into the various makefiles and create a proper h/config.h header
65
Some command line options can be used with the configure script; try
66
./configure --help to find out about them.
68
Note that if you have tcl/tk (version 4.2 tk or 7.6 tcl or later),
69
then a file tclConfig.sh and tkConfig.sh should exist in some place
70
such as /usr/local/lib.
78
The make should continue without error. There may be occasional
79
warnings from the C compiler, but all files should compile successfully
82
At the end you should see a message at the end "Make of GCL xxx
83
completed", where xxx stands for the version number. Every successful
84
compilation generates an automatic notification email to
85
gcl@math.utexas.edu to help in determininig on which machines and
86
levels of the OS compilation has been successful. If you don't want to
87
assist in the maintenance in this way do
89
% ./configure --enable-notify=no
97
When it has finally finished you may invoke GCL by using
100
GCL (GNU Common Lisp) Version(2.3) Sun May 7 14:11:30 CDT 2000
101
Licensed under GNU Library General Public License
102
Contains Enhancements by W. Schelter
108
If you had TCL/TK, then you should be able to do
110
>(load "gcl-tk/demos/widget.lisp")
112
Note there are currently problems with the demos, since they were
113
based on an older version of tcl/tk.
114
(setq si::*tk-library* "/usr/lib/tk")
115
[where /usr/lib/tk/tk.tcl is]
121
To install under /usr/local (or under the directory specified
122
with the --prefix= option of the ./configure script)
126
The default installation puts a full executable in
128
/usr/local/lib/gcl-version/unixport/saved_gcl
130
and some documentation in
132
/usr/local/lib/gcl-x.x/info/
134
and some autoloading files in
136
/usr/local/lib/gcl-x.x/lsp
138
and a shell script in
140
/usr/local/lib/gcl-x.x/xbin/gcl
142
This script is also copied to
149
(and how you may be able to help) Volunteers should contact
150
William Schelter (wfs@math.utexas.edu)
152
a) Upgrading to comply with the forthcoming ANSI standard. Work
155
b) Need work on providing a high level window interface. One possible
156
way would be a good connection with TCL/TK. Another would be to go
157
in the direction of CLIM.
159
A new compiler has been written, which is closer to the ANSI standard
160
and provides some other benefits. It will be in a future release.
161
We will need people willing to beta test and isolate any bugs.
163
Additonal work planned or desired:
165
* Clean up distribution and installation. Make it easier to link in
166
C code such as Novak's window stuff. Faslink is not portable (since
167
many systems don't support ld -A).
169
* Introduce COMMON-LISP and COMMON-LISP-USER packages as per ANSI
170
standard, change the package functions to behave as in the ANSI
171
standard. Any other changes which people can identify which would
172
make life easier, and are compatible with ANSI.
174
* Introduce C level and Lisp level way of signalling errors of the
175
types specified by the ANSI standard. Make it so that when the CLOS
176
is present these become error objects.
178
* Fix the run-process stuff to properly deallocate processes and
179
have listen do the right thing, by using select, which is POSIX. Try
180
to make it compatible with the one in Allegro or Lucid.
182
Done * Turn ANSI documentation into the new Lisp's on-line documentation.
183
This will be useful for development and for users. No sense in basing
184
our work on the CLTL 2. Must go to the ANSI document itself.
186
* Make an appropriate Unix man page.
188
* Add my allocation files and other changes necessary to make
189
INTERRUPTS safe. This probably means adding in all the C files which
190
I have already written.
192
* Change function calls to all refer to C stack and pass return
193
values in a uniform way, the way the new compiler does it. This will
194
greatly improve funcalling, since right now there are generally two
195
types of functions which can be expected, and they expect their
196
arguments in different places.
198
* Change to the new compiler which does things better from the ANSI
199
point of view, and is smaller, and makes all function calls go via the
202
* Include CLOS support. Possibly take this from PCL or from
203
Attardi, who has written some.
205
Done * Include a windowing interface with TCL/TK which is capable of
206
producing TK (similar to Motif but public) style windows and
207
scrollable menus, etc. This implementation must be done in such a way
208
that it works in at least one additional Lisp, such as Allegro or
211
* Loop package: either make sloop satisfy the standard or include
212
another implementation.
214
* Changes to READ for ANSI, (including case sensitivity, etc.).
216
* Byte compiler based on first pass of the new compiler. Ideally
217
provides very small code and extremely rapid compiling for general
218
platform. Notes: I have put the interrupt and run-process stuff early
219
on since it is necessary for window development.
221
* Construct a Common Lisp test suite to help debug new releases.
226
If you use GNU emacs, a convenient method for viewing documentation
227
of Common Lisp functions (or functions in an extended system), is
228
provided by the doc/find-doc.el file. This will be installed when you
229
do make in the doc directory. Adding the following to your .emacs
230
file will allow you to use C-h d to find documentation.
232
(autoload 'find-doc "find-doc" nil t)
233
(global-set-key "d" 'find-doc)
234
(visit-doc-file "/usr/local/lib/gcl/doc/DOC")
236
See the file find-doc.el for more information. Otherwise you may use
237
the describe command inside Lisp. For example (describe 'print) will
238
print out information about print. It will access the gcl-si.info,
239
gcl-tk.info, and gcl.info if these exist. gcl.info (containing the
240
ansi proposed definitions) is on ftp.ma.utexas.edu:pub/gcl/gcl.info.tgz
243
TROUBLE SHOOTING (some common problems reported):
246
1) Did you extract the files with the original write dates--make
247
depends heavily on this?
249
2) Did you use -O on a compiler which puts out bad code? Any time you
250
change the settings or use a new c compiler this is a tricky point.
252
3) If you can't save an image, try doing so on the file server rather
255
4) Doing the make on a client with the main files on a server, has
256
sometimes caused random breakage. The large temp files used by the C
257
compiler seem to sometimes get transferred incorrectly. Solution: use
258
the server for the compile.
260
5) Did you make changes in the .defs or .h files, other than just
261
commenting out a CC=gcc line?
263
6) Did you read the recommendations in the XXXX.defs file on what
264
C compiler versions work?
266
7) (si::tkconnect) fails:
267
a) Make sure DISPLAY variable set before
269
b) gcltkaux (subsidiary process) uses shared libraries and
270
you would need LD_LIBRARY_PATH set on say suns, to say where those are
271
if they are not in default places. [make sure "wish" would work]
274
CHANGING THINGS: MAYBE EDIT THREE FILES:
277
Normally you should not need to edit ANY files. There may be some
278
parameter sizes you wish to change or if you don't have gcc where
279
we have made that the default, then see CC below.
282
EDIT the ./add-defs script
284
If when you do `add-defs machine` the add-defs script is not able to
285
find directories where things like tk.h, libX11.a etc are, then it
286
will print out a message. You can to have it look in some extra
287
places on your machine, or in a different order. Note that if it
288
fails to find these things the tcl/tk support will not be built, but
289
you will have an ordinary common lisp.
292
EDIT the appropriate h/NAME.defs file. These are definitions to
293
be included in the various makefiles.
295
For example if the `NAME' of your machine is sun3-os4.
297
% emacs h/sun3-os4.defs
299
* CC: set C compiler options. For example, if you are using the GNU
302
CC = gcc -msoft-float -DVOL=volatile -I$(GCLDIR)/o
304
Or, if you are using the conventional UNIX C compiler:
306
CC = cc -DVOL= -I. -I$(GCLDIR)/o
312
If you want files in the main c source compiled with debugging
313
information. Note this is incompatible with OFLAGS= -O on
314
some compilers. Size will be smaller without -g, but you
315
are then helpless in the face of problems.
317
* INITFORM: The normal thing is to just have the one form
318
required for fast loading.
320
INITFORM=(si::build-symbol-table)
325
EDIT the file h/NAME.h (eg h/sun3-os4.h)
327
(Actually you probably don't need to change it)
329
This file will be included by virtually every compilation of C
330
files, except the translated C produced by kcl.
334
if you wish to change a parameter such as MAXPAGE 16384 established
335
in bsd.h (ie. number of 2000 byte pages you want as your absolute max
336
swap space). MAXPAGE must be a power of 2.
339
#define MAXPAGE (2 * 16384)
341
You may similarly redefine VSSIZE the maximum size for the value
342
stack (running very deep recursion interpreted may well require this).
349
W. Schelter, the University of Texas, and other parties provide this
350
program on an "as is" basis without warranty of any kind, either
351
expressed or implied, including, but not limited to, the implied
352
warranties of merchantability and fitness for a particular purpose.
358
See the file doc/contributors for a partial list of people who have
359
made helpful contributions to ports etc.