aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/Makefile.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra/Makefile.in')
-rw-r--r--src/algebra/Makefile.in89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/algebra/Makefile.in b/src/algebra/Makefile.in
index 633bd221..67abf263 100644
--- a/src/algebra/Makefile.in
+++ b/src/algebra/Makefile.in
@@ -1,3 +1,92 @@
+## Copyright (c) 1991-2002, The Numerical Algorithms Group Ltd.
+## All rights reserved.
+## Copyright (C) 2007-2010, Gabriel Dos Reis.
+## All rights reserved.
+##
+## Redistribution and use in source and binary forms, with or without
+## modification, are permitted provided that the following conditions are
+## met:
+##
+## - Redistributions of source code must retain the above copyright
+## notice, this list of conditions and the following disclaimer.
+##
+## - Redistributions in binary form must reproduce the above copyright
+## notice, this list of conditions and the following disclaimer in
+## the documentation and/or other materials provided with the
+## distribution.
+##
+## - Neither the name of The Numerical ALgorithms Group Ltd. nor the
+## names of its contributors may be used to endorse or promote products
+## derived from this software without specific prior written permission.
+##
+## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+## IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+## PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+## OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+## NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+##
+
+# * Adding new algebra
+#
+# This is a complex process by its very nature. Developers and Maintainers
+# who undertake the process need to understand quite a lot of detail. The
+# ultimate steps to add algebra are tedious but simple. Note that only
+# algebra code that gets shipped with the system needs to undergo this
+# process. User code can be compiled once the distributed algebra exists
+# and does not need either this Makefile or this installation process.
+#
+# NOTE: If you add new algebra to this file you must also update
+#
+# \File{exposed.lsp.pamphlet}
+#
+# otherwise the new algebra won't be loaded by the interpreter when needed.
+#
+# The first idea that you need to understand is the overall process
+# of adding algebra code. Lets assume that you have a brand new spad
+# file, called \File{foo.spad} containing a simple domain `BAR'. The
+# steps in the process of adding this file are:
+# 1. Find out where the algebra code lives in the lattice.
+# You do this by
+# a. starting a new interpsys session
+# b. collecting all the names of the algebra files BAR requires
+# c. determining which layer each of the required files resides
+# d. determine the highest layer (e.g. 14) that contains
+# the required files
+#
+# 2. insert the documentation into the next layer (e.g. 15)
+#
+# 3. insert the [[\${OUT}/BAR.$(FASLEXT)]] file into the layer's file list
+#
+# * Rebuilding the algebra from scratch
+#
+# Compile order is important. Here we try to define the ordered lattice
+# of spad file dependencies. However this is, in reality, a graph rather
+# than a lattice. In order to break cycles in this graph we explicitly
+# cache a few of the intermediate generated lisp code for certain files.
+# These are marked throughout (both here and in the various pamphlet
+# files) with the word {\bf BOOTSTRAP}.
+#
+# If we take a cycle such as `RING' we discover that in order to
+# compile the spad code we must load the compiled definition of [[RING]].
+# In this case we must compile the cached lisp code before we try to
+# compile the spad file.
+#
+# It is highly recommended that you try to become a developer of OpenAxiom
+# and read the archived mailing lists before you decide to change a
+# cached file. In the fullness of time we will rewrite the whole algebra
+# structure into a proper lattice if possible. Alternatively we'll
+# reimplement the compiler to handle graphs. Or deeply adopt the
+# extensible domains. Whatever we do will be much discussed (and cause
+# much disgust) around the campfire. If you come up with a brilliant
+# plan that gets adopted we'll even inscribe your name on a log and add
+# it to the fire.
+
IN=$(srcdir)
OUT=$(axiom_targetdir)/algebra