~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to readme

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Description of GCL (GNU Common Lisp) system.
 
2
 
 
3
OVERVIEW:
 
4
 
 
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
 
19
software.
 
20
 
 
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.   
 
26
 
 
27
 
 
28
OBTAINING SOURCES:
 
29
-----------------
 
30
 
 
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.
 
38
                                   
 
39
 
 
40
MAKING THE SYSTEM:
 
41
==================
 
42
To make the whole system, if you have obtained gcl.tgz. 
 
43
 
 
44
UNCOMPRESS and UNTAR the SOURCES:
 
45
--------------------------------
 
46
 
 
47
Change to a directory in which you wish to build gcl, eg ~/tmp.
 
48
Copy the file gcl.tgz to this directory.
 
49
 
 
50
        % gzip -dc gcl.tgz | tar  xvf -
 
51
 
 
52
This will create the subdirectory gcl-y.xxx with all the sources in it.
 
53
 
 
54
      
 
55
ADD MACHINE DEFINITIONS TO MAKEFILES:
 
56
------------------------------------
 
57
 
 
58
        % cd gcl-y.xxx 
 
59
        % ./configure
 
60
 
 
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
 
63
file for your system.
 
64
 
 
65
Some command line options can be used with the configure script; try
 
66
./configure --help to find out about them.
 
67
 
 
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.  
 
71
 
 
72
 
 
73
RUNNING MAKE:
 
74
------------
 
75
 
 
76
        % make
 
77
 
 
78
The make should continue without error.   There may be occasional
 
79
warnings from the C compiler, but all files should compile successfully
 
80
producing .o files.
 
81
 
 
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
 
88
        
 
89
        % ./configure  --enable-notify=no
 
90
 
 
91
before make.
 
92
 
 
93
 
 
94
TRY IT OUT:
 
95
----------
 
96
 
 
97
When it has finally finished you may invoke GCL by using
 
98
 
 
99
% xbin/gcl
 
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
 
103
 
 
104
>(+ 2 3)
 
105
 
 
106
>5
 
107
 
 
108
If you had TCL/TK, then you should be able to do
 
109
>(si::tkconnect)
 
110
>(load "gcl-tk/demos/widget.lisp")
 
111
 
 
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]
 
116
 
 
117
 
 
118
INSTALLING:
 
119
----------
 
120
 
 
121
        To install under /usr/local (or under the directory specified
 
122
        with the --prefix= option of the ./configure script)
 
123
 
 
124
        % make install
 
125
 
 
126
        The default installation puts a full executable in
 
127
 
 
128
          /usr/local/lib/gcl-version/unixport/saved_gcl
 
129
 
 
130
        and some documentation in
 
131
          
 
132
          /usr/local/lib/gcl-x.x/info/
 
133
 
 
134
        and some autoloading files in
 
135
 
 
136
          /usr/local/lib/gcl-x.x/lsp
 
137
 
 
138
        and a shell script in 
 
139
          
 
140
          /usr/local/lib/gcl-x.x/xbin/gcl
 
141
 
 
142
        This script is also copied to
 
143
 
 
144
          /usr/local/bin
 
145
 
 
146
 
 
147
FUTURE DIRECTIONS
 
148
=================
 
149
(and how you may be able to help)   Volunteers should contact
 
150
William Schelter (wfs@math.utexas.edu)
 
151
 
 
152
a) Upgrading to comply with the forthcoming ANSI standard.   Work 
 
153
needs to be done.   
 
154
 
 
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.   
 
158
 
 
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.
 
162
 
 
163
Additonal work planned or desired:
 
164
 
 
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).
 
168
 
 
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.
 
173
 
 
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.
 
177
 
 
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.
 
181
 
 
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.
 
185
 
 
186
  * Make an appropriate Unix man page.
 
187
 
 
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.
 
191
 
 
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.
 
197
 
 
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
 
200
C stack.
 
201
 
 
202
  * Include CLOS support.  Possibly take this from PCL or from
 
203
Attardi, who has written some.
 
204
 
 
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
 
209
Lucid.
 
210
 
 
211
  * Loop package: either make sloop satisfy the standard or include
 
212
another implementation.
 
213
 
 
214
  * Changes to READ for ANSI, (including case sensitivity, etc.).
 
215
 
 
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.
 
220
 
 
221
  * Construct a Common Lisp test suite to help debug new releases.
 
222
 
 
223
 
 
224
DOCUMENTATION:
 
225
==============
 
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.
 
231
 
 
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")
 
235
 
 
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
 
241
 
 
242
 
 
243
TROUBLE SHOOTING (some common problems reported):
 
244
----------------   
 
245
 
 
246
1) Did you extract the files with the original write dates--make
 
247
depends heavily on this?
 
248
 
 
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.
 
251
 
 
252
3) If you can't save an image, try doing so on the file server rather
 
253
than a client.
 
254
 
 
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.
 
259
 
 
260
5) Did you make changes in the .defs or .h files, other than just
 
261
commenting out a CC=gcc line?
 
262
 
 
263
6) Did you read the recommendations in the XXXX.defs file on what
 
264
C compiler versions work?
 
265
 
 
266
7) (si::tkconnect) fails:
 
267
   a) Make sure DISPLAY variable set before
 
268
starting gcl.
 
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]
 
272
 
 
273
 
 
274
CHANGING THINGS: MAYBE EDIT THREE FILES:
 
275
--------------------
 
276
 
 
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.
 
280
 
 
281
 
 
282
EDIT the ./add-defs script
 
283
 
 
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.
 
290
 
 
291
 
 
292
EDIT the appropriate h/NAME.defs file.   These are definitions to
 
293
be included in the various makefiles.
 
294
 
 
295
For example if the `NAME' of your machine is sun3-os4.
 
296
 
 
297
% emacs h/sun3-os4.defs
 
298
 
 
299
   * CC: set C compiler options.  For example, if you are using the GNU
 
300
     C compiler:
 
301
 
 
302
     CC = gcc -msoft-float -DVOL=volatile -I$(GCLDIR)/o
 
303
 
 
304
         Or, if you are using the conventional UNIX C compiler:
 
305
 
 
306
     CC = cc -DVOL= -I. -I$(GCLDIR)/o
 
307
     
 
308
   * ODIR_DEBUG:
 
309
     
 
310
     ODIR_DEBUG= -g
 
311
 
 
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.
 
316
     
 
317
   * INITFORM: The normal thing is to just have the one form
 
318
     required for fast loading.
 
319
 
 
320
    INITFORM=(si::build-symbol-table)
 
321
 
 
322
 
 
323
-----------
 
324
 
 
325
EDIT the file h/NAME.h  (eg h/sun3-os4.h)
 
326
 
 
327
(Actually you probably don't need to change it)
 
328
 
 
329
This file will be included by virtually every compilation of C
 
330
files, except the translated C produced by kcl.
 
331
 
 
332
% emacs h/sun3-os4.h
 
333
 
 
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.
 
337
 
 
338
      #undef MAXPAGE
 
339
      #define MAXPAGE (2 * 16384)
 
340
 
 
341
      You may similarly redefine VSSIZE the maximum size for the value
 
342
      stack (running very deep recursion interpreted may well require this).
 
343
 
 
344
 
 
345
 
 
346
DISCLAIMER:
 
347
----------
 
348
 
 
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.
 
353
 
 
354
 
 
355
Bill Schelter 
 
356
wfs@math.utexas.edu
 
357
 
 
358
See the file doc/contributors for a partial list of people who have
 
359
made helpful contributions to ports etc.