This is a kit from which a CSL version of Reduce can be made with the least
possible complication and with the least reasonable reliance on system
support. It builds in a way that might suit small platforms, and so will be
slower than the normal version of reduce.
It does not provide a GUI or any other clevers. It is expected that it JUST
needs a bunch of files of C++ code to be compiled and linked together. You
should not expect "help" capability etc, but the ALGEBRA bits of Reduce
should work the way they always have.

This is at present set up so that it ONLY compiles using "g++" or "clang++"

When this was set up in 2009 CSL was self-contained. Now it is 2016 and the
code relies on external libraries: crlibm and SoftFloat-3a. They are both
partially included here, but the copy of reduce build avoids using them to
simplify things a bit. That will means that the accuracy of some floating
point elementary functions will be set by the system libraries used.

At the top level you can go either "make reduce" or "make minireduce" and
those use the reduce-image and minireduce-image directories to make either
a more or less full version of Reduce or one with a much smaller collection
of packages (which may be of use if you do not need advanced feature and you
care about memory footprint). After one of those has been built you can
go "make proc" which makes a "procedural" Reduce in the "procedural"
directory. This illustrates how Reduce can be driven from external C or
C++ code.

The code here is NOT intended for making systems for distribution or release
to end users. Before anything like that the very simple Makefiles used here
would need to be turned into something rather closer to the autoconf and
automake supported build scheme used for the full code, so that platform
dependencies (among other things 32 vs. 64-bit) would be handled neatly.
User interfaces and error recovery will be weak here. The fixed files here
called "config.h" give some indication of the range of issues that full
system support might involve. It is also very plausible that the code here
would (for many uses) want to be build not in the form of a free-standing
application, but as a dynamically loadable library. Part of the idea of
having simple and rather rigid Makefiles here is to provide those who might
want to do things like that a simple basis to start their work from.

If you are going to end up producing a version of Reduce that is for general
distribution (but with your own custom interfaces or whatever) I hope that
the scheme as set up here will let you get started, but PLEASE when you get
towards something for release look into something using the proper full
build mechanism.




                                 Arthur Norman.   July 2009 - March 2016
                                                  updated May 2019

