Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- OVERVIEW:
- The GCL system contains C and Lisp source files to build a Common Lisp
- sytem. The original KCL system was written by Taiichi Yuasa and
- Masami Hagiya in 1984. The AKCL system work was begun in 1987 by
- William Schelter and continued through 1994. A number of people have
- contributed ports and pieces. The file doc/contributors lists some of
- these. In 1994 AKCL was released as GCL (GNU Common Lisp) under the
- GNU public library license. Version akcl-1-624 was the last version
- made under the old license and using the old file change mechanism.
- This readme only applies to versions gcl.1.0 and later. The GNU
- library license does allow redistribution of executables containing
- GCL as well as proprietary code, but such redistribution must be
- accompanied by sufficient material (eg .o files) to allow recipients
- to rebuild an executable, after possibly modifying GCL. See the GNU
- file COPYING.LIB-2.0 for a full description of your right to copy this
- software.
- Releases of GCL after 2.0 contain a GCL connection with the windowing
- tools TCL/TK. If 'configure' is able to find the relevant libraries on
- your system, then a gcl-tk server will be compiled as well by the main
- make. It is based on TK 8.0 and TCL 8.0 and available from
- ftp.cs.berkeley.edu and many mirrors.
- OBTAINING SOURCES:
- -----------------
- * There are source files on ftp.ma.utexas.edu:pub/gcl/gcl.x.x.tgz You
- probably want the highest XX version number. For example gcl-1.0.tgz
- would allow you to build the version 1.0 of GCL. In the following
- this compressed tar file is simply referred to as gcl.tgz. If you
- do not have gzip it is available in the directory
- /anyonymous@prep.ai.mit.edu:/u2/emacs .
- Hopefully sometime, GCL will also be available on prep.ai.mit.edu.
- MAKING THE SYSTEM:
- ==================
- To make the whole system, if you have obtained gcl.tgz.
- UNCOMPRESS and UNTAR the SOURCES:
- --------------------------------
- Change to a directory in which you wish to build gcl, eg ~/tmp.
- Copy the file gcl.tgz to this directory.
- % gzip -dc gcl.tgz | tar xvf -
- This will create the subdirectory gcl-y.xxx with all the sources in it.
- ADD MACHINE DEFINITIONS TO MAKEFILES:
- ------------------------------------
- % cd gcl-y.xxx
- % ./configure
- This will analyze your system, generate a file called makedefs, insert
- it into the various makefiles and create a proper h/config.h header
- file for your system.
- Some command line options can be used with the configure script; try
- ./configure --help to find out about them.
- Note that if you have tcl/tk (version 4.2 tk or 7.6 tcl or later),
- then a file tclConfig.sh and tkConfig.sh should exist in some place
- such as /usr/local/lib.
- RUNNING MAKE:
- ------------
- % make
- The make should continue without error. There may be occasional
- warnings from the C compiler, but all files should compile successfully
- producing .o files.
- At the end you should see a message at the end "Make of GCL xxx
- completed", where xxx stands for the version number. Every successful
- compilation generates an automatic notification email to
- gcl@math.utexas.edu to help in determininig on which machines and
- levels of the OS compilation has been successful. If you don't want to
- assist in the maintenance in this way do
- % ./configure --enable-notify=no
- before make.
- TRY IT OUT:
- ----------
- When it has finally finished you may invoke GCL by using
- % xbin/gcl
- GCL (GNU Common Lisp) Version(2.3) Sun May 7 14:11:30 CDT 2000
- Licensed under GNU Library General Public License
- Contains Enhancements by W. Schelter
- >(+ 2 3)
- >5
- If you had TCL/TK, then you should be able to do
- >(si::tkconnect)
- >(load "gcl-tk/demos/widget.lisp")
- Note there are currently problems with the demos, since they were
- based on an older version of tcl/tk.
- (setq si::*tk-library* "/usr/lib/tk")
- [where /usr/lib/tk/tk.tcl is]
- INSTALLING:
- ----------
- To install under /usr/local (or under the directory specified
- with the --prefix= option of the ./configure script)
- % make install
- The default installation puts a full executable in
- /usr/local/lib/gcl-version/unixport/saved_gcl
- and some documentation in
- /usr/local/lib/gcl-x.x/info/
- and some autoloading files in
- /usr/local/lib/gcl-x.x/lsp
- and a shell script in
- /usr/local/lib/gcl-x.x/xbin/gcl
- This script is also copied to
- /usr/local/bin
- FUTURE DIRECTIONS
- =================
- (and how you may be able to help) Volunteers should contact
- William Schelter (wfs@math.utexas.edu)
- a) Upgrading to comply with the forthcoming ANSI standard. Work
- needs to be done.
- b) Need work on providing a high level window interface. One possible
- way would be a good connection with TCL/TK. Another would be to go
- in the direction of CLIM.
- A new compiler has been written, which is closer to the ANSI standard
- and provides some other benefits. It will be in a future release.
- We will need people willing to beta test and isolate any bugs.
- Additonal work planned or desired:
- * Clean up distribution and installation. Make it easier to link in
- C code such as Novak's window stuff. Faslink is not portable (since
- many systems don't support ld -A).
- * Introduce COMMON-LISP and COMMON-LISP-USER packages as per ANSI
- standard, change the package functions to behave as in the ANSI
- standard. Any other changes which people can identify which would
- make life easier, and are compatible with ANSI.
- * Introduce C level and Lisp level way of signalling errors of the
- types specified by the ANSI standard. Make it so that when the CLOS
- is present these become error objects.
- * Fix the run-process stuff to properly deallocate processes and
- have listen do the right thing, by using select, which is POSIX. Try
- to make it compatible with the one in Allegro or Lucid.
- Done * Turn ANSI documentation into the new Lisp's on-line documentation.
- This will be useful for development and for users. No sense in basing
- our work on the CLTL 2. Must go to the ANSI document itself.
- * Make an appropriate Unix man page.
- * Add my allocation files and other changes necessary to make
- INTERRUPTS safe. This probably means adding in all the C files which
- I have already written.
- * Change function calls to all refer to C stack and pass return
- values in a uniform way, the way the new compiler does it. This will
- greatly improve funcalling, since right now there are generally two
- types of functions which can be expected, and they expect their
- arguments in different places.
- * Change to the new compiler which does things better from the ANSI
- point of view, and is smaller, and makes all function calls go via the
- C stack.
- * Include CLOS support. Possibly take this from PCL or from
- Attardi, who has written some.
- Done * Include a windowing interface with TCL/TK which is capable of
- producing TK (similar to Motif but public) style windows and
- scrollable menus, etc. This implementation must be done in such a way
- that it works in at least one additional Lisp, such as Allegro or
- Lucid.
- * Loop package: either make sloop satisfy the standard or include
- another implementation.
- * Changes to READ for ANSI, (including case sensitivity, etc.).
- * Byte compiler based on first pass of the new compiler. Ideally
- provides very small code and extremely rapid compiling for general
- platform. Notes: I have put the interrupt and run-process stuff early
- on since it is necessary for window development.
- * Construct a Common Lisp test suite to help debug new releases.
- DOCUMENTATION:
- ==============
- If you use GNU emacs, a convenient method for viewing documentation
- of Common Lisp functions (or functions in an extended system), is
- provided by the doc/find-doc.el file. This will be installed when you
- do make in the doc directory. Adding the following to your .emacs
- file will allow you to use C-h d to find documentation.
- (autoload 'find-doc "find-doc" nil t)
- (global-set-key d" 'find-doc)
- (visit-doc-file "/usr/local/lib/gcl/doc/DOC")
- See the file find-doc.el for more information. Otherwise you may use
- the describe command inside Lisp. For example (describe 'print) will
- print out information about print. It will access the gcl-si.info,
- gcl-tk.info, and gcl.info if these exist. gcl.info (containing the
- ansi proposed definitions) is on ftp.ma.utexas.edu:pub/gcl/gcl.info.tgz
- TROUBLE SHOOTING (some common problems reported):
- ----------------
- 1) Did you extract the files with the original write dates--make
- depends heavily on this?
- 2) Did you use -O on a compiler which puts out bad code? Any time you
- change the settings or use a new c compiler this is a tricky point.
- 3) If you can't save an image, try doing so on the file server rather
- than a client.
- 4) Doing the make on a client with the main files on a server, has
- sometimes caused random breakage. The large temp files used by the C
- compiler seem to sometimes get transferred incorrectly. Solution: use
- the server for the compile.
- 5) Did you make changes in the .defs or .h files, other than just
- commenting out a CC=gcc line?
- 6) Did you read the recommendations in the XXXX.defs file on what
- C compiler versions work?
- 7) (si::tkconnect) fails:
- a) Make sure DISPLAY variable set before
- starting gcl.
- b) gcltkaux (subsidiary process) uses shared libraries and
- you would need LD_LIBRARY_PATH set on say suns, to say where those are
- if they are not in default places. [make sure "wish" would work]
- CHANGING THINGS: MAYBE EDIT THREE FILES:
- --------------------
- Normally you should not need to edit ANY files. There may be some
- parameter sizes you wish to change or if you don't have gcc where
- we have made that the default, then see CC below.
- EDIT the ./add-defs script
- If when you do `add-defs machine` the add-defs script is not able to
- find directories where things like tk.h, libX11.a etc are, then it
- will print out a message. You can to have it look in some extra
- places on your machine, or in a different order. Note that if it
- fails to find these things the tcl/tk support will not be built, but
- you will have an ordinary common lisp.
- EDIT the appropriate h/NAME.defs file. These are definitions to
- be included in the various makefiles.
- For example if the `NAME' of your machine is sun3-os4.
- % emacs h/sun3-os4.defs
- * CC: set C compiler options. For example, if you are using the GNU
- C compiler:
- CC = gcc -msoft-float -DVOL=volatile -I$(GCLDIR)/o
- Or, if you are using the conventional UNIX C compiler:
- CC = cc -DVOL= -I. -I$(GCLDIR)/o
- * ODIR_DEBUG:
- ODIR_DEBUG= -g
- If you want files in the main c source compiled with debugging
- information. Note this is incompatible with OFLAGS= -O on
- some compilers. Size will be smaller without -g, but you
- are then helpless in the face of problems.
- * INITFORM: The normal thing is to just have the one form
- required for fast loading.
- INITFORM=(si::build-symbol-table)
- -----------
- EDIT the file h/NAME.h (eg h/sun3-os4.h)
- (Actually you probably don't need to change it)
- This file will be included by virtually every compilation of C
- files, except the translated C produced by kcl.
- % emacs h/sun3-os4.h
- if you wish to change a parameter such as MAXPAGE 16384 established
- in bsd.h (ie. number of 2000 byte pages you want as your absolute max
- swap space). MAXPAGE must be a power of 2.
- #undef MAXPAGE
- #define MAXPAGE (2 * 16384)
- You may similarly redefine VSSIZE the maximum size for the value
- stack (running very deep recursion interpreted may well require this).
- DISCLAIMER:
- ----------
- W. Schelter, the University of Texas, and other parties provide this
- program on an "as is" basis without warranty of any kind, either
- expressed or implied, including, but not limited to, the implied
- warranties of merchantability and fitness for a particular purpose.
- Bill Schelter
- wfs@math.utexas.edu
- See the file doc/contributors for a partial list of people who have
- made helpful contributions to ports etc.
- [YMarkova@mgmt gcl]$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement