123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- This document explains how to build or rebuild REDUCE 3.7
- using the CSL Lisp system. A number of different possibilities
- arise depending on whether you have a C compiler available (and
- in some cases which one!) and how comprehensive a re-build is
- wanted. I will start with the simplest case.
- (0) Before you begin.
- If you are running on some version of Unix it may be that file-permissions
- were not set up when the REDUCE files moved to your machine. Select the
- "lisp/csl/util" dircetory as current and run the script "setexec"
- source setexec
- to correct this.
- (1) Recompilation of all of REDUCE after some source files have
- changed.
- Make the directory containing the REDUCE executable (r37.exe or r37)
- your current directory. This directory will have a path-name that
- ends up ".../lisp/csl/<machine>" where the final component refers
- to the type of computer you are using. Examples are "win32" or "linux".
- In all the file-names that I quote here I will use "/" as the directory
- separator, however on Windows systems you will need to use "\" instead.
- Optionally make a copy of the existing r37.img and then delete the
- existing file of that name. The merits of making a backup copy of the
- image file should be obvious. Deleting r37.img before running the
- build job will reduce your peak demands on disc space. Run the script:
- ../util/full37
- Note that on a 400 MHz Pentium II system this runs for around 3 minutes.
- All future timings I quote will be in terms of this reference configuration.
- On slower or faster machines it will take different amounts of time of
- course. A log of what has happened will be placed in log/full37.log. The
- most you are really likely to want to do with this is to scan it to verify
- that it ends up saying something like
- +++ untrrl compiled, 56 + 36 bytes
- +++ untrrlid compiled, 44 + 28 bytes
- +++ FASLEND: hits = 372, misses = 144
- Fast-loading "E:\r37\lisp\csl\win32\R37.IMG(rtrace)"
-
- The system is about to do a restart...
- Dump file created: Sat Jan 23 16:31:35 1999
- REDUCE 3.7, 15-Jan-99 ...
- Memory allocation: 10213632 bytes
- Fast-loading "E:\r37\lisp\csl\win32\R37.IMG(user)"
-
- End of Lisp run after 142.15+10.14 seconds
- and that it does not contain the string "Error".
- You should now check the resulting system, either by trying your own
- code on it, or by running and then checking all the standard test cases.
- To run a full set of tests just run
- ../util/testall
- but be aware that this runs for around half an hour. This is because REDUCE
- has a substantial number of test files that check and illustrate all of its
- capabilities. Running "testall" leaves a set of new log files close to the
- top-level in the REDUCE tree. From where your current directory they are in
- "../../../log/*.rlg". If especially interested in just a few of them you
- can check them by hand, but a further script
- ../util/checkall [not yet provided]
- compares all these logs against a reference set and produces summary
- information in "log/checkall.log". This file is intended to be short enough
- to be worth reading. Note that a major reason for rebuilding REDUCE will
- be to incorporate some corrections or enhancements and it is very probable
- that these will cause some logs to change from the original reference set.
- Thus discrepancies reported in log/checkall.log do not necessarily indicate
- problems!
- If you go
- ../util/testall XXX
- where XXX is the name of a REDUCE package (eg "alg") then this will run
- the test script for (just) that module.
- (2) Rebuild everything from source.
- At the other extreme you may wish to re-create everything from source,
- including re-building the underlying Lisp system. The steps are as follows.
- (2.a) Create an empty directory ".../lisp/csl/<machine>" named suitably
- for your environment. Select it as your current directory.
- (2.b) If there is a suitable Makefile in ../util then copy it or link it
- into the current directory: eg
- copy ..\util\Makefile.w32 Makefile [Windows, Watcom C]
- or ln -s ../util/Makefile.linux Makefile [Linux]
- If no pre-build Makefile is available then you may be able to create
- one using the "makemake" program in the util directory: read the comments
- and explanation in it and the "makebase" file, but it will probably
- be easiest for you to copy a generic Unix Makefile and edit it by hand to suit
- your needs. The Makefile is intended to be conservative and does little more
- than explain which C files to compile and link. If you have a C compiler
- but it does not use textual Makefiles then inspect the link steps
- in the provided ones to see which source files need to be compiled.
- Note that the directory may contain a "Makefile.cyg" for use with the Cygnus
- compilers for Windows. Observe from the Cygnus FAQ
- In particular, if you intend to port a commercial (non-GPL'd)
- application using Cygwin, you will need the commercial license to Cygwin
- that comes with the supported native Win32 GNUPro product. The price
- for five users is $7495, which includes the GNUPro Toolkit, Mission
- Critical Support for one year, and a commercially licensed version of
- the Cygwin library. For more information about the commercial-use
- license, please contact info@cygnus.com. All other questions should be
- sent to the project mailing list gnu-win32@cygnus.com.
- and Codemist will neither distribute binaries compiled using this
- system nor provide guaranteed support for those who decide that re-compiling
- REDUCE using this compiler is a good idea.
- (2.c) Build slowr37 (slowr37.exe on Windows)
- make slowr37 [Unix]
- make slowr37.exe [Windows]
- This is a basic version of the CSL Lisp system and at this stage is only
- useful for building the bootstrap version of REDUCE.
- (2.d) Create a bootstrap version of REDUCE. The image file for this will
- be around 8 Mbytes large, and the system will run much more slowly than the
- final and proper version of REDUCE. However it should be able to run all
- REDUCE tests properly.
- ../util/boot37
- where a log is left on log/boot37.log. This step takes around 3 minutes.
- (2.e) Optionally run ../util/testslow, expecting it to run for around
- an hour. Logs are left where test logs for the final system will be, so
- ../util/checkall can be used to verify that all is under control, although
- most of the time you will not want to spend time of this verification step.
- (2.f) If you are starting completely from scratch it is necessary to
- collect profile information which is used to determine which parts of
- REDUCE should be most carefully optimised. If you already have a file
- "../csl-c/profile.dat" you may omit this step, but after significant changes
- or as a demonstration of a complete fresh start it may be useful. Run
- ../util/profile
- and wait around an hour for it to create a file "profile.dat" in the current
- directory. This file lists the modules tested and for each gives an
- ordered list of functions, each accompanied by a long string of digits that
- are a digital signature for the version of the function that was involved.
- Copy profile.dat as ../csl-c/profile.dat (optionally backing up your
- original copy) and delete it from the current directory.
- (2.g) Run the script
- ../util/c-code37
- which uses ../csl-c/profile.dat and the bootstrap image to create twelve
- files of C code (../csl-c/u01.c to ../csl-c/u12.c) and twelve corresponding
- Lisp files (same file-names but with ".lsp" as their suffix). These files
- represent optimised versions of the most important parts of REDUCE.
- (2.h) Create the main REDUCE executable (r37 or r37.exe)
- make r37 [Unix]
- make r37.exe [Windows]
- and just to be safe please delete r37.img, since the image file depends on
- the set of things created in step (2.g) above and so is probably now
- out of date. WARNING: running a reduce executable with an image file
- that it does not correspond to can lead to unpredictable failure, so although
- image files are portable from one machine architecture to another they
- must be used with a REDUCE executable that was built with the same set of
- file u01.c through u12.c.
- [Can I generate a scheme that will allow me to soften this warning, or will
- at least check for compatibility when the system is loaded?]
- (2.i) Make the final image file. This is exactly the step described as
- the simple case:
- ../util/full37
- (2.j) Test the new system as documented towards the top of this document.
|