Copyright 1986-1989 Hans-Juergen Boehm, Alan J. Demers, Kumar Srikantan, Vernon Lee, and Lucy Hederman. Copyright Digital Equipment Corporation & INRIA 1988, 1989. Copyright (c) 1990, 1991 by Xerox Corporation. All rights reserved. This material is provided as is, with no warranty expressed or implied. Any use is at your own risk. Permission is hereby granted to copy this compiler for any non-commercial purpose, provided the above notices are retained on all copies. Further restrictions apply to the DEC/INRIA BigNum package. These are stated in the file runtime/BigNum/doc/bnbody.tex. This work uses the BigNum package developed jointly by INRIA and Digital PRL. It has been modified by Hans-J. Boehm in August 1990 at Xerox PARC. When you receive this software, please send mail to librarian@prl.dec.com to inform them that you have a copy of the package. ---------------------------------- Installation instructions: 0) Put the compiler in a directory in which you can leave it. The compilation driver "rc" will have path names to this directory embedded in it. The driver itself can be moved to a convenient place (such as your ~/bin directory) after everything is built. However, it references other files in this directory. To be on the safe side, you should try for about 15 MB of free disk space before you move the compiler there. 1) By default, the compiler is configured to generate C code, and to use the native C compiler to compile the output. On Sun 3s and some other machines it is recommended that you use the GNU C compiler instead, if you have it. (It usually generates better code for Motorola processors, and it presents better (but still inadequate) hooks for informing the optimizer of the presence of a garbage collector.) If you would like to use gcc, change the macros at the top of RIC_to_C/main.c. If you need to use one of the older direct code generators, send mail to boehm@xerox.com. 2) The compiler has recently been run on Sun 3s and 4s. If you are running on such a machine, skip the rest of this section. For anything else, first make sure that there is a garbage collector configuration for your machine in the gc directory. If not, send mail to boehm@xerox.com to find out whether one has been developed in the interim, or follow the suggestions there for building your own. Compile and run the test code in that directory before proceding any further. If your machine does not have IEEE floating point, you will have to fix the shift and large integer conversion routines in runtime/Float.c and runtime/SFloat.c. The code to write out a preinitialized compiler image (around line 450 in src/main.c) is also rather fragile. If your machine does not run UN*X a port will be a major effort. If your machine is not byte addressable, does not have 32 bit pointers, or does not have 32 bit longs, then this is a good time to give up. If your machine does not have 32 bit ints, then you should probably replace all references to the type "int" in the source by "long". This can possibly be done with a macro definition in src/parm.h and runtime/runtime.h. Note that parts of this distribution (e.g. the garbage collector and bignum packages) explicitly support architectures on which other parts of the compiler will not run in their current form. 3) If you do not care about performance of the large integer package, you may skip this step. Go to the runtime/BigNum directory. Type "make ", where machtype is one of 68k, sparc, rs6000, vax, ns, mips. If none of these is applicable, type "make C32" instead, or skip this step to build a version of the package that contains no assembly code, but is substantially slower. 4) If you are not using a VAX, or another machine that implements longjmp by crawling up the stack, skip this step. (Sun machines do not implement longjmp by crawling up the stack. I believe MIPS machines also do not.) If you are using a VAX, go to the runtime directory, and move both of the files starting with vax_ to the same name without this prefix. You may want to save the general versions of these files. If you are using another machine with a VAX like implementation of longjmp, you will have to fix the Call/cc implementation for it to work correctly. 5) Type "make" in the src directory. If you are unfortunate enough to be doing this on a slow machine (e.g. Vax 780 class), this is a good time to take an extended break, for example, to eat a leisurely dinner. 6) Move the compiler "rc" and the help utility "rhelp" to somewhere on your path. If you expect to have to do some compiler debugging, do the same for the intermediate code print utility "diaplay", and the "extract_sig" utility for printing signature information from object files. If you are a C shell user, type rehash. To get further directions, run "rhelp" 7) If you want the "-OO" flag (static garbage collection) to work, type "make" in src/lh_opt. This involves compiling significant amounts of Russell code, and will again take a significant amount of time. 8) Some disk space can be reclaimed by removing various .o files in the directory subtree headed by src. src/PRc and src/Rc may also be removed. 9) It should now be possible to build the calculator utility by typing make in examples/calc.