• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

MacPorts/H12-Apr-2021-11084

bin/H12-Apr-2021-524382

buglist/H12-Apr-2021-2,9092,257

common-lisp/H12-Apr-2021-5,2783,641

contrib/H12-Apr-2021-1,124,3921,069,872

csl/H03-May-2022-1,458,7601,203,111

debianbuild/H12-Apr-2021-1,048847

doc/H03-May-2022-130,195107,900

generic/H12-Apr-2021-35,36726,964

jlisp/H03-May-2022-80,54356,775

jslisp/H12-Apr-2021-66,54853,373

libedit/H03-May-2022-

libraries/H12-Apr-2021-1,079,933835,290

mac-universal/H12-Apr-2021-658394

macbuild/H12-Apr-2021-381270

packages/H12-Apr-2021-1,356,3801,051,125

psl/H03-May-2022-1,096,061976,840

scripts/H03-May-2022-21,69516,817

vsl/H03-May-2022-108,484102,744

web/H12-Apr-2021-6,7496,130

winbuild64/H03-May-2022-1,6791,077

xmpl/H12-Apr-2021-168,105109,183

BUGSH A D06-Jan-20095.9 KiB135107

BUILDINGH A D02-Dec-20198.8 KiB169145

DEPENDENCY_TRACKINGH A D06-Jan-20093.4 KiB7353

INSTALLH A D09-Jun-201279 32

MANIFESTH A D27-Aug-2011119.6 KiB2,5732,431

MakefileH A D04-Feb-20183.6 KiB8718

Makefile.amH A D20-May-20182.3 KiB10059

Makefile.inH A D15-Oct-202020.2 KiB671562

READMEH A D09-Feb-20149.4 KiB186144

README.BUILDINGH A D16-Jun-202019.2 KiB366310

aclocal.m4H A D15-Oct-202041.3 KiB1,1581,052

all-exe.shH A D30-Nov-2016162 139

all-img.shH A D28-Apr-2018459 2617

autogen.shH A D13-Mar-20215.1 KiB208133

compileH A D11-May-20197.2 KiB348258

config.guessH A D15-Oct-202043.2 KiB1,4811,288

config.subH A D15-Oct-202035.3 KiB1,8021,661

configureH A D15-Oct-2020631.3 KiB20,53317,263

configure.acH A D08-Apr-202147 KiB1,3811,232

depcompH A D11-May-201923 KiB792502

fetchfetch.shH A D28-Apr-2018526 235

fetchreduce.shH A D28-Apr-2018537 269

install-shH A D11-May-201914.8 KiB509329

ltmain.shH A D15-Oct-2020316.8 KiB11,1577,986

missingH A D11-May-20196.7 KiB216143

parbuild.shH A D01-Jan-20211.9 KiB10684

rebuild.shH A D31-Dec-2008428 163

README

1                       REDUCE - Open Source release
2
3
4                      July 2013, then February 2014
5
6Tiny updates to this file just to try to keep the credits to other
7projects that are used up to date. As of Feb 2014 the revision number
8at Sourceforge is 2337, and this seems to correspond to an average
9activity rate of a bit over 3 checkins per day.
10
11                             December 2010
12
13This project just reached revision 1000 in the Sourceforge subversion
14repository. This feels like something of a landmark.
15
16
17                              March 2009
18
19
20This is the REDUCE algebra system, which was originally developed by
21Tony Hearn. A bibliography somewhere in this tree reports some of the
22large numbers of papers that have been written about or relying on
23REDUCE.
24
25
26                                     Arthur Norman.  March 2009
27
28
29The BULK of the files in this tree are subject to the (modified) BSD license,
30as shown below. There are some components that are subject to more restrictive
31terms (notably the FOX GUI Toolkit, used in one version of the code here, is
32under LGPL).
33
34===========================================================================
35
36Redistribution and use in source and binary forms, with or without
37modification, are permitted provided that the following conditions are met:
38
39    * Redistributions of source code must retain the relevant copyright
40      notice, this list of conditions and the following disclaimer.
41    * Redistributions in binary form must reproduce the above copyright
42      notice, this list of conditions and the following disclaimer in the
43      documentation and/or other materials provided with the distribution.
44
45THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
46AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
47THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
48PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNERS OR CONTRIBUTORS
49BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
50CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
51SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
52INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
53CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
54ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
55POSSIBILITY OF SUCH DAMAGE.
56
57
58===========================================================================
59
60The CSL version of Reduce has started to migrate to use the wxWidgets
61library rather than FOX (see below). wxWidgets is under its own license
62which is LGPL 2 (or later) plus some permissive exceptions for the
63distribution of applications linked against the library. A full
64archive is wxWidgets source is included and that contains full details.
65
66
67
68Note that the directory csl/fox contains a modified version of the
69FOX toolkit (www.fox-toolkit.com) version 1.6 which is subject to
70LGPL 2.1. Note explicitly that while an unmodified version of FOX can be
71linked into an application and the resulting version may be distributed
72without hindrance even the smallest change that has not been accepted by
73the FOX central site can only be used under the terms of the LGPL.
74
75Within the FOX directory the "utils" subdirectory contains a program
76reswrap.cpp that is used while building FOX. I do not see any cause for
77anybody to even want to distribute a binary of that, but to satisfy the
78GPL better I have put a copy of the GPL in the directory with it. No part of
79reswrap itself ends up in the main programs built here, and its status is
80thus rather like that of gcc and other tools.
81
82The FOX test programs were originally held within the FOX directory, but
83they are subject to the GPL not the LGPL or any more benign license. I have
84moved them to a separate directory to make it unambiguous that there are at
85most here as mere aggregation, and the standard build sequences here make
86even the presence of that directory optional. I do not intend to provide or
87distribute binary copies of any of them ever, and so there should not be any
88complications at all on that front.
89
90
91The "gnuplot" package is used with REDUCE and its license indicates that
92it may be redistributed freely, but that modified versions may only be
93circulated in the form of patch files against the official release. The
94version included here is an original un-modified copy. Well actually right now
95there is no version included with Reduce. This is because Sourceforge policy
96is that if we include any binary then we must also put the corresponding
97source into the Sourceforge Release system. Putting a copy of a snapshot
98of the gnuplot source there seems both clumsy and asks for confusion as and
99when gnuplot gets updated, so this area is under review!
100
101The CSL source directory contains material derived from Adobe font metrics,
102and these metrics it works can be found on many sites - they can be
103downloaded directly from Adobe's ftp site but also they are included
104with many existing software packages in forms that clearly state that
105they are available for redistribution and that the authors of those
106packages have checked license conditions carefully. The set of files
107I use here came with "teTeX 2" where these terms are carefully set
108out and where the package is very well established and widely used so
109there would have been plenty of opportunity for concerns about rights
110to be aired. I have not altered the metric files at all.
111
112There is a copy of the "distorm" x86 disassembler, which originated from
113Gil Dabah and licensed under the modified BSD license. See
114http://ragestorm.net/distorm.
115
116I use adjusted versions of Computer Modern Fonts derived from the Blue Sky
117Research and Y&Y inc versions but which are now freely available for general
118use. Their copyright is held by the American Mathematical Society, and the
119versions here should yield exactly the same font metrics as the original
120versions.
121
122The Truetype-format fonts are from the BaKoMa Computer Modern Font collection
123as distributed via "ctan", and the associated permissive license is included
124in the directory where they are held. This set of files and its associated
125.tfm metrics are gradually replacing my use of other font data.
126
127An implementation of the MD5 message digest is due to Eric Young and
128comes from an implementation of SSL, and is subject to what is in essence the
129modified BSD license. The original and full version of the license terms
130is included where that code is incorporated.
131
132Various other parts within CSL were contributed by NAG Ltd and by various
133students and others, including J O'Connell, M O Seymour, but were made
134available to me and to Codemist for inclusion within CSL.
135
136The files in the "psl" directory come from ZIB and are some of the ones
137that they used with the Reduce Development System. As shown there these are
138also under a BSD license - see the HP_disclaimer.txt that confirms a release
139from one of the earlier major copyright holders.
140
141crlibm is a "correctly rounded maths library" subject to LGPL 2.1. It was
142fetched from http://lipforge.ens-lyon.fr/www/crlibm/ but needed (minor)
143aljustment to let it build here.
144
145The Latin Modern Fonts and Latin Moder Math Fonts are from
146http://www.gust.org.pl/projects/e-foundry and copies of the original
147archives containing them are in csl/support-packages along with unpacked
148a copy of the GUST-FONT-LICENSE.txt file and relevant README files.
149There are two uses of derived works, and the GUST License (which is
150an instance of the Latex Project Public License) requires that an
151explanation of what is covered and what changes are made is placed in
152a prominent place (eg here!).
153In csl/cslbase/wxfonts there are re-packed font files. Merely placing the
154files in a tree that is distinct from the .zip file that formed the
155original distribution makes this a derived (and changed) work. But I
156have also needed to (use fontforge to) convert each .oft file so I also
157have a .ttf version since my Windows code appeared not to render glyphs
158from the .otf versions. This should not alter character shapes or metrics
159but may degrade rendering. I have also extracted from these fonts a
160series of bitmaps that record which characters are present in the fonts.
161This is done because I was not instantly able to do this at the point of
162rendering, and because it then helps me use font substitution for any
163missing characters. In use these fonts will be set up as application-
164specific private fonts rather than as globally and permenantly installed
165ones, so the chances of causing confusion for other software ought to
166be low. The font directories that are to be distributed as part of
167a binary release of the software contain READE files etc alongside the
168actual fonts, and executable software will respond to a "--help" option
169by displaying a message that contains a brief citation of the fonts and
170how to recover original official versions.
171I believe that since I have not changed font shapes, metrics or coverage
172and since the distribution is not set up to make the fonts available
173generally - just to have them used as application-private resources - that
174renamking the fonts (to avoid confusion) is not necessary here.
175But it is important to record that the fonts and derived information are
176NOT subject to the full permissions of the BSD License and that any
177use that envisages moving them away from the code here or altering the
178messages about them that "--help" displays needs to be done only after
179careful review of the actual licenses.
180
181
182
183
184                                           A C Norman (acn1@cam.ac.uk)
185
186

README.BUILDING

1                       Fetching and Building REDUCE
2                       ============================
3
4                               January 2015
5                                 June 2020
6
7
8
9The notes here are about having a full set of Reduce sources fetched from
10Sourceforge and compiling them on your own computer. Following that path
11lets you track the most recent changes, updates and corrections. Because
12both Reduce and the platforms that people may wish to build on change over
13time what is explained here will almost always have a few details where it
14is out of date: so check the date to see how recently this has been refreshed.
15But almost always the changes needed to what is explained here will be small,
16and if you find some please report back to the Reduce mailing list for the
17benefit of others.
18
19The prerequisites for using this package will depend somewhat on whether
20you choose to use the CSL or PSL build.
21
22Users of PSL will use the ready-build binaries of the PSL Lisp system that
23are present in the material hosted at Sourceforge. Rebuilding PSL from source
24is possible but the procedures are not covered at all here and anybody needing
25to do that probably needs to consult the PSL experts. Because PSL uses
26pre-made binaries these have to be present for the architecture you are using.
27They are available for all the most important or common cases. Because the
28binaries are pre-made there are few demands for compilers or special
29libraries installed on the computer you will use PSL on.
30
31For CSL you need to be able to compile both CSL itself and the FOX toolkit
32on which it depends. Please note that even if you have FOX available already
33on your computer the code her uses a (slightly) customised version and your
34standard system-wide installation of FOX will not be used and should be
35irrelevant here. To join in development work on what is hoped to be a future
36version of CSL-Reduce you would also need to be able to work with wxWidgets.
37
38You will need:
39   For Windows, the "cygwin" environment providing a "bash" shell.
40       Note that building under "msys" or the plain Windows command
41       prompt is not possible (without you doing significant work of your
42       own to arrange for it). Obviously it will be sensible to keep your
43       cygwin installation up to date, and some updates there have in the
44       past not always been upards compatible. The aim is to keep the
45       current CSL/Reduce at Sourceforge buildable using the most recent
46       cygwin release. But any difficulty due to temporary bugs or glitches
47       at the cygwin end can not be resolved here! These days you MUST use
48       the 64-bit version of cygwin - note that the obsolete 32-bit one is
49       deprecated by its suppliers.
50       The command scripts/cygwin-sanity-check.sh attempts to check if
51       sufficient cygwin components have been installed, and it may save
52       you pain if you try it and respond to its suggestions before trying
53       a full build of Reduce.
54   For Macintosh you need the XCode command line tools, and you are liable
55       to need to use Macports to fetch and install a significant number
56       of commands and libraries that Apple do not provide as standard.
57       There is a file in the scripts directory that I use to fetch the
58       set of "ports" that I use. You will also need Xquartz to support the
59       GUI.
60   For Linux you can inspect scripts/ubuntu-sanity-check.sh or the fedora
61       equivalent to find a script that installs what is probably a superset
62       of the packages you will need.
63   For other platforms there is a hope that everything will work if you
64       can provide a bash shell and enough development libraries, but you
65       mat need to sort out details for yourself. Here are a few more comments:
66   GNU make (other versions of "make" are not liable to work), autoconf,
67       automake and libtool. All should be at least tolerably up to date
68       versions.
69   You need a C++ development context. On Windows you need the
70       and "mingw-x86_64" compiler variants (as well as plain g++) from
71       cygwin while on other systems you need X11 and other
72       development capability, including Xft, fontconfig, (n)curses, Posix
73       threads. The building has been tested using versions of both gcc
74       and clang. The compiler should be new enough that it supports C++11
75       and for choice C++17.
76
77I have (recently) built using cygwin64, Ubuntu and Fedora Linuxes
78on pcs, Raspbian (raspberry Pi OS, both 32 and 64-bit variants) on a
79Raspberry Pi and OSX Catalina. In the past I have built using PCBSD/FreeBSD
80and Solaris on both pc and sparc (requiring significant
81extra software installation), SGI, HP-pa, the IBM z-architecture and at one
82stage (not now I think) I coudd run Reduce on an HP IPAQ 4700 PDA or an
83openWRT router. The hope is that almost any machine with a C++ compiler
84should suffice for the basic system. In case of a challenging environment
85it may be prudent to do initial testing by running
86"./configure --with-csl --without-gui" to avoid all attempts to build
87windowing libraries. Also in recent years I have started to suppose that all
88computers have substantial amounts of memory, so ones with only a few megabytes
89(or even only tend or hundreds) may cause problems.
90
91One of the most common problems people seem to have the first time that they
92try to build CSL arises when they do not have quite all the necessary tools,
93libraries and header files installed. While most relevant run-time libraries
94are liable to have been provided for them by default, the development versions
95might not have. The state of your cygwin installation can be checked using
96scripts/cygwin-sanity-check.sh but please be aware that the tests that does
97are indicative rather than definitive and when (occasionally) either Reduce
98is extended and additional dependencies arise or cygwin is reorganised and the
99names of some packages alter the tests may become outdated.
100
101If you try to build REDUCE but one of the programming tools or development
102libraries that is required is not available then there is no guarantee that
103the failure that results will describe itself to you clearly! If the failure
104is detected at configuer time the evidence will be in a file "config.log"
105(possibly somewhere within the cslbuild directory). In case of trouble I often
106go
107    script buildlog.log
108    rm -rf cslbuild
109    ./configure --with-csl
110    make
111    exit
112and then buildlog.log contains a full transcript of all the output from the
113attempt. Its size can be daunting and distinguishing between messages,
114warnings, observations and errors can take experience!
115
116To try to make that easier to cope with I provide a script that attempts to
117check for prerequisites and that is lighter weight than the full configuration
118process and maybe reports trouble in a cleaner way. To use it select the
119Reduce "trunk" directory as current and at a bash prompt (you MUST have
120"bash" available as a shell, and you will run least risk if you run all
121scripts from it. I have tried to make most of them compatible with a legacy
122/bin/sh but testing and guaranteeing that is tedious) go
123      scripts/csl-sanity-check.sh
124This should run auto-configure scripts and eventually compile and run a small
125program that pops up a dull window. If you get the window at the end it has
126succeeded and you can try building Reduce. If not then it probably reports
127a step where some header file or library is missing. You need to search the
128installation sources relevant your operating system and install more stuff,
129then try again. Eg for cygwin you re-run "setup", while on Linux you are
130looking at "apt-get" and "yum" and various other package managers. You need
131to check the documentation of your particular operating system - or perhaps
132better find local expert to get you started.
133
134Note that if you configure using "--with-csl --with-wx" you also need GTK2
135(GTK+) development files if you are on an X11-based platform, but at present
136csl-sanity-check.sh does not test for that.
137
138Some people may find that they need things that are not installed on
139their system but they have not been granted adminitrator authority and so
140can not merely install them in the obvious way. The easiest response is to
141talk to a local system manager! But for a range of the tools (eg autoconf,
142make, ncurses etc) if you can not identify a ready-built binary
143package that suits your environment it will be easy to build one from sources
144found "at the usual places", and may be easy to arrange that the resulting
145binaries are on your PATH and libraries somewhere where they will be found.
146But in such a case you may end up needing to hand-patch some of the Makefiles
147here.
148
149If you have run the main CSL/Reduce configure step, as in
150   ./configure --with-csl
151and tried "make" at a stage when you do not have all relevant headers and
152libraries installed then the build can fail part way through in a messy way.
153In principle you can check ALL the logs and work out what happened, but in
154reality that can be daunting. Furthermore it can get in a state where a
155subsequent use of "make" fails in an unhelpful manner. Experts can patch
156things up and recover, but the simplest approach in case of confusion is
157   rm -rf cslbuild
158   ./configure --with-csl
159   make
160where all the partially build stuff that had accumulated in cslbuild is
161discarded and the configuration and compilation is started afresh. Obviously
162you will not delete that directory if you have put important files of your
163own there!
164
165A feature of subversion is that if you change any file locally then your local
166edit is interpreted as a possibly valuable update that you may at some stage
167contribute back into the project. This is good, but it means that if you
168accidentally corrupt a local copy of some file then subversion will NOT
169automatically repair it. So if you have just recently started with Reduce and
170something odd is happening it may make sense to get yourself back in lock-step
171with the central repository. You are provided with two scripts
172   scripts/make-pristine.sh
173   scripts/stamp.sh
174The first of those merely issues the subversion commands that discard all local
175changes you have made to bring everything into step. The second updates the
176time-stamps on various configuration files so that when you run "configure"
177it should not attempt to use autoconf and automake locally, but instead should
178be content with the files as fetched. These two scripts can avoid confusion
179early on. Once you are fully working and especially if you are doing your own
180development within Reduce you will not wish to use them.
181
182
183You can fetch or update REDUCE in one of (at least) two ways
184
185(1) Fetch a file from the Sourceforge download area, eg from the
186reduce-algebra-source section. Unpack it. Note that the full archives
187at sourceforge are updated sporadically and not to any coherent schedule,
188so what you get could be a little out of date. Thus this scheme is not
189recommended!
190
191OR
192
193(2) Use subversion to fetch or refresh a copy from the master site.
194        svn checkout \
195           svn://svn.code.sf.net/p/reduce-algebra/code/trunk \
196           reduce-algebra
197    That should create a directory called "reduce-algebra" for you.
198    To refresh your files, enter the reduce-algebra directory and go
199        svn update
200    You can check the documentation of subversion (svn) to discover
201    what further options and possibilities tare provided. Two notable
202    advanntages of this are (a) "svn update" lets you refresh your copy
203    to match the very latest one available without needing to fetch
204    everything again afresh and (n) "svn -r NNNN update" lets you update
205    you local copy to match "revision NNNN", a possibly older copy of
206    everything, so if the main development version is even temporarily
207    broken (that should only happen accidentally!) you can fetch older
208    versions for comparison.
209
210The version fetched and updated using subversion (hah - note that you
211need "subversion" installed on your computer to do this!) will be fully
212up to date. That naturally means that at some moments it will include
213changes that temporarily break it, but in general any such should be
214corrected fairly rapdily. Furthermore by browsing the documentation of
215subversion you can find out how to check out a version from say 2 weeks
216ago (or indeed any historical varient) if needbe.
217
218
219
220The simplest way version of the build process is to select the directory
221where REDUCE was unpacked as current and issue one of the command
222         ./configure --with-csl
223     OR  ./configure --with-psl
224(or first one of those then the other)
225
226It ought not to be necessary to provide any other options to the configure
227script or to pre-set environment variables, but for experts there are (of
228course) many opportunities for customisation. If you find you are on a platform
229where simple use of the configure script is insufficient please report that
230so that things can be updated and users in the future will come closer to
231find that everything works first time without fuss.
232
233Follow that by the command "make" and if all goes well everything relevant
234will be compiled. But at least in the CSL case please try
235scripts/csl-sanity-check.sh first - it may save you a lot of agony.
236
237If you build both the CSL and PSL versions then it can be a comfort to
238run
239    scripts/testall.sh
240which runs all the various test scripts and displays a report showing any
241places where the output on your machine does not match reference versions
242of the logs. Directories called csl-times and psl-times end up with the
243log output. In some cases log discrepancies are expected! For instance some
244of the test files generate timing reports so their output varies depending on
245the speed or size of your computer. In other cases improvements to the
246system may change test output but the reference logs may not have been
247updated to reflect it. Some logs are there to highlight difference between
248detailed behaviour of CSL and PSL that are not hugely important but that
249may be addressed at some stage in the future.
250
251For (some sort of) convenience a script "rebuild.sh" in the top level of
252the distribution tries to do this for both PSL and CSL and it then leaves
253overall log files also at the top level.
254
255You can then run REDUCE using the command
256    bin/redcsl
257or
258    bin/redpsl
259
260[At present I do not in any way guarantee (and I probably do not even expect)
261that the usual "configure" option "--prefix=..." or the idiom "make install"
262will behave as you might have hoped. Indeed there are reports that at
263present "make install" is deeply broken and SHOULD NOT BE ATTEMPTED.
264But there is scripts/mk-snapshots.sh which is used to build the distribution
265snapshots and those can then be installed.]
266
267Any machine you are on is attributed an identity such as x86_64-pc-windows
268or x86_64-unknown-ubuntu10.10. Note that this is slightly more specific than
269the normal GNU host triple in that it attempts to include the name of a Linux
270distribution. Binaries are actually built within cslbuild/<triple> or
271pslbuild/<triple>. This arrangement is intended to be helpful if you have one
272file-space shared between several machine that may have different
273architectures. So the scripts like bin/redcsl deduce where to look and
274chain to binaries there. In the CSL case you could make a symbolic link
275as in "ln -s .../trunk/cslbuild/<triple>/csl/reduce XXXX" where XXXX is some
276location on your PATH which then lets you launch Reduce more directly. Reduce
277needs some resources in the same directory as the main executable so merely
278copying <triple>/csl/reduce to somewhere else is not liable to be a good idea.
279
280Logs from building and testing Reduce end up in the directory where the
281main binary gets created, so if things go wrong that is where you may wish
282to look.
283
284
285
286There are a number of optional ways in which configuration may be customised:
287         ./configure --with-csl --enable-debug
288   Enable "gcc -g" compilation of the C parts of CSL so that gdb can be
289   used to debug things.
290
291         ./configure --with-csl --without-gui
292         ./configure --with-csl --with-wx
293   By default the CSL version build in support for a GUI using the FOX
294   toolkit. If for some reason that is not required or can not be supported
295   then "--without-gui" removes it. There are some plans to change to use
296   wxWidgets rather than FOX, and "--with-wx" enables the experimental build
297   for that. At the time of writing the code compiles but is significantly
298   unfinished. Volunteers to help complete it would be useful! But neither of
299   these options are a very good idea for ordinary users!
300
301   There are other options, many of which are experimental or historical.
302   See "./configure --help" for a definitive list.
303
304
305Developers and some more ambitious users may need to understand the
306directory layout in more detail. The document "Inside Reduce" the
307the "primers" part of the Reduce documentation directory may provide
308useful guidance.
309The main directories supplied are as follows, where MACHINE stands for
310a machine identification, eg x86_64-pc-windows-debug.
311
312 trunk                    The main version of everything
313   bin                    Scripts to launch REDUCE etc
314   csl/cslbase            Main CSL Lisp sources
315       fox                the FOX GUI toolkit, an LGPL package
316   cslbuild/generated-c   Part of REDUCE compiled into C
317            MACHINE/csl   where REDUCE binaries are built
318                    fox   where the FOX GUI toolkit is built
319   packages/alg           REDUCE sources, on package per directory
320            ...
321            ztrans
322   psl/psl-amd64          Ready-build binaries of the PSL Lisp system ...
323       ...                ...
324       psl/win32          ... for a variety of architectures
325   pslbuild/MACHINE/.     where REDUCE gets built
326                    psl   copy of relevant architecture-specific PSL
327                    red   REDUCE built binary "fasl" and image files
328                    deps  used to record dependencies in the build
329   scripts                scripts used to maintain the system.
330
331
332
333If you are working on just one platform and have completed the configuration
334and done an initial build you may like to select either cslbuild/MACHINE/csl
335or pslbuild/MACHINE as your current directory: the Makefile that ends up there
336is the main one used for rebuilding the system.
337
338
339For special purposes you may wish to investigate the csl/jlisp directory (all
340Reduce runnable via Java - distinctly slower and at present the user interface
341is not well sorted, but it might be fun) and csl/new-embedded (a kit for
342making a simple small C-coded version for potential use as a component in
343some other software rather than a free-standing complete program). Both of
344these are for experienced programmers who want to use them in some broader
345project rather than being fully supported variants on Reduce itself.
346
347There are also "spins" of Reduce by way of extra files and scripts that have
348made it possible to build the system on other Lisps, from Common Lisp as
349far as emacs lisp. There are a range of alternative interfaces for both
350console and GUI purposes in varying states of support and maturity.
351
352
353The more alive the Reduce project is the more you can expect there to be
354additions, changes and enhancements but please understand that these all
355carry risk of transient introduction of bugs. Report trouble to us via
356Sourceforge and when and if we can we will fix them. But all the source code
357is there so you can also join in the debugging and propose fixes (please!)
358
359
360
361A C Norman. July 2008. Updated Jan 2009, September 2010, March 2011,
362            September 2014, January 2015, June 2020.
363
364
365
366