Advertisement
Guest User

Untitled

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