diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/interp/Makefile.pamphlet | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/interp/Makefile.pamphlet')
-rw-r--r-- | src/interp/Makefile.pamphlet | 2835 |
1 files changed, 2835 insertions, 0 deletions
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet new file mode 100644 index 00000000..a5024ddb --- /dev/null +++ b/src/interp/Makefile.pamphlet @@ -0,0 +1,2835 @@ +%% Oh Emacs, this is a -*- Makefile -*-, so give me tabs. +\documentclass{article} +\usepackage{axiom} + +\title{\File{src/interp/Makefile} Pamphlet} +\author{Timothy Daly \and Gabriel Dos~Reis} + +\begin{document} +\maketitle + +\begin{abstract} +\end{abstract} + +\tableofcontents +\eject + +\begin{verbatim} +notes for understanding this makefile: +re: postpar.clisp and parse.clisp stanzas: +NOTE: the .clisp file is copies back into the src directory so that +it is possible to create a new obootsys system from scratch for a +new platform. parse.clisp needs to be compiled in a depsys. +one thing need to be done to create an obootsys by hand: + parse and postpar must be loaded along with the depsys files + into a bare lisp system. +if these two things are done then a obootsys image can be bootstrapped +to a new platform. + +IMPORTANT: all source file names in this Makefile must be lowercase + This is for cross-platform compatibility and also makes getting + them into Lisp much easier at the Makefile level. + +\end{verbatim} + + +\section{The Environment} + +We define 3 directories for this build. The first two are +the traditional {\bf IN}, which is where the source pamphlets are, +and {\bf OUT} which is where we will put the binaries. + +In this case the {\bf IN} files are usually written in Boot \cite{2}. +These will be compiled in a \Tool{bootsys} image to translate from +Boot to Common Lisp. + +\subsection{Documentation} + +The dvi files will be generated from the pamphlet files in the +final ship \File{doc/src/} directory. Since they are system independent +but machine generated and part of the final ship they will exist +in the [[\$(axiom_target_docdir)/src/interp/]] directory. + +<<environment>>= +IN=$(srcdir) +DOC=$(axiom_target_docdir)/src/interp +BOOK=$(axiom_target_docdir) + +# Command to translate Boot to Common Lisp +BOOT_TO_LISP = $(BOOTSYS) -- --translate $< + +# Command to translate Common Lisp to native object code +COMPILE_LISP = $(DEPSYS) -- --compile --output=$@ $< +@ + + +\subsection{Autloload} + +In order to minimize the size of the Axiom image at load time +we put some of the compiled files into a separate directory +that will be autoloaded on demand. This directory of code +will be shipped with the final system and so it belongs in +the [[$(axiom_targetdir)]] subtree. +<<environment>>= +AUTO=$(axiom_targetdir)/autoload + +autoload_objects = + +@ + + +\subsection{Initial Lisp image} + +We need a raw Lisp image --- running on the build platform --- +that we can use as a base to construct +the other images. This is called {\bf LISPSYS} and is located in the +build platform sub-directory. +<<environment>>= +# Build platform-dependent Lisp image, at the base of other +# derived Lisp images (depsys, interpsys, AXIOMsys) +LISPSYS= $(axiom_build_bindir)/lisp + +@ + +\subsection{Boot translator} + +Most of the interpreter is written in the Boot programming language. +Thus we need a program to translate Boot to Common +Lisp. That program is called the {\bf BOOTSYS} image (because the +translator is written in {\bf boot} and needs to translate +itself to bootstrap the system). This image is assumed to +have been built (on the build platform) by a previous step in the +make process. +<<environment>>= +BOOTSYS= $(axiom_build_bindir)/bootsys + +@ + +Note also that another translator (built into [[depsys]]) translates +a variant og Boot (called ``old Boot'') to Common Lisp. + + +\subsection{The old Boot translator} + +<<environment>>= +DEPSYS = ./depsys +@ + +Some of the Common Lisp code we compile uses macros which +are assumed to be available at compile time. The [[DEPSYS]] +image is created to contain the compile time environment +and saved. Furthermore, it is also used to translate codes written +in ``old Boot'' to Common Lisp. That translator is in the process of +being phased out in favor of the ``new Boot'' translator found in +\File{src/boot/}. + +\subsubsection{Structure of [[depsys]]} + +The [[depsys]] image is made of the following Lisp source files + +\begin{description} +\item[Interpreted Lisp source files] + The following files are currently part of [[depsys]] in interpreted + form. The exact reasons for that are not well articulated. + + \begin{description} + \item[\File{nocompil.lisp}] This file defines obscure functions + that seem to be there only for obscure reasons. Most of them are not + really needed for translating Boot codes. + + \item[\File{bookvol5.lisp}] This file defines functions for + the Spad interpreter. None of which seems relevant for translating + Boot codes to Common Lisp. + + \item[\File{util.lisp}] This file defines various ``system-level'' + helper functions, for building [[depsys]], [[interpsys]], etc. + + \item[\File{vmlisp.lisp}] This is a collection of various utility + functions, encapsulations of variabilities of Lisp implementations. + All those symbols are defined in the package [[VMLISP]]. + It needs some strip down, and possibly have its contents moved + to the package [[BOOT]]. + + \item[\File{ggreater.lisp}] This file defines various orderings + on collections and other aggregates. Its content is defined in the + package [[VMLISP]]. + + \item[\File{hash.lisp}] This file defines a ``hash table'' module. + Its content is defined in package [[VMLISP]]. + + \item[\File{bootfuns.lisp}] This file collects forward references + of functions that are needed in the [[BOOT]] package, to be defined + latter. It is not at all clear that this file is needed to + build the Boot to Common Lisp translator. Its content is + defined in package [[BOOT]]. + + \item[\File{union.lisp}] This file defines functions that + compute set-theoretic operations (union, difference, intersection, etc.). + Its content is in package [[VMLISP]]. + + \item[\File{nlib.lisp}] This file defines to work around problems + with GCL when compiling Spad files. It is not necessary for + translating Boot codes to Common Lisp. Its content is in package + [[VMLISP]]. + + \item[\File{macros.lisp}] This file collects various helper macros + and functions for Boot and Spad codes. + + \item[\File{comp.lisp}] This file defines several functions that + desugar Boot and Spad codes; in particular, they infer local + variables from their position in assignment expressions. Its + content is defined in package [[BOOT]]. + + \item[\File{spaderror.lisp}] This file defines error handling functions + that are useful only for Spad codes -- not for translating Boot codes. + Its content is defined in package [[BOOT]]. + + \item[\File{debug.lisp}] This file defines debug utilities for + essentially Spad codes. Its content is defined in package [[BOOT]]. + + \item[\File{spad.lisp}] This files defines the entry points for + processing Spad and Boot codes. Its content is defined in package + [[BOOT]]. + + \item[\File{bits.lisp}] This file implements a ``bit vector'' + data type. Its content is in package [[BOOT]]. + + \item[\File{setq.lisp}] This file defines several global + variables. Its content is defined in package [[BOOT]]. + + \item[\File{property.lisp}] This file defines properties of + Spad and Boot tokens, as well as several constructors. Its + content is defined in package [[BOOT]]. + + \item[\File{unlisp.lisp}] This file attempts to define interfaces + to the Operating System, that are not found in strict ANSI + Common Lisp (though they may be present as extensions with + varying spellings.). Its content is defined in package [[BOOT]]. + + \item[\File{foam\_l.lisp}] This file defines the FOAM functions. + The packages [[FOAM]] and [[FOAM-USER]] are defined here. + It is not needed for translating Boot codes to Common Lisp. + + \item[\File{axext\_l.lisp}] This file defines various macros and + functions for interoperability between Aldor and Axiom. Not needed + for translating Boot codes to Common Lisp. + \end{description} + +\item[Compiled Lisp source files] + \begin{description} + \item[\File{parsing.lisp}] + + \item[\File{metalex.lisp}] + + \item[\File{bootlex.lisp}] + + \item[\File{newaux.lisp}] + + \item[\File{preparse.lisp}] + + \item[\File{postprop.lisp}] + + \item[\File{def.lisp}] + + \item[\File{metameta.lisp}] + + \item[\File{fnewmeta.lisp}] + \end{description} + +\item[Compiled Boot source files] + \begin{description} + \item[\File{postpar.boot}] + + \item[\File{parse.boot}] + + \item[\File{clam.boot}] + + \item[\File{slam.boot}] + + \item[\File{g-boot.boot}] + + \item[\File{c-util.boot}] + + \item[\File{g-util.boot}] + \end{description} + +\end{description} + +% +<<environment>>= +depsys_lisp_compiled_sources += parsing.lisp metalex.lisp bootlex.lisp \ + newaux.lisp preparse.lisp postprop.lisp def.lisp metameta.lisp \ + fnewmeta.lisp + +depsys_lisp_sources = $(depsys_lisp_noncompiled_sources) \ + $(depsys_lisp_compiled_sources) + +depsys_boot_sources = postpar.boot parse.boot clam.boot slam.boot \ + g-boot.boot g-error.boot c-util.boot g-util.boot +@ + +The {\bf DEP} variable contains the list of files that +will be loaded into {\bf DEPSYS}. Notice that these files +are loaded in interpreted form. We are not concerned about +the compile time performance so we can use interpreted code. +We do, however, care about the macros as these will be +expanded in later compiles. All macros are assumed to be +in this list of files. +<<environment>>= +DEP= nlib.lisp \ + macros.lisp comp.lisp \ + spaderror.lisp debug.lisp \ + spad.lisp bits.lisp \ + setq.lisp property.lisp \ + unlisp.lisp foam_l.lisp \ + axext_l.lisp + +depsys_lisp_macro_sources = vmlisp.lisp ggreater.lisp hash.lisp \ + bootfuns.lisp union.lisp nlib.lisp macros.lisp \ + comp.lisp spaderror.lisp debug.lisp \ + spad.lisp bits.lisp setq.lisp property.lisp \ + unlisp.lisp foam_l.lisp axext_l.lisp + +depsys_lisp_noncompiled_sources += $(depsys_lisp_macro_sources) +depsys_lisp_SOURCES = $(addsuffix .pamphlet, $(depsys_lisp_sources)) +@ + +Once we've compile all of the Common Lisp files we fire up +a clean lisp image called {\bf LOADSYS} (from the build platform), load all +of the +final executable code and save it out as {\bf SAVESYS}. This image +is used to bootstrap the Algebra files and generate the +databases. +The {\bf SAVESYS} image is copied to the [[$(axiom_target_bindir)]] +subdirectory and becomes the axiom executable image. Technically, that is +not right because the host plaform may not be the same as the build +platform. However, we don't yet support cross compilation, so that +is alright for the time being. +<<environment>>= +LOADSYS= $(axiom_build_bindir)/lisp$(EXEEXT) +SAVESYS= interpsys$(EXEEXT) +AXIOMSYS= $(axiom_target_bindir)/AXIOMsys$(EXEEXT) + +@ + +\subsection{Debugging [[depsys]]} + +Occasionally we need to really get into the system internals. +The best way to do this is to run almost all of the lisp code +interpreted rather than compiled (note that cfuns.lisp and sockio.lisp +still need to be loaded in compiled form as they depend on the +loader to link with lisp internals). This image is nothing more +than a load of the file \File{src/interp/debugsys.lisp.pamphlet}. If +you need to make test modifications you can add code to that +file and it will show up here. +<<environment>>= +DEBUGSYS=$(axiom_build_bindir)/debugsys$(EXEEXT) + +@ + +These are the files that need to be compiled (in {\bf BOOTSYS}), +loaded into a clean lisp image ({\bf LOADSYS}) and saved as +a runnable \Tool{Axiom} interpreter ({\bf SAVESYS}) usually named +\Tool{interpsys}. Most of these files +are translated from Boot to Common Lisp and then +compiled. There are two exceptions, \File{bootfuns.lisp} +and \File{setq.lisp}. The \File{bootfuns.lisp} \cite{3} file +contains forward references for Boot code. The \File{setq.lisp} +file contains constant initialization code which gains nothing +by being compiled. + +\subsection{The Spad interpreter and compiler} + +The value of the variable [[AXIOMsys_boot_sources]] is the (currently +partial) list of Boot source files that make up the interpreter. +Similarly, the value of the variable [[AXIOMsys_compiled_lisp_sources]] +is the list of Common Lisp source files that are compiled into +the interpreter. Notice that some of these files are loaded (\eg{}, +interpreted) in [[depsys]]. + +<<environment>>= +OBJS= vmlisp.$(FASLEXT) hash.$(FASLEXT) \ + bootfuns.$(FASLEXT) macros.$(FASLEXT) \ + unlisp.$(FASLEXT) setq.$(FASLEXT) \ + astr.$(FASLEXT) bits.$(FASLEXT) \ + alql.$(FASLEXT) buildom.$(FASLEXT) \ + cattable.$(FASLEXT) \ + cformat.$(FASLEXT) cfuns.$(FASLEXT) \ + clam.$(FASLEXT) clammed.$(FASLEXT) \ + comp.$(FASLEXT) foam_l.$(FASLEXT) \ + compat.$(FASLEXT) compress.$(FASLEXT) \ + cparse.$(FASLEXT) cstream.$(FASLEXT) \ + database.$(FASLEXT) \ + debug.$(FASLEXT) dq.$(FASLEXT) \ + fname.$(FASLEXT) format.$(FASLEXT) \ + g-boot.$(FASLEXT) g-cndata.$(FASLEXT) \ + g-error.$(FASLEXT) g-opt.$(FASLEXT) \ + g-timer.$(FASLEXT) g-util.$(FASLEXT) \ + ggreater.$(FASLEXT) \ + hypertex.$(FASLEXT) i-analy.$(FASLEXT) \ + i-code.$(FASLEXT) i-coerce.$(FASLEXT) \ + i-coerfn.$(FASLEXT) i-eval.$(FASLEXT) \ + i-funsel.$(FASLEXT) bookvol5.$(FASLEXT) \ + i-intern.$(FASLEXT) i-map.$(FASLEXT) \ + i-output.$(FASLEXT) i-resolv.$(FASLEXT) \ + i-spec1.$(FASLEXT) \ + i-spec2.$(FASLEXT) i-syscmd.$(FASLEXT) \ + i-toplev.$(FASLEXT) i-util.$(FASLEXT) \ + incl.$(FASLEXT) int-top.$(FASLEXT) \ + intfile.$(FASLEXT) \ + lisplib.$(FASLEXT) macex.$(FASLEXT) \ + match.$(FASLEXT) \ + monitor.$(FASLEXT) msg.$(FASLEXT) \ + msgdb.$(FASLEXT) nci.$(FASLEXT) \ + newaux.$(FASLEXT) newfort.$(FASLEXT) \ + nlib.$(FASLEXT) nrunfast.$(FASLEXT) \ + nrungo.$(FASLEXT) nrunopt.$(FASLEXT) \ + nruntime.$(FASLEXT) osyscmd.$(FASLEXT) \ + packtran.$(FASLEXT) pathname.$(FASLEXT) \ + pf2sex.$(FASLEXT) pile.$(FASLEXT) \ + posit.$(FASLEXT) property.$(FASLEXT) \ + ptrees.$(FASLEXT) ptrop.$(FASLEXT) \ + record.$(FASLEXT) \ + rulesets.$(FASLEXT) \ + scan.$(FASLEXT) serror.$(FASLEXT) \ + server.$(FASLEXT) \ + setvars.$(FASLEXT) \ + sfsfun-l.$(FASLEXT) sfsfun.$(FASLEXT) \ + simpbool.$(FASLEXT) slam.$(FASLEXT) \ + sockio.$(FASLEXT) spad.$(FASLEXT) \ + spaderror.$(FASLEXT) \ + template.$(FASLEXT) termrw.$(FASLEXT) \ + trace.$(FASLEXT) \ + union.$(FASLEXT) daase.$(FASLEXT) \ + fortcall.$(FASLEXT) + +interpsys_modules = $(patsubst %.$(FASLEXT), "%", $(OBJS)) + +AXIOMsys_noncompiled_lisp_sources = bootfuns.lisp nocompil.lisp \ + postprop.lisp property.lisp setq.lisp + +AXIOMsys_compiled_lisp_sources = bits.lisp \ + bootlex.lisp cfuns.lisp comp.lisp construc.lisp daase.lisp \ + debug.lisp def.lisp fname.lisp fnewmeta.lisp ggreater.lisp \ + hash.lisp macros.lisp metalex.lisp monitor.lisp newaux.lisp \ + nlib.lisp nspadaux.lisp parsing.lisp \ + patches.lisp preparse.lisp \ + sockio.lisp spad.lisp spaderror.lisp \ + union.lisp util.lisp vmlisp.lisp obey.lisp \ + unlisp.lisp intint.lisp nci.lisp sfsfun-l.lisp \ + axext_l.lisp foam_l.lisp + +AXIOMsys_boot_sources = astr.boot alql.boot buildom.boot cattable.boot \ + cformat.boot clam.boot clammed.boot compat.boot compress.boot \ + cparse.boot cstream.boot database.boot dq.boot format.boot \ + g-boot.boot g-cndata.boot g-error.boot g-opt.boot g-timer.boot \ + g-util.boot hypertex.boot i-analy.boot i-code.boot i-coerce.boot \ + i-coerfn.boot i-eval.boot i-funsel.boot i-intern.boot i-map.boot \ + i-output.boot i-resolv.boot i-spec1.boot i-spec2.boot \ + i-syscmd.boot i-toplev.boot i-util.boot incl.boot int-top.boot \ + intfile.boot lisplib.boot macex.boot match.boot msg.boot \ + msgdb.boot newfort.boot nrunfast.boot nrungo.boot nrunopt.boot \ + nruntime.boot osyscmd.boot packtran.boot pathname.boot \ + pf2sex.boot pile.boot posit.boot ptrees.boot ptrop.boot \ + record.boot rulesets.boot scan.boot serror.boot server.boot \ + setvars.boot sfsfun.boot simpbool.boot slam.boot template.boot \ + termrw.boot trace.boot fortcall.boot +@ + +Before we save the {\bf SAVESYS} image we need to run some +initialization code. These files perform initialization +for various parts of the system. The {\bf patches.lisp} \cite{5} +file contains last-minute changes to various functions and +constants. +<<environment>>= +INOBJS= varini.$(FASLEXT) parini.$(FASLEXT) \ + setvart.$(FASLEXT) intint.$(FASLEXT) \ + xrun.$(FASLEXT) interop.$(FASLEXT) \ + patches.$(FASLEXT) + +IN_modules = $(patsubst %.$(FASLEXT), "%", $(INOBJS)) + +@ + +Certain functions do not need to be in the running system. +If the running image never calls the compiler or does not +use the hypertex browser we will never call the functions +in these files. The code that calls these functions in the +running system will autoload the appropriate files the +first time they are called. Loading the files overwrites +the autoload function call and re-calls the function. +Any subsequent calls will run the compiled code. + +The {\bf OPOBJS} list contains files from the old parser. The use of +``old'' is something of a subtle concept as there were several +generations of ``old'' and all meaning of the term is lost. + +Notice that the object file [[def.$(FASLEXT)]] appears on both the +[[OPBJS]] and [[TRANOBJS]] lists. In normal situation, parsing +precedes translation; consequently the file [[def]] is loaded by the +parser, so that it does not need to be reloaded by the translator. +However, it may theoretically be that a translation could happen without +prior parsing (in case someone types in a parse tree for SPAD code). +Consequently, it must be ensured that [[def.]] is still loaded in that +configuration. In the long term, the autoload machinery need +rethinking. + +<<environment>>= +# These are autloaded old parser files +OPOBJS= ${AUTO}/parsing.$(FASLEXT) ${AUTO}/bootlex.$(FASLEXT) \ + ${AUTO}/def.$(FASLEXT) \ + ${AUTO}/fnewmeta.$(FASLEXT) ${AUTO}/metalex.$(FASLEXT) \ + ${AUTO}/metameta.$(FASLEXT) \ + ${AUTO}/parse.$(FASLEXT) ${AUTO}/postpar.$(FASLEXT) \ + ${AUTO}/postprop.$(FASLEXT) ${AUTO}/preparse.$(FASLEXT) + +autoload_objects += $(OPBJS) +@ + +The {\bf OCOBJS} list contains files from the old compiler. Again, +``old'' is meaningless. These files should probably be autoloaded. +<<environment>>= +OCOBJS= ${AUTO}/apply.$(FASLEXT) ${AUTO}/c-doc.$(FASLEXT) \ + ${AUTO}/c-util.$(FASLEXT) ${AUTO}/profile.$(FASLEXT) \ + ${AUTO}/category.$(FASLEXT) ${AUTO}/compiler.$(FASLEXT) \ + ${AUTO}/define.$(FASLEXT) ${AUTO}/functor.$(FASLEXT) \ + ${AUTO}/info.$(FASLEXT) ${AUTO}/iterator.$(FASLEXT) \ + ${AUTO}/modemap.$(FASLEXT) ${AUTO}/nruncomp.$(FASLEXT) \ + ${AUTO}/package.$(FASLEXT) ${AUTO}/htcheck.$(FASLEXT) \ + ${AUTO}/xruncomp.$(FASLEXT) + +autoload_objects += $(OCOBJS) + +@ + +The {\bf BROBJS} list contains files only used by the hypertex +browser. These files should probably be autoloaded. +<<environment>>= +BROBJS= ${AUTO}/bc-matrix.$(FASLEXT) \ + ${AUTO}/bc-misc.$(FASLEXT) ${AUTO}/bc-solve.$(FASLEXT) \ + ${AUTO}/bc-util.$(FASLEXT) \ + ${AUTO}/ht-util.$(FASLEXT) ${AUTO}/htsetvar.$(FASLEXT) \ + ${AUTO}/ht-root.$(FASLEXT) \ + ${AUTO}/br-con.$(FASLEXT) \ + ${AUTO}/br-data.$(FASLEXT) ${AUTO}/showimp.$(FASLEXT) \ + ${AUTO}/br-op1.$(FASLEXT) ${AUTO}/br-op2.$(FASLEXT) \ + ${AUTO}/br-search.$(FASLEXT) ${AUTO}/br-util.$(FASLEXT) \ + ${AUTO}/topics.$(FASLEXT) ${AUTO}/br-prof.$(FASLEXT) \ + ${AUTO}/br-saturn.$(FASLEXT) + +autoload_objects += $(BFOBJS) + +@ + +The {\bf TRANOBJS} list contains files used by Spad to Aldor convertor. +The files probably are also used by the {\bf boot} +to Common Lisp translator and are probably never used by anyone +but the developers. + +When a user requests converting a file from Spad to Aldor the +function +[[spad2AsTranslatorAutoloadOnceTrigger]] is called triggering +load of this group of files. Loading [[$TRANOBJS]] in turn replaces +many compiler functions by versions contain in this files. + These files should probably be autoloaded +(at least [[${AUTO}/wi1.$(FASLEXT)]] and [[${AUTO}/wi2.$(FASLEXT)]] +(which replace compiler functions) {\em must} be autoloaded). +<<environment>>= +TRANOBJS= ${AUTO}/wi1.$(FASLEXT) ${AUTO}/wi2.$(FASLEXT) ${AUTO}/pspad1.$(FASLEXT) \ + ${AUTO}/pspad2.$(FASLEXT) ${AUTO}/mark.$(FASLEXT) ${AUTO}/nspadaux.$(FASLEXT) \ + ${AUTO}/def.$(FASLEXT) + +autoload_objects += $(TRANOBJS) + +@ + +The {\bf NAGBROBJS} list contains files used to access the +Numerical Algorithms Group (NAG) fortran libraries. +These files should probably be autoloaded. +Note that [[${AUTO}/nag-e02a.$(FASLEXT)]] is not included in this +list as it is a subset of [[${AUTO}/nag-e02.$(FASLEXT)]]. +<<environment>>= +NAGBROBJS= ${AUTO}/nag-c02.$(FASLEXT) ${AUTO}/nag-c05.$(FASLEXT) \ + ${AUTO}/nag-c06.$(FASLEXT) ${AUTO}/nag-d01.$(FASLEXT) \ + ${AUTO}/nag-d02.$(FASLEXT) ${AUTO}/nag-d03.$(FASLEXT) \ + ${AUTO}/nag-e01.$(FASLEXT) ${AUTO}/nag-e02.$(FASLEXT) \ + ${AUTO}/nag-e04.$(FASLEXT) ${AUTO}/nag-f01.$(FASLEXT) \ + ${AUTO}/nag-f02.$(FASLEXT) ${AUTO}/nag-f04.$(FASLEXT) \ + ${AUTO}/nag-f07.$(FASLEXT) ${AUTO}/nag-s.$(FASLEXT) + +autoload_objects += $(NAGBROBJS) + +@ + +The {\bf ASCOMP} list contains files used by the {\bf Aldor} +\cite{5} compiler. These files should probably be autoloaded. +<<environment>>= +ASCOMP= hashcode.$(FASLEXT) as.$(FASLEXT) \ + foam_l.$(FASLEXT) axext_l.$(FASLEXT) + +AS_modules = $(patsubst %.$(FASLEXT), "%", $(ASCOMP)) + +@ + +The {\bf ASAUTO} list contains files used by the {\bf Aldor} +\cite{5} compiler. These files are autoloaded as needed. +<<environment>>= +ASAUTO= ${AUTO}/ax.$(FASLEXT) + +autoload_objects += $(ASAUTO) +@ + +Axiom versions are given as a string of the form: +"Sunday September 21, 2003 at 20:38:05 " +which describe the day, date, and time of the build. +This is used for reporting bugs. It is only partially useful +in identifying which source code was used. Ideally we could create +a tar file of all of the date/time stamps of all of the source files +and use the MD5 hash of that file as the version stamp. Ultimately +though, this would be chasing the elusive "perfect information" idea. + +A new variable [[boot::*build-version*]] is set here and used by the +[[yearweek]] function to display the version number of the Axiom build. +This information is set by hand in the top level Makefile. +<<environment>>= +TIMESTAMP=$(axiom_targetdir)/timestamp +YEARWEEK=(progn (setq boot::timestamp "${TIMESTAMP}") \ + (setq boot::*build-version* "$(PACKAGE_STRING)") \ + (boot::yearweek)) + +@ + +The {\bf .PRECIOUS} setting will keep make from deleting these +images if the build is stopped. Since once they are built they +are likely to be useable we don't need to redo the work if they +exist. +<<environment>>= + +.PRECIOUS: ${DEPSYS} +.PRECIOUS: ${SAVESYS} +.PRECIOUS: ${AXIOMSYS} + +@ + +\section{Codes from Pamphlets} + +As noted earlier, the Boot codes are first extrated from the pamphlet +files: +<<extract source codes>>= +.PRECIOUS: %.boot +%.boot: $(srcdir)/%.boot.pamphlet + $(axiom_build_document) --tangle --output=$@ $< +@ + +The extracted Boot codes are then fed into \Tool{bootsys} which translates +them into Common Lisp codes: +<<extract source codes>>= +.PRECIOUS: %.clisp +%.clisp: %.boot + $(BOOT_TO_LISP) +@ + +The resulting Common Lips codes are, in turn, compiled to object codes +using the \Tool{depsys} image. +<<extract source codes>>= +.PRECIOUS: %.$(FASLEXT) +%.$(FASLEXT): %.clisp + $(COMPILE_LISP) +@ + +Part of the interpreter is written directly in Common Lisp (instead of the +sugared dialect Boot). That part is extracted from the pamphlet files +and compiled to native object code, as usual. +<<extract source codes>>= +# Extract and compile the part of the interpreter written +# in Common Lisp +.PRECIOUS: %.lisp +%.$(FASLEXT): %.lisp + $(COMPILE_LISP) + +%.lisp: $(srcdir)/%.lisp.pamphlet + $(axiom_build_document) --tangle --output=$@ $< +@ + +\section{Proclaim optimization} + +\Tool{GCL}, and possibly other common lisps, can generate much better +code if the function argument types and return values are proclaimed. + +In theory what we should do is scan all of the functions in the system +and create a file of proclaim definitions. These proclaim definitions +should be loaded into the image before we do any compiles so they can +allow the compiler to optimize function calling. + +\Tool{GCL} has an approximation to this scanning which we use here. + +The first step is to build a version of GCL that includes [[gcl_collectfn]]. +This file contains code that enhances the lisp compiler and creates a +hash table of structs. Each struct in the hash table describes information +that about the types of the function being compiled and the types of its +arguments. At the end of the compile-file this hash table is written out +to a ".fn" file. + +The second step is to build axiom images (depsys, interpsys, AXIOMsys) +which contain the [[gcl_collectfn]] code. + +The third step is to build the system. This generates a .fn file for +each lisp file that gets compiled. + +The fourth step is to build the proclaims.lisp files. There is one +proclaims.lisp file for +boot (boot-proclaims.lisp), +interp (interp-proclaims.lisp), and +algebra (algebra-proclaims.lisp). + +To build the proclaims file (e.g. for interp) we: +\begin{verbatim} +(a) cd to obj/linux/interp +(b) (yourpath)/axiom/obj/linux/bin/lisp +(c) (load "sys-pkg.lsp") +(d) (mapcar #'load (directory "*.fn")) +(e) (with-open-file (out "interp-proclaims.lisp" :direction :output) + (compiler::make-proclaims out)) +\end{verbatim} +Note that step (c) is only used for interp, not for boot. + +The fifth step is to copy the newly constructed proclaims file back +into the src/interp diretory (or boot, algebra). + +\section{The warm.data file} + +This is a file of commands that will be loaded into interpsys +at the last minute. It execute functions that will likely be +used in a running system so all of the required routines will +be in the lisp image thus minimizing their startup time. +<<warm.data.stanza>>= +../algebra/warm.data: $(srcdir)/Makefile.pamphlet + @ echo 2 building warm.data + $(axiom_build_document) --tangle=warm.data --output=$@ $< + +@ + +<<warm.data>>= +(in-package 'boot) +(setq |$topicHash| (make-hash-table)) +(setf (gethash '|basic| |$topicHash|) 2) +(setf (gethash '|algebraic| |$topicHash|) 4) +(setf (gethash '|miscellaneous| |$topicHash|) 13) +(setf (gethash '|extraction| |$topicHash|) 6) +(setf (gethash '|conversion| |$topicHash|) 7) +(setf (gethash '|hidden| |$topicHash|) 3) +(setf (gethash '|extended| |$topicHash|) 1) +(setf (gethash '|destructive| |$topicHash|) 5) +(setf (gethash '|transformation| |$topicHash|) 10) +(setf (gethash '|hyperbolic| |$topicHash|) 12) +(setf (gethash '|construct| |$topicHash|) 9) +(setf (gethash '|predicate| |$topicHash|) 8) +(setf (gethash '|trignometric| |$topicHash|) 11) + +@ + +\section{UNUSED} + +These files were in the interp distribution from NAG but have +no purpose at the moment. This belief is no doubt due to my +lack of understanding. Rather than erase them they are documented +here for future reference. [[${DOC}/nag-e02a.boot.dvi]] and +[[${DOC}/nag-e02b.boot.dvi]] appear to be two halfs of the file +[[${DOC}/nag-e02.boot.dvi]] and have been removed. +<<environment>>= +UNUSED= ${DOC}/anna.boot.dvi ${DOC}/construc.lisp.dvi \ + ${DOC}/domain.lisp.dvi ${DOC}/guess.boot.dvi \ + ${DOC}/interp-fix.boot.dvi \ + ${DOC}/nhyper.boot.dvi ${DOC}/pf2atree.boot.dvi \ + ${DOC}/redefs.boot.dvi ${DOC}/word.boot.dvi + +@ + +\section{Building DEPSYS} + +\begin{verbatim} +NOTES: depsys proceeds all else. it is the compile-time environment +for all interpreter code. +[[OLD-BOOT::BOOT]] emulates the new boot parser command [[BOOTTOCL]]. since +we eventually plan to move to the new boot parser this function +should disappear. +the load of postpar and parse (without extensions) allows the .${LISP} form +to be loaded in a virgin system. however, if depsys is recreated then +the compiled form will get loaded. +\end{verbatim} + +\subsection{save depsys image} + +Once the appropriate commands are in the [[makedep.lisp]] file +we can load the file into an initial Lisp image and save it. +In freebsd we cannot do this so we have to use +a much more complicated procedure. +This code used to read: +\begin{verbatim} +<<save depsys image>>= + ../lisp/base-lisp$(EXEEXT) -- --make --output=$@ \ + --load-directory=. makedep.lisp +@ +\end{verbatim} + +Now game is much more difficult. +\begin{verbatim} + + '(progn \ + +\end{verbatim} + +[[si::*collect-binary-modules*]] instructs GCL to build a list of +binary object modules loaded into the current session with (load ...) +The list will be stored in [[si::*binary-modules*]]. +\begin{verbatim} + + (setq si::*collect-binary-modules* t) \ + (load "makedep.lisp") \ + +\end{verbatim} + +[[compiler::link]] is a lisp interface to the ``ld'' C-based system linker. +The first argumet is a list of [[.o]] binary object modules to link into a +fresh gcl image. The second argument is the name of the new output +image. The third argument is a string containing an initialization +command to run in the new image to reinitialize the heap. The fourth +argument is a list of external C libraries, either static or dynamic, +that one wishes to link into the fresh image. The last argument is a +flag which indicates whether GCL should initialize all of the freshly +linked in new lisp modules, or whether it should transparently +redirect load calls in the new image to initialization calls for the +already linked in module. + +Some lisp systems, such as acl2, have a complex heap initialization, +in which load calls must be interspersed with other form evaluation +comprising the logic of the heap construction. Others, such as +maxima, have no such complex initialization sequence. +\begin{verbatim} + + (compiler::link \ + +\end{verbatim} +[[si::*binary-modules*]] here has the list of compiled lisp binary module +.o files loaded by makedep.lsp above. +\begin{verbatim} + + (remove-duplicates si::*binary-modules* :test (quote equal)) \ + +\end{verbatim} + +The name of the output image. +\begin{verbatim} + + "$(DEPSYS)" \ + +\end{verbatim} + +This will be run in the newly linked sub-image. +\begin{verbatim} + + (format nil "\ + +\end{verbatim} + +Collect loaded binary modules again to make sure that there are none, +as all should be already linked in via ld. For error checking +purposes. +\begin{verbatim} + +(setq si::*collect-binary-modules* t) \ + +\end{verbatim} + +We need to find [[gcl_collectfn.lsp]], so set the [[*load-path*]], and make +sure the source, not the binary, form is loaded here, as we're only +using this entire sequence on machines which cannot load binary object +modules and preserve them in saved images. +\begin{verbatim} + +(let ((si::*load-path* (cons ~S si::*load-path*))\ + (si::*load-types* ~S))\ + +\end{verbatim} + +Turn on function analyzation and autoload thereby [[gcl_collectfn.lsp]]. +\begin{verbatim} + +(compiler::emit-fn t))\ + +\end{verbatim} + +Load the heap creation sequence again in the fresh new image, this +time transparently redirecting all calls to load of binary modules +invoked thereby into initialization calls for the already linkned in +module. + +Load has code in it to recognize when a module is already linked in, +and to forgo in this case the actual load and replace with a mere +initialization call instead. +\begin{verbatim} + +(load \"makedep.lisp\")\ + +(gbc t)\ + +\end{verbatim} + +It is an error to load a binary module. Calling load will not +reload them but only run initialization. +Throw an error if we've actually loaded any binary modules. +\begin{verbatim} + +(when si::*binary-modules* \ +(error si::*binary-modules*))\ + +\end{verbatim} + +Unset the binary module collection flags. +\begin{verbatim} + +(setq si::collect-binary-modules* nil si::*binary-modules* nil)\ +(gbc t)\ + +\end{verbatim} + +Turn on SGC (Stratified Garbage Collection) in the final image. This +is a optional gbc algorithm which is suitable for images which will +not grow much further. It marks a large fraction of the heap +read-only, eliminating such pages from the time-consuming gbc +processing. When writes are actually made to such pages, a segfault +is triggered which is handled by a function which remarks the pages +read-write and continues. +\begin{verbatim} + +(when (fboundp (quote si::sgc-on)) (si::sgc-on t))\ + +\end{verbatim} + +This is a flag which instructs the GCL compiler to make unique +initialzation function C names. This is necessary when using ld, as +all function names must be unique. +\begin{verbatim} + +(setq compiler::*default-system-p* t)\ + +si::*system-directory* goes into the *load-path*, and .lsp in the *load-types*. + +" si::*system-directory* (quote (list ".lsp")))\ + +\end{verbatim} +No C libraries to link in here. +\begin{verbatim} + +"" \ + +\end{verbatim} + +Do not run the initialization code for the newly linked in lisp +modules ``by hand'', but rather rely on the transparent load redirection +described above to initialize at the proper moment in the heap +initialization sequence. +\begin{verbatim} + +nil))' | $(LISPSYS)) + +\end{verbatim} +The [[save depsys image]] was supposed to read: +\begin{verbatim} + @ (cd ${OBJ}/${SYS}/bin ; \ + echo '(progn \ + (setq si::*collect-binary-modules* t) \ + (load "makedep.lisp") \ + (compiler::link \ + (remove-duplicates si::*binary-modules* :test (quote equal)) \ + "$(DEPSYS)" \ + (format nil "\ + (setq si::*collect-binary-modules* t) \ + (let ((si::*load-path* (cons ~S si::*load-path*))\ + (si::*load-types* ~S))\ + (compiler::emit-fn t))\ + (load \"makedep.lisp\")\ + (gbc t)\ + (when si::*binary-modules* \ + (error si::*binary-modules*))\ + (setq si::collect-binary-modules* nil si::*binary-modules* nil)\ + (gbc t)\ + (when (fboundp (quote si::sgc-on)) (si::sgc-on t))\ + (setq compiler::*default-system-p* t)\ + " si::*system-directory* (quote (list ".lsp")))\ + "" \ + nil))' | $(LISPSYS)) +\end{verbatim} + +This scheme does not work. It fails during loading with multiple messages +of the form: +\begin{verbatim} +/home/axiom--main--1--patch-33/obj/linux/interp/parse.o(.text+0x5660): In function `init_code': +: multiple definition of `init_code' +/home/axiom--main--1--patch-33/obj/linux/interp/postpar.o(.text+0x4e78): first defined here +\end{verbatim} + +<<depsys>>= +depsys_lisp_sources += parsing.lisp metalex.lisp bootlex.lisp \ + newaux.lisp preparse.lisp postprop.lisp \ + metameta.lisp fnewmeta.lisp + +depsys_boot_sources = postpar.boot parse.boot clam.boot slam.boot \ + g-boot.boot g-error.boot c-util.boot g-util.boot + +depsys_SOURCES = $(depsys_lisp_SOURCES) $(depsys_boot_SOURCES) + +depsys_objects = nocompil.$(FASLEXT) bookvol5.$(FASLEXT) g-error.$(FASLEXT) \ + util.$(FASLEXT) postpar.$(FASLEXT) parse.$(FASLEXT) \ + parsing.$(FASLEXT) metalex.$(FASLEXT) bootlex.$(FASLEXT) \ + newaux.$(FASLEXT) preparse.$(FASLEXT) postprop.$(FASLEXT) \ + metameta.$(FASLEXT) fnewmeta.$(FASLEXT) clam.$(FASLEXT) \ + slam.$(FASLEXT) g-boot.$(FASLEXT) c-util.$(FASLEXT) \ + g-util.$(FASLEXT) + +${DEPSYS}: vmlisp.$(FASLEXT) \ + hash.$(FASLEXT) \ + ggreater.$(FASLEXT) \ + union.$(FASLEXT) \ + bootfuns.$(FASLEXT) \ + ${DEP} \ + nocompil.$(FASLEXT) \ + bookvol5.$(FASLEXT)\ + util.$(FASLEXT) \ + postpar.clisp parse.clisp \ + parsing.lisp metalex.lisp \ + bootlex.lisp newaux.lisp \ + preparse.lisp \ + postprop.lisp def.lisp \ + metameta.lisp fnewmeta.lisp \ + g-error.clisp \ + g-boot.clisp c-util.${LISP} \ + g-util.clisp \ + clam.clisp \ + slam.clisp + @ echo 3 making ${DEPSYS} + @ rm -f makedep.lisp + @ $(mkinstalldirs) $(axiom_build_bindir) + @ echo '(|importModule| "vmlisp")' >> makedep.lisp + @ echo '(|importModule| "hash")' >> makedep.lisp + @ echo '(|importModule| "ggreater")' >> makedep.lisp + @ echo '(|importModule| "union")' >> makedep.lisp + @ echo '(|importModule| "bootfuns")' >> makedep.lisp + @ echo '(|importModule| "nocompil")' >> makedep.lisp + @ echo '(|importModule| "bookvol5")' >> makedep.lisp + @ echo '(|importModule| "util")' >> makedep.lisp + @ echo '(in-package "BOOT")' >> makedep.lisp + @ echo '(build-depsys (quote ($(patsubst %, "%", ${DEP}))) "${AXIOM}")' >> makedep.lisp + @ echo '(unless (probe-file "postpar.$(FASLEXT)") (compile-file "postpar.clisp" :output-file "postpar.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "postpar")' >> makedep.lisp + @ echo '(unless (probe-file "parse.$(FASLEXT)") (compile-file "parse.clisp" :output-file "parse.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "parse")' >> makedep.lisp + @ echo '(unless (probe-file "parsing.$(FASLEXT)") (compile-file "parsing.lisp" :output-file "parsing.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "parsing")' >> makedep.lisp + @ echo '(unless (probe-file "metalex.$(FASLEXT)") (compile-file "metalex.lisp" :output-file "metalex.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "metalex")' >> makedep.lisp + @ echo '(unless (probe-file "bootlex.$(FASLEXT)") (compile-file "bootlex.lisp" :output-file "bootlex.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "bootlex")' >> makedep.lisp + @ echo '(unless (probe-file "newaux.$(FASLEXT)") (compile-file "newaux.lisp" :output-file "newaux.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "newaux")' >> makedep.lisp + @ echo '(unless (probe-file "preparse.$(FASLEXT)") (compile-file "preparse.lisp" :output-file "preparse.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "preparse")' >> makedep.lisp + @ echo '(unless (probe-file "postprop.$(FASLEXT)") (compile-file "postprop.lisp" :output-file "postprop.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "postprop")' >> makedep.lisp + @ echo '(unless (probe-file "def.$(FASLEXT)") (compile-file "def.lisp" :output-file "def.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "def")' >> makedep.lisp + @ echo '(unless (probe-file "metameta.$(FASLEXT)") (compile-file "metameta.lisp" :output-file "metameta.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "metameta")' >> makedep.lisp + @ echo '(unless (probe-file "fnewmeta.$(FASLEXT)") (compile-file "fnewmeta.lisp" :output-file "fnewmeta.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "fnewmeta")' >> makedep.lisp + @ echo '(unless (probe-file "clam.$(FASLEXT)") (compile-file "clam.clisp" :output-file "clam.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "clam")' >> makedep.lisp + @ echo '(unless (probe-file "slam.$(FASLEXT)") (compile-file "slam.clisp" :output-file "slam.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "slam")' >> makedep.lisp + @ echo '(unless (probe-file "g-error.$(FASLEXT)") (compile-file "g-error.clisp" :output-file "g-error.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "g-error")' >> makedep.lisp + @ echo '(unless (probe-file "g-boot.$(FASLEXT)") (compile-file "g-boot.clisp" :output-file "g-boot.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "g-boot")' >> makedep.lisp + @ echo '(unless (probe-file "c-util.$(FASLEXT)") (compile-file "c-util.${LISP}" :output-file "c-util.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "c-util")' >> makedep.lisp + @ echo '(unless (probe-file "g-util.$(FASLEXT)") (compile-file "g-util.clisp" :output-file "g-util.$(FASLEXT)"))' >> makedep.lisp + @ echo '(load "g-util")' >> makedep.lisp +<<save depsys image>> + @rm $(addsuffix .$(FASLEXT), \ + postpar parse parsing metalex bootlex newaux preparse \ + postprop def metameta fnewmeta clam slam g-error \ + g-boot c-util g-util) + @ echo 4 ${DEPSYS} created + + +util.$(FASLEXT): util.lisp bootfuns.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +bookvol5.$(FASLEXT): bookvol5.lisp bootfuns.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +nocompil.$(FASLEXT): nocompil.lisp bootfuns.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +bootfuns.$(FASLEXT): bootfuns.lisp hash.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +hash.$(FASLEXT): hash.lisp vmlisp.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +union.$(FASLEXT): union.lisp vmlisp.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +ggreater.$(FASLEXT): ggreater.lisp vmlisp.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +vmlisp.$(FASLEXT): vmlisp.lisp + $(BOOTSYS) -- --compile --output=$@ $< + +@ + +\section{Building SAVESYS and AXIOMSYS} + +GCL likes to tell you when it has replaced a function call by a +tail-recursive call. This happens when the last form in a function +is a call to the same function. In general, we don't care so we set +compiler::*suppress-compiler-notes* to true in order to reduce the noise. + +Notice that when Axiom uses GCL as the Lisp platform, it is usually not +a good idea to mess with GCL's internal variables. In particular, GCL +has its own idea about what to do with [[si::*system-directory*]], which +should not be set here just because we happen to save an GCL-based image. +Doing otherwise causes havoc. + +<<savesys>>= +makeint.lisp: ${DEPSYS} ${OBJS} bookvol5.$(FASLEXT) util.$(FASLEXT) \ + nocompil.lisp \ + ${OUTINTERP} ${OCOBJS} ${OPOBJS} ${BROBJS} obey.$(FASLEXT) \ + database.date ${INOBJS} ${ASCOMP} ${ASAUTO} \ + ${NAGBROBJS} ${TRANOBJS} \ + ${LOADSYS} \ + $(axiom_targetdir)/algebra/exposed.$(FASLEXT) \ + $(axiom_src_docdir)/msgs/s2-us.msgs \ + ../algebra/warm.data + @ echo 5 invoking make in `pwd` with parms: + @rm -f makeint.lisp + @ echo SYS= ${SYS} + @ echo LISP=${LISP} BYE=${BYE} + $(mkinstalldirs) $(axiom_target_datadir)/msgs + $(INSTALL_DATA) $(axiom_src_docdir)/msgs/s2-us.msgs \ + $(axiom_target_datadir)/msgs + @ echo '(|importModule| "vmlisp")' >> makeint.lisp + @ echo '(|importModule| "hash")' >> makeint.lisp + @ echo '(|importModule| "bootfuns")' >> makeint.lisp + @ echo '(gbc t)' >> makeint.lisp + @ echo '(load "nocompil.lisp")' >> makeint.lisp + @ echo '(|importModule| "bookvol5")' >> makeint.lisp + @ echo '(|importModule| "util")' >> makeint.lisp + @ echo '(in-package "BOOT")' >> makeint.lisp + @ touch ${TIMESTAMP} + @ echo '${YEARWEEK}' >> makeint.lisp + @ echo '(boot::build-interpsys (append (quote ($(interpsys_modules))) (quote ($(AS_modules))) (quote ($(IN_modules)))) (quote ($(patsubst %, "%", ${OPOBJS}))) (quote ($(patsubst %, "%", ${OCOBJS}))) (quote ($(patsubst %, "%", ${BROBJS}))) (quote ($(patsubst %, "%", ${TRANOBJS}))) (quote ($(patsubst %, "%", ${NAGBROBJS}))) (quote ($(patsubst %, "%", ${ASAUTO}))) "${AXIOM}")' >> makeint.lisp + @ echo '(boot::set-restart-hook)' >> makeint.lisp + @ echo '(in-package "BOOT")' >> makeint.lisp + @ echo '(load "../algebra/warm.data")' >> makeint.lisp + @ echo '(boot::|clearClams|)' >> makeint.lisp + @ echo '(load "obey")' >> makeint.lisp + @ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> makeint.lisp + @ echo '#+:akcl (si::gbc-time 0)' >> makeint.lisp + @ echo '(gbc t)' >> makeint.lisp + +${SAVESYS}: makeint.lisp + AXIOM="$(AXIOM)" DAASE="$(axiom_src_datadir)" \ + $(LOADSYS) -- --make --output=$@ --main="BOOT::RESTART" \ + --load-directory=. makeint.lisp + @ echo 6 ${SAVESYS} created + $(mkinstalldirs) $(axiom_target_bindir) +@ + +\section{Building SAVESYS and AXIOMSYS} + +We want to cache database data in the final image, so we dump it only +after databases are build. +Note that having dependency on databases is not enough, since databases +are re-generated after leaving \File{interp/} directory. + +<<axiomsys>>= +.PHONY: all-axiomsys + +all-axiomsys: ${AXIOMSYS} + +${AXIOMSYS}: makeint.lisp + AXIOM="$(AXIOM)" DAASE="$(axiom_targetdir)" \ + $(LOADSYS) -- --make --output=$@ --main="BOOT::RESTART" \ + --load-directory=. makeint.lisp + @ echo 6a ${AXIOMSYS} created +@ + +\section{Building debugsys} + +Note that we assume you've already built interpsys so all of the +files are known to exist and be up to date. We don't list any of +the preconditions here. +<<debugsys>>= +${DEBUGSYS}: debugsys.lisp + @ echo 7 building debugsys + @ echo '(progn (gbc t) (load "debugsys.lisp") (in-package "BOOT") (spad-save "$@"))' | ${LISPSYS} + @ echo 8 ${DEBUGSYS} created + +@ + +\section{The Interpreter files} + +\subsection{DVI files from pmaphlet files} + +<<DVI from pamphlet>>= +$(axiom_build_texdir)/diagrams.tex: $(axiom_src_docdir)/diagrams.tex + $(INSTALL_DATA) $< $@ +@ + +\subsection{apply.boot \cite{7}} + +<<apply.o (AUTO from OUT)>>= +${AUTO}/apply.$(FASLEXT): apply.$(FASLEXT) + @ echo 9 making ${AUTO}/apply.$(FASLEXT) from apply.$(FASLEXT) + @ cp apply.$(FASLEXT) ${AUTO} + +@ + +\subsection{bootlex.lisp \cite{9}} + +<<bootlex.o (AUTO from OUT)>>= +${AUTO}/bootlex.$(FASLEXT): bootlex.$(FASLEXT) + @ echo 19 making ${AUTO}/bootlex.$(FASLEXT) from bootlex.$(FASLEXT) + @ cp bootlex.$(FASLEXT) ${AUTO} + +@ + +\subsection{debugsys.lisp \cite{14}} + +The {\bf debugsys.lisp} file is used to create a {\bf debugsys} runnable image. +This image contains almost all of the lisp code that make up the axiom +interpreter in lisp form. It is useful for deep system debugging but +otherwise worthless. This file is certain to drift over time as changes +are made elsewhere to add or remove files. It is assumed that you know +what you are doing if you change this file or use debugsys. + +This file is basically the same as the one created during the build of +interpsys. See the echo lines in the {\bf SAVESYS} block above. These +are echoed into a temporary file which gets loaded into the lisp image. +We simply captured that temporary file, replaced the .o files with .lisp +files (or .lsp or .clisp) and saved it here. +<<debugsys.lisp>>= +debugsys.lisp: $(srcdir)/debugsys.lisp.pamphlet + $(axiom_build_document) --tangle --output=$@ $< +@ + +\subsection{def.lisp \cite{15}} + +<<def.o (AUTO from OUT)>>= +${AUTO}/def.$(FASLEXT): def.$(FASLEXT) + @ echo 41 making ${AUTO}/def.$(FASLEXT) from def.$(FASLEXT) + @ cp def.$(FASLEXT) ${AUTO} + +@ + +\subsection{fnewmeta.lisp \cite{18}} + +<<fnewmeta.o (AUTO from OUT)>>= +${AUTO}/fnewmeta.$(FASLEXT): fnewmeta.$(FASLEXT) + @ echo 49 making ${AUTO}/fnewmeta.$(FASLEXT) from fnewmeta.$(FASLEXT) + @ cp fnewmeta.$(FASLEXT) ${AUTO} + +@ + +\subsection{fortcall.boot \cite{16}} + +<<fortcall.clisp>>= +fortcall.clisp: fortcall.boot + @ echo 55 making $@ from $< + @ echo '(progn (old-boot::boot "fortcall.boot"))' | ${DEPSYS} + +@ + +\subsection{metalex.lisp \cite{22}} + +<<metalex.o (AUTO from OUT)>>= +${AUTO}/metalex.$(FASLEXT): metalex.$(FASLEXT) + @ echo 66 making ${AUTO}/metalex.$(FASLEXT) from metalex.$(FASLEXT) + @ cp metalex.$(FASLEXT) ${AUTO} + +@ + +\subsection{metameta.lisp \cite{23}} + +<<metameta.o (AUTO from OUT)>>= +${AUTO}/metameta.$(FASLEXT): metameta.$(FASLEXT) + @ echo 71 making ${AUTO}/metameta.$(FASLEXT) from metameta.$(FASLEXT) + @ cp metameta.$(FASLEXT) ${AUTO} + +@ + +\subsection{nspadaux.lisp \cite{28}} + +<<nspadaux.o (AUTO from OUT)>>= +${AUTO}/nspadaux.$(FASLEXT): nspadaux.$(FASLEXT) + @ echo 89 making ${AUTO}/nspadaux.$(FASLEXT) from nspadaux.$(FASLEXT) + @ cp nspadaux.$(FASLEXT) ${AUTO} + +@ + +\subsection{parsing.lisp \cite{29}} + +<<parsing.o (AUTO from OUT)>>= +${AUTO}/parsing.$(FASLEXT): parsing.$(FASLEXT) + @ echo 94 making ${AUTO}/parsing.$(FASLEXT) from parsing.$(FASLEXT) + @ cp parsing.$(FASLEXT) ${AUTO} + +@ + +\subsection{postprop.lisp \cite{30}} + +<<postprop.lisp (AUTO from OUT)>>= +${AUTO}/postprop.$(FASLEXT): postprop.$(FASLEXT) + @ echo 102 making $@ from $< + @ cp $< ${AUTO} + +@ + +\subsection{preparse.lisp \cite{31}} + +<<preparse.o (AUTO from OUT)>>= +${AUTO}/preparse.$(FASLEXT): preparse.$(FASLEXT) + @ echo 106 making ${AUTO}/preparse.$(FASLEXT) from preparse.$(FASLEXT) + @ cp preparse.$(FASLEXT) ${AUTO} + +@ + +\subsection{buildom.boot \cite{41}} + +<<buildom.clisp>>= +buildom.clisp: buildom.boot + @ echo 143 making $@ from $< + @ echo '(progn (old-boot::boot "buildom.boot"))' | ${DEPSYS} + +@ + +\subsection{c-util.boot \cite{42}} + +<<c-util.o (AUTO from OUT)>>= +${AUTO}/c-util.$(FASLEXT): c-util.$(FASLEXT) + @ echo 145 making ${AUTO}/c-util.$(FASLEXT) from c-util.$(FASLEXT) + @ cp c-util.$(FASLEXT) ${AUTO} + +@ +Note that the {\bf c-util.boot.pamphlet} file contains both the +original {\bf boot} code and a saved copy of the {\bf c-util.clisp} +code. We need to keep the translated code around so we can bootstrap +the system. In other words, we need this boot code translated so we +can build the boot translator. + +{\bf NOTE WELL: IF YOU CHANGE THE BOOT CODE IN C-UTIL.BOOT.PAMPHLET +YOU MUST TRANSLATE THIS CODE TO LISP AND STORE THE RESULTING LISP +CODE BACK INTO THE C-UTIL.BOOT.PAMPHLET FILE. THIS IS NOT AUTOMATED.} +<<c-util.lisp (OUT from IN)>>= +c-util.${LISP}: $(srcdir)/c-util.boot.pamphlet + @ echo 146 making c-util.${LISP} from $(srcdir)/c-util.boot.pamphlet + @ rm -f c-util.$(FASLEXT) + $(axiom_build_document) --tangle=c-util.clisp --output=$@ $< + +@ +<<c-util.clisp>>= +c-util.clisp: c-util.boot + @ echo 148 making $@ from $< + @ echo '(progn (old-boot::boot "c-util.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-c02.boot \cite{43}} + +<<nag-c02.o (AUTO from OUT)>>= +${AUTO}/nag-c02.$(FASLEXT): nag-c02.$(FASLEXT) + @ echo 150 making${AUTO}/nag-c02.$(FASLEXT) from nag-c02.$(FASLEXT) + @ cp nag-c02.$(FASLEXT) ${AUTO} + +@ +<<nag-c02.clisp>>= +nag-c02.clisp: nag-c02.boot + @ echo 152 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-c02.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-c05.boot \cite{44}} + +<<nag-c05.o (AUTO from OUT)>>= +${AUTO}/nag-c05.$(FASLEXT): nag-c05.$(FASLEXT) + @ echo 154 making ${AUTO}/nag-c05.$(FASLEXT) from nag-c05.$(FASLEXT) + @ cp nag-c05.$(FASLEXT) ${AUTO} + +@ +<<nag-c05.clisp>>= +nag-c05.clisp: nag-c05.boot + @ echo 156 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-c05.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-c06.boot \cite{45}} + +<<nag-c06.o (AUTO from OUT)>>= +${AUTO}/nag-c06.$(FASLEXT): nag-c06.$(FASLEXT) + @ echo 158 making${AUTO}/nag-c06.$(FASLEXT) from nag-c06.$(FASLEXT) + @ cp nag-c06.$(FASLEXT) ${AUTO} + +@ +<<nag-c06.clisp>>= +nag-c06.clisp: nag-c06.boot + @ echo 160 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-c06.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-d01.boot \cite{46}} + +<<nag-d01.o (AUTO from OUT)>>= +${AUTO}/nag-d01.$(FASLEXT): nag-d01.$(FASLEXT) + @ echo 162 making${AUTO}/nag-d01.$(FASLEXT) from nag-d01.$(FASLEXT) + @ cp nag-d01.$(FASLEXT) ${AUTO} + +@ +<<nag-d01.clisp>>= +nag-d01.clisp: nag-d01.boot + @ echo 164 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-d01.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-d02.boot \cite{47}} + +<<nag-d02.o (AUTO from OUT)>>= +${AUTO}/nag-d02.$(FASLEXT): nag-d02.$(FASLEXT) + @ echo 166 making${AUTO}/nag-d02.$(FASLEXT) from nag-d02.$(FASLEXT) + @ cp nag-d02.$(FASLEXT) ${AUTO} + +@ +<<nag-d02.clisp>>= +nag-d02.clisp: nag-d02.boot + @ echo 168 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-d02.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-d03.boot \cite{48}} + +<<nag-d03.o (AUTO from OUT)>>= +${AUTO}/nag-d03.$(FASLEXT): nag-d03.$(FASLEXT) + @ echo 170 making${AUTO}/nag-d03.$(FASLEXT) from nag-d03.$(FASLEXT) + @ cp nag-d03.$(FASLEXT) ${AUTO} + +@ +<<nag-d03.clisp>>= +nag-d03.clisp: nag-d03.boot + @ echo 172 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-d03.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-e01.boot \cite{49}} + +<<nag-e01.o (AUTO from OUT)>>= +${AUTO}/nag-e01.$(FASLEXT): nag-e01.$(FASLEXT) + @ echo 174 making ${AUTO}/nag-e01.$(FASLEXT) from nag-e01.$(FASLEXT) + @ cp nag-e01.$(FASLEXT) ${AUTO} + +@ +<<nag-e01.clisp>>= +nag-e01.clisp: nag-e01.boot + @ echo 176 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-e01.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-e02.boot \cite{51}} + +<<nag-e02.o (AUTO from OUT)>>= +${AUTO}/nag-e02.$(FASLEXT): nag-e02.$(FASLEXT) + @ echo 182 making ${AUTO}/nag-e02.$(FASLEXT) from nag-e02.$(FASLEXT) + @ cp nag-e02.$(FASLEXT) ${AUTO} + +@ +<<nag-e02.clisp>>= +nag-e02.clisp: nag-e02.boot + @ echo 184 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-e02.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-e04.boot \cite{52}} + +<<nag-e04.o (AUTO from OUT)>>= +${AUTO}/nag-e04.$(FASLEXT): nag-e04.$(FASLEXT) + @ echo 186 making ${AUTO}/nag-e04.$(FASLEXT) from nag-e04.$(FASLEXT) + @ cp nag-e04.$(FASLEXT) ${AUTO} + +@ +<<nag-e04.clisp>>= +nag-e04.clisp: nag-e04.boot + @ echo 188 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-e04.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-f01.boot \cite{53}} + +<<nag-f01.o (AUTO from OUT)>>= +${AUTO}/nag-f01.$(FASLEXT): nag-f01.$(FASLEXT) + @ echo 190 making ${AUTO}/nag-f01.$(FASLEXT) from nag-f01.$(FASLEXT) + @ cp nag-f01.$(FASLEXT) ${AUTO} + +@ +<<nag-f01.clisp>>= +nag-f01.clisp: nag-f01.boot + @ echo 192 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-f01.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-f02.boot \cite{54}} + +<<nag-f02.o (AUTO from OUT)>>= +${AUTO}/nag-f02.$(FASLEXT): nag-f02.$(FASLEXT) + @ echo 194 making ${AUTO}/nag-f02.$(FASLEXT) from nag-f02.$(FASLEXT) + @ cp nag-f02.$(FASLEXT) ${AUTO} + +@ +<<nag-f02.clisp>>= +nag-f02.clisp: nag-f02.boot + @ echo 196 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-f02.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-f04.boot \cite{55}} + +<<nag-f04.o (AUTO from OUT)>>= +${AUTO}/nag-f04.$(FASLEXT): nag-f04.$(FASLEXT) + @ echo 198 making ${AUTO}/nag-f04.$(FASLEXT) from nag-f04.$(FASLEXT) + @ cp nag-f04.$(FASLEXT) ${AUTO} + +@ +<<nag-f04.clisp>>= +nag-f04.clisp: nag-f04.boot + @ echo 200 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-f04.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-f07.boot \cite{56}} + +<<nag-f07.o (AUTO from OUT)>>= +${AUTO}/nag-f07.$(FASLEXT): nag-f07.$(FASLEXT) + @ echo 202 making ${AUTO}/nag-f07.$(FASLEXT) from nag-f07.$(FASLEXT) + @ cp nag-f07.$(FASLEXT) ${AUTO} + +@ +<<nag-f07.clisp>>= +nag-f07.clisp: nag-f07.boot + @ echo 204 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-f07.boot"))' | ${DEPSYS} + +@ + +\subsection{nag-s.boot \cite{57}} + +<<nag-s.o (AUTO from OUT)>>= +${AUTO}/nag-s.$(FASLEXT): nag-s.$(FASLEXT) + @ echo 206 making ${AUTO}/nag-s.$(FASLEXT) from nag-s.$(FASLEXT) + @ cp nag-s.$(FASLEXT) ${AUTO} + +@ +<<nag-s.clisp>>= +nag-s.clisp: nag-s.boot + @ echo 208 making $@ from $< + @ echo '(progn (boot::reroot "${AXIOM}") (old-boot::boot "nag-s.boot"))' | ${DEPSYS} + +@ + +\subsection{category.boot \cite{58}} + +<<category.o (AUTO from OUT)>>= +${AUTO}/category.$(FASLEXT): category.$(FASLEXT) + @ echo 210 making ${AUTO}/ category.$(FASLEXT) from category.$(FASLEXT) + @ cp category.$(FASLEXT) ${AUTO} + +@ +<<category.clisp>>= +category.clisp: category.boot + @ echo 212 making $@ from $< + @ echo '(progn (old-boot::boot "category.boot"))' | ${DEPSYS} +@ + +\subsection{cattable.boot \cite{59}} + +<<cattable.clisp>>= +cattable.clisp: cattable.boot + @ echo 215 making $@ from $< + @ echo '(progn (old-boot::boot "cattable.boot"))' | ${DEPSYS} +@ + +\subsection{c-doc.boot \cite{60}} + +<<c-doc.o (AUTO from OUT)>>= +${AUTO}/c-doc.$(FASLEXT): c-doc.$(FASLEXT) + @ echo 217 making ${AUTO}/c-doc.$(FASLEXT) from c-doc.$(FASLEXT) + @ cp c-doc.$(FASLEXT) ${AUTO} + +@ +<<c-doc.clisp>>= +c-doc.clisp: c-doc.boot + @ echo 219 making $@ from $< + @ echo '(progn (old-boot::boot "c-doc.boot"))' | ${DEPSYS} +@ + + +\subsection{clammed.boot \cite{62}} + +<<clammed.clisp>>= +clammed.clisp: clammed.boot + @ echo 226 making $@ from $< + @ echo '(progn (old-boot::boot "clammed.boot"))' | ${DEPSYS} +@ + +\subsection{compat.boot \cite{63}} + +<<compat.clisp>>= +compat.clisp: compat.boot + @ echo 229 making $@ from $< + @ echo '(progn (old-boot::boot "compat.boot"))' | ${DEPSYS} +@ + +\subsection{compiler.boot \cite{64}} + +<<compiler.o (AUTO from OUT)>>= +${AUTO}/compiler.$(FASLEXT): compiler.$(FASLEXT) + @ echo 231 making ${AUTO}/compiler.$(FASLEXT) from compiler.$(FASLEXT) + @ cp compiler.$(FASLEXT) ${AUTO} + +@ +<<compiler.clisp>>= +compiler.clisp: compiler.boot + @ echo 233 making $@ from $< + @ echo '(progn (old-boot::boot "compiler.boot"))' | ${DEPSYS} +@ + +\subsection{profile.boot \cite{65}} + +<<profile.o (AUTO from OUT)>>= +${AUTO}/profile.$(FASLEXT): profile.$(FASLEXT) + @ echo 235 making ${AUTO}/profile.$(FASLEXT) from profile.$(FASLEXT) + @ cp profile.$(FASLEXT) ${AUTO} + +@ +<<profile.clisp>>= +profile.clisp: profile.boot + @ echo 237 making $@ from $< + @ echo '(progn (old-boot::boot "profile.boot"))' | ${DEPSYS} +@ + +\subsection{database.boot \cite{67}} + +<<database.clisp>>= +database.clisp: database.boot + @ echo 243 making $@ from $< + @ echo '(progn (old-boot::boot "database.boot"))' | ${DEPSYS} +@ + +\subsection{define.boot} + +<<define.o (AUTO from OUT)>>= +${AUTO}/define.$(FASLEXT): define.$(FASLEXT) + @ echo 245 making ${AUTO}/define.$(FASLEXT) from define.$(FASLEXT) + @ cp define.$(FASLEXT) ${AUTO} + +@ +<<define.clisp>>= +define.clisp: define.boot + @ echo 247 making $@ from $< + @ echo '(progn (old-boot::boot "define.boot"))' | ${DEPSYS} +@ + +\subsection{format.boot} + +<<format.clisp>>= +format.clisp: format.boot + @ echo 250 making $@ from $< + @ echo '(progn (old-boot::boot "format.boot"))' | ${DEPSYS} +@ + +\subsection{functor.boot} + +<<functor.o (AUTO from OUT)>>= +${AUTO}/functor.$(FASLEXT): functor.$(FASLEXT) + @ echo 252 making ${AUTO}/functor.$(FASLEXT) from functor.$(FASLEXT) + @ cp functor.$(FASLEXT) ${AUTO} + +@ +<<functor.clisp>>= +functor.clisp: functor.boot + @ echo 254 making $@ from $< + @ echo '(progn (old-boot::boot "functor.boot"))' | ${DEPSYS} +@ + +\subsection{g-cndata.boot} + +<<g-cndata.clisp>>= +g-cndata.clisp: g-cndata.boot + @ echo 261 making $@ from $< + @ echo '(progn (old-boot::boot "g-cndata.boot"))' | ${DEPSYS} +@ + +\subsection{g-opt.boot} + +<<g-opt.clisp>>= +g-opt.clisp: g-opt.boot + @ echo 267 making $@ from $< + @ echo '(progn (old-boot::boot "g-opt.boot"))' | ${DEPSYS} +@ + +\subsection{g-timer.boot} + +<<g-timer.clisp>>= +g-timer.clisp: g-timer.boot + @ echo 270 making $@ from $< + @ echo '(progn (old-boot::boot "g-timer.boot"))' | ${DEPSYS} +@ + + +\subsection{hypertex.boot} + +<<hypertex.clisp>>= +hypertex.clisp: hypertex.boot + @ echo 277 making $@ from $< + @ echo '(progn (old-boot::boot "hypertex.boot"))' | ${DEPSYS} +@ + +\subsection{i-analy.boot} + +<<i-analy.clisp>>= +i-analy.clisp: i-analy.boot + @ echo 280 making $@ from $< + @ echo '(progn (old-boot::boot "i-analy.boot"))' | ${DEPSYS} +@ + +\subsection{i-code.boot} + +<<i-code.clisp>>= +i-code.clisp: i-code.boot + @ echo 283 making $@ from $< + @ echo '(progn (old-boot::boot "i-code.boot"))' | ${DEPSYS} +@ + +\subsection{i-coerce.boot} + +<<i-coerce.clisp>>= +i-coerce.clisp: i-coerce.boot + @ echo 286 making $@ from $< + @ echo '(progn (old-boot::boot "i-coerce.boot"))' | ${DEPSYS} +@ + +\subsection{i-coerfn.boot} + +<<i-coerfn.clisp>>= +i-coerfn.clisp: i-coerfn.boot + @ echo 289 making $@ from $< + @ echo '(progn (old-boot::boot "i-coerfn.boot"))' | ${DEPSYS} +@ + +\subsection{i-eval.boot} + +<<i-eval.clisp>>= +i-eval.clisp: i-eval.boot + @ echo 292 making $@ from $< + @ echo '(progn (old-boot::boot "i-eval.boot"))' | ${DEPSYS} +@ + +\subsection{i-funsel.boot} + +<<i-funsel.clisp>>= +i-funsel.clisp: i-funsel.boot + @ echo 295 making $@ from $< + @ echo '(progn (old-boot::boot "i-funsel.boot"))' | ${DEPSYS} +@ + +\subsection{bookvol5.lsp} + + +<<bookvol5.lisp>>= +bookvol5.lisp: $(srcdir)/bookvol5.pamphlet + @ echo 298 making $@ from $< + $(axiom_build_document) --tangle=Interpreter --output=$@ $< +@ + +\subsection{i-intern.boot} + +<<i-intern.clisp>>= +i-intern.clisp: i-intern.boot + @ echo 301 making $@ from $< + @ echo '(progn (old-boot::boot "i-intern.boot"))' | ${DEPSYS} +@ + +\subsection{i-map.boot} + +<<i-map.clisp>>= +i-map.clisp: i-map.boot + @ echo 304 making $@ from $< + @ echo '(progn (old-boot::boot "i-map.boot"))' | ${DEPSYS} +@ + +\subsection{i-output.boot} + +<<i-output.clisp>>= +i-output.clisp: i-output.boot + @ echo 307 making $@ from $< + @ echo '(progn (old-boot::boot "i-output.boot"))' | ${DEPSYS} +@ + +\subsection{i-resolv.boot} + +<<i-resolv.clisp>>= +i-resolv.clisp: i-resolv.boot + @ echo 310 making $@ from $< + @ echo '(progn (old-boot::boot "i-resolv.boot"))' | ${DEPSYS} +@ + +\subsection{i-spec1.boot} + +<<i-spec1.clisp>>= +i-spec1.clisp: i-spec1.boot + @ echo 313 making $@ from $< + @ echo '(progn (old-boot::boot "i-spec1.boot"))' | ${DEPSYS} +@ + +\subsection{i-spec2.boot} + +<<i-spec2.clisp>>= +i-spec2.clisp: i-spec2.boot + @ echo 316 making $@ from i-spec2.boot + @ echo '(progn (old-boot::boot "i-spec2.boot"))' | ${DEPSYS} +@ + +\subsection{i-syscmd.boot} + +<<i-syscmd.clisp>>= +i-syscmd.clisp: i-syscmd.boot + @ echo 319 making $@ from $< + @ echo '(progn (old-boot::boot "i-syscmd.boot"))' | ${DEPSYS} +@ + +\subsection{i-toplev.boot} + +<<i-toplev.clisp>>= +i-toplev.clisp: i-toplev.boot + @ echo 322 making $@ from $< + @ echo '(progn (old-boot::boot "i-toplev.boot"))' | ${DEPSYS} +@ + +\subsection{i-util.boot} + +<<i-util.clisp>>= +i-util.clisp: i-util.boot + @ echo 325 making $@ from $< + @ echo '(progn (old-boot::boot "i-util.boot"))' | ${DEPSYS} +@ + +\subsection{info.boot} + +<<info.o (AUTO from OUT)>>= +${AUTO}/info.$(FASLEXT): info.$(FASLEXT) + @ echo 327 making ${AUTO}/info.$(FASLEXT) from info.$(FASLEXT) + @ cp info.$(FASLEXT) ${AUTO} + +@ +<<info.clisp>>= +info.clisp: info.boot + @ echo 329 making $@ from $< + @ echo '(progn (old-boot::boot "info.boot"))' | ${DEPSYS} +@ + +\subsection{iterator.boot} + +<<iterator.o (AUTO from OUT)>>= +${AUTO}/iterator.$(FASLEXT): iterator.$(FASLEXT) + @ echo 331 making ${AUTO}/iterator.$(FASLEXT) from iterator.$(FASLEXT) + @ cp iterator.$(FASLEXT) ${AUTO} + +@ +<<iterator.clisp>>= +iterator.clisp: iterator.boot + @ echo 333 making $@ from $< + @ echo '(progn (old-boot::boot "iterator.boot"))' | ${DEPSYS} +@ + +\subsection{lisplib.boot} + +<<lisplib.clisp>>= +lisplib.clisp: lisplib.boot + @ echo 336 making $@ from $< + @ echo '(progn (old-boot::boot "lisplib.boot"))' | ${DEPSYS} +@ + +\subsection{match.boot} + +<<match.clisp>>= +match.clisp: match.boot + @ echo 339 making $@ from $< + @ echo '(progn (old-boot::boot "match.boot"))' | ${DEPSYS} +@ + +\subsection{modemap.boot} + +<<modemap.o (AUTO from OUT)>>= +${AUTO}/modemap.$(FASLEXT): modemap.$(FASLEXT) + @ echo 341 making ${AUTO}/modemap.$(FASLEXT) from modemap.$(FASLEXT) + @ cp modemap.$(FASLEXT) ${AUTO} + +@ +<<modemap.clisp>>= +modemap.clisp: modemap.boot + @ echo 343 making $@ from $< + @ echo '(progn (old-boot::boot "modemap.boot"))' | ${DEPSYS} +@ + +\subsection{msgdb.boot} + +<<msgdb.clisp>>= +msgdb.clisp: msgdb.boot + @ echo 346 making $@ from $< + @ echo '(progn (old-boot::boot "msgdb.boot"))' | ${DEPSYS} +@ + +\subsection{newfort.boot} + +<<newfort.clisp>>= +newfort.clisp: newfort.boot + @ echo 349 making $@ from $< + @ echo '(progn (old-boot::boot "newfort.boot"))' | ${DEPSYS} +@ + +\subsection{nruncomp.boot} + +<<nruncomp.o (AUTO from OUT)>>= +${AUTO}/nruncomp.$(FASLEXT): nruncomp.$(FASLEXT) + @ echo 351 making ${AUTO}/nruncomp.$(FASLEXT) from nruncomp.$(FASLEXT) + @ cp nruncomp.$(FASLEXT) ${AUTO} + +@ +<<nruncomp.clisp>>= +nruncomp.clisp: nruncomp.boot + @ echo 353 making $@ from $< + @ echo '(progn (old-boot::boot "nruncomp.boot"))' | ${DEPSYS} +@ + +\subsection{nrunfast.boot} + +<<nrunfast.clisp>>= +nrunfast.clisp: nrunfast.boot + @ echo 356 making $@ from $< + @ echo '(progn (old-boot::boot "nrunfast.boot"))' | ${DEPSYS} +@ + +\subsection{nrungo.boot} + +<<nrungo.clisp>>= +nrungo.clisp: nrungo.boot + @ echo 359 making $@ from $< + @ echo '(progn (old-boot::boot "nrungo.boot"))' | ${DEPSYS} +@ + +\subsection{nruntime.boot} + +<<nruntime.clisp>>= +nruntime.clisp: nruntime.boot + @ echo 362 making $@ from $< + @ echo '(progn (old-boot::boot "nruntime.boot"))' | ${DEPSYS} +@ + +\subsection{nrunopt.boot} + +<<nrunopt.clisp>>= +nrunopt.clisp: nrunopt.boot + @ echo 365 making $@ from $< + @ echo '(progn (old-boot::boot "nrunopt.boot"))' | ${DEPSYS} +@ + +\subsection{package.boot} + +<<package.o (AUTO from OUT)>>= +${AUTO}/package.$(FASLEXT): package.$(FASLEXT) + @ echo 370 making ${AUTO}/package.$(FASLEXT) from package.$(FASLEXT) + @ cp package.$(FASLEXT) ${AUTO} + +@ + +\subsection{parse.boot} + +\begin{verbatim} +NOTE: this is used to build a depsys on a virgin copy of the system +\end{verbatim} +<<parse.o (AUTO from OUT)>>= +${AUTO}/parse.$(FASLEXT): parse.$(FASLEXT) + @ echo 374 making ${AUTO}/parse.$(FASLEXT) from parse.$(FASLEXT) + @ cp parse.$(FASLEXT) ${AUTO} + +@ + +\subsection{pathname.boot} + +\begin{verbatim} +NOTE: the .clisp file is copies back into the src directory so that +it is possible to create a new obootsys system from scratch for a +new platform. parse.clisp needs to be compiled in a depsys. +One thing need to be done to create an obootsys by hand: + parse and postpar must be loaded along with the depsys files + into a bare lisp system. +if these two things are done then a obootsys image can be bootstrapped +to a new platform. +\end{verbatim} +<<pathname.clisp>>= +pathname.clisp: pathname.boot + @ echo 380 making $@ from $< + @ echo '(progn (old-boot::boot "pathname.boot"))' | ${DEPSYS} +@ + +\subsection{postpar.boot} + +\begin{verbatim} +NOTE: this is used to build a depsys on a virgin copy of the system +\end{verbatim} +<<postpar.o (AUTO from OUT)>>= +${AUTO}/postpar.$(FASLEXT): postpar.$(FASLEXT) + @ echo 382 making ${AUTO}/postpar.$(FASLEXT) from postpar.$(FASLEXT) + @ cp postpar.$(FASLEXT) ${AUTO} + +@ + +\begin{verbatim} +NOTE: One thing need to be done to create an DEPSYS by hand: + parse and postpar must be loaded along with the depsys files + into a bare lisp system. +if these two things are done then a DEPSYS image can be bootstrapped +to a new platform. +\end{verbatim} + +\subsection{rulesets.boot} + +<<rulesets.clisp>>= +rulesets.clisp: rulesets.boot + @ echo 388 making $@ from $< + @ echo '(progn (old-boot::boot "rulesets.boot"))' | ${DEPSYS} +@ + +\subsection{server.boot} + +<<server.clisp>>= +server.clisp: server.boot + @ echo 391 making $@ from $< + @ echo '(progn (old-boot::boot "server.boot"))' | ${DEPSYS} +@ + + +\subsection{setvart.boot} + +<<setvart.clisp>>= +setvart.clisp: setvart.boot + @ echo 398 making $@ from $< + @ echo '(progn (old-boot::boot "setvart.boot"))' | ${DEPSYS} +@ + +\subsection{template.boot} + +<<template.clisp>>= +template.clisp: template.boot + @ echo 408 making $@ from $< + @ echo '(progn (old-boot::boot "template.boot"))' | ${DEPSYS} +@ + +\subsection{termrw.boot} + +<<termrw.clisp>>= +termrw.clisp: termrw.boot + @ echo 411 making $@ from $< + @ echo '(progn (old-boot::boot "termrw.boot"))' | ${DEPSYS} +@ + +\subsection{trace.boot} + +<<trace.clisp>>= +trace.clisp: trace.boot + @ echo 414 making $@ from $< + @ echo '(progn (old-boot::boot "trace.boot"))' | ${DEPSYS} +@ + +\subsection{as.boot} + +<<as.clisp>>= +as.clisp: as.boot + @ echo 417 making $@ from $< + @ echo '(progn (old-boot::boot "as.boot"))' | ${DEPSYS} +@ + +\subsection{bc-matrix.boot} + +<<bc-matrix.o (AUTO from OUT)>>= +${AUTO}/bc-matrix.$(FASLEXT): bc-matrix.$(FASLEXT) + @ echo 422 making ${AUTO}/bc-matrix.$(FASLEXT) from bc-matrix.$(FASLEXT) + @ cp bc-matrix.$(FASLEXT) ${AUTO} + +@ +<<bc-matrix.clisp>>= +bc-matrix.clisp: bc-matrix.boot + @ echo 424 making $@ from $< + @ echo '(progn (old-boot::boot "bc-matrix.boot"))' | ${DEPSYS} +@ + +\subsection{bc-misc.boot} + +<<bc-misc.o (AUTO from OUT)>>= +${AUTO}/bc-misc.$(FASLEXT): bc-misc.$(FASLEXT) + @ echo 426 making ${AUTO}/bc-misc.$(FASLEXT) from bc-misc.$(FASLEXT) + @ cp bc-misc.$(FASLEXT) ${AUTO} + +@ +<<bc-misc.clisp>>= +bc-misc.clisp: bc-misc.boot + @ echo 428 making $@ from $< + @ echo '(progn (old-boot::boot "bc-misc.boot"))' | ${DEPSYS} +@ + +\subsection{bc-solve.boot} + +<<bc-solve.o (AUTO from OUT)>>= +${AUTO}/bc-solve.$(FASLEXT): bc-solve.$(FASLEXT) + @ echo 430 making ${AUTO}/bc-solve.$(FASLEXT) from bc-solve.$(FASLEXT) + @ cp bc-solve.$(FASLEXT) ${AUTO} + +@ +<<bc-solve.clisp>>= +bc-solve.clisp: bc-solve.boot + @ echo 432 making $@ from $< + @ echo '(progn (old-boot::boot "bc-solve.boot"))' | ${DEPSYS} +@ + +\subsection{bc-util.boot} + +<<bc-util.o (AUTO from OUT)>>= +${AUTO}/bc-util.$(FASLEXT): bc-util.$(FASLEXT) + @ echo 434 making ${AUTO}/bc-util.$(FASLEXT) from bc-util.$(FASLEXT) + @ cp bc-util.$(FASLEXT) ${AUTO} + +@ +<<bc-util.clisp>>= +bc-util.clisp: bc-util.boot + @ echo 436 making $@ from $< + @ echo '(progn (old-boot::boot "bc-util.boot"))' | ${DEPSYS} +@ + +\subsection{ht-util.boot} + +<<ht-util.o (AUTO from OUT)>>= +${AUTO}/ht-util.$(FASLEXT): ht-util.$(FASLEXT) + @ echo 438 making ${AUTO}/ht-util.$(FASLEXT) from ht-util.$(FASLEXT) + @ cp ht-util.$(FASLEXT) ${AUTO} + +@ +<<ht-util.clisp>>= +ht-util.clisp: ht-util.boot + @ echo 440 making $@ from $< + @ echo '(progn (old-boot::boot "ht-util.boot"))' | ${DEPSYS} +@ + +\subsection{htsetvar.boot} + +<<htsetvar.o (AUTO from OUT)>>= +${AUTO}/htsetvar.$(FASLEXT): htsetvar.$(FASLEXT) + @ echo 442 making ${AUTO}/htsetvar.$(FASLEXT) from htsetvar.$(FASLEXT) + @ cp htsetvar.$(FASLEXT) ${AUTO} + +@ +<<htsetvar.clisp>>= +htsetvar.clisp: htsetvar.boot + @ echo 444 making $@ from $< + @ echo '(progn (old-boot::boot "htsetvar.boot"))' | ${DEPSYS} +@ + +\subsection{record.boot} + +<<record.clisp>>= +record.clisp: record.boot + @ echo 447 making $@ $< + @ echo '(progn (old-boot::boot "record.boot"))' | ${DEPSYS} +@ + +\subsection{ht-root.boot} + +<<ht-root.o (AUTO from OUT)>>= +${AUTO}/ht-root.$(FASLEXT): ht-root.$(FASLEXT) + @ echo 449 making ${AUTO}/ht-root.$(FASLEXT) from ht-root.$(FASLEXT) + @ cp ht-root.$(FASLEXT) ${AUTO} + +@ +<<ht-root.clisp>>= +ht-root.clisp: ht-root.boot + @ echo 451 making $@ from $< + @ echo '(progn (old-boot::boot "ht-root.boot"))' | ${DEPSYS} +@ + +\subsection{htcheck.boot} + +<<htcheck.o (AUTO from OUT)>>= +${AUTO}/htcheck.$(FASLEXT): htcheck.$(FASLEXT) + @ echo 453 making ${AUTO}/htcheck.$(FASLEXT) from htcheck.$(FASLEXT) + @ cp htcheck.$(FASLEXT) ${AUTO} + +@ +<<htcheck.clisp>>= +htcheck.clisp: htcheck.boot + @ echo 455 making $@ from $< + @ echo '(progn (old-boot::boot "htcheck.boot"))' | ${DEPSYS} +@ + +\subsection{xruncomp.boot} + +<<xruncomp.o (AUTO from OUT)>>= +${AUTO}/xruncomp.$(FASLEXT): xruncomp.$(FASLEXT) + @ echo 457 making ${AUTO}/xruncomp.$(FASLEXT) from xruncomp.$(FASLEXT) + @ cp xruncomp.$(FASLEXT) ${AUTO} + +@ +<<xruncomp.clisp>>= +xruncomp.clisp: xruncomp.boot + @ echo 459 making $@ from $< + @ echo '(progn (old-boot::boot "xruncomp.boot"))' | ${DEPSYS} +@ + +\subsection{ax.boot} + +<<ax.o (AUTO from OUT)>>= +${AUTO}/ax.$(FASLEXT): ax.$(FASLEXT) + @ echo 461 making ${AUTO}/ax.$(FASLEXT) from ax.$(FASLEXT) + @ cp ax.$(FASLEXT) ${AUTO} + +@ +<<ax.clisp>>= +ax.clisp: ax.boot + @ echo 463 making $@ $< + @ echo '(progn (old-boot::boot "ax.boot"))' | ${DEPSYS} +@ + +\subsection{br-con.boot} + +<<br-con.o (AUTO from OUT)>>= +${AUTO}/br-con.$(FASLEXT): br-con.$(FASLEXT) + @ echo 465 making ${AUTO}/br-con.$(FASLEXT) from br-con.$(FASLEXT) + @ cp br-con.$(FASLEXT) ${AUTO} + +@ +<<br-con.clisp>>= +br-con.clisp: br-con.boot + @ echo 467 making $@ from $< + @ echo '(progn (old-boot::boot "br-con.boot"))' | ${DEPSYS} +@ + +\subsection{br-search.boot} + +<<br-search.o (AUTO from OUT)>>= +${AUTO}/br-search.$(FASLEXT): br-search.$(FASLEXT) + @ echo 469 making ${AUTO}/br-search.$(FASLEXT) from br-search.$(FASLEXT) + @ cp br-search.$(FASLEXT) ${AUTO} + +@ +<<br-search.clisp>>= +br-search.clisp: br-search.boot + @ echo 471 making $@ from $< + @ echo '(progn (old-boot::boot "br-search.boot"))' | ${DEPSYS} +@ + +\subsection{br-op1.boot} + +<<br-op1.o (AUTO from OUT)>>= +${AUTO}/br-op1.$(FASLEXT): br-op1.$(FASLEXT) + @ echo 473 making ${AUTO}/br-op1.$(FASLEXT) from br-op1.$(FASLEXT) + @ cp br-op1.$(FASLEXT) ${AUTO} + +@ +<<br-op1.clisp>>= +br-op1.clisp: br-op1.boot + @ echo 475 making $@ from $< + @ echo '(progn (old-boot::boot "br-op1.boot"))' | ${DEPSYS} +@ + +\subsection{br-op2.boot} + +<<br-op2.o (AUTO from OUT)>>= +${AUTO}/br-op2.$(FASLEXT): br-op2.$(FASLEXT) + @ echo 477 making ${AUTO}/br-op2.$(FASLEXT) from br-op2.$(FASLEXT) + @ cp br-op2.$(FASLEXT) ${AUTO} + +@ +<<br-op2.clisp>>= +br-op2.clisp: br-op2.boot + @ echo 479 making $@ from $< + @ echo '(progn (old-boot::boot "br-op2.boot"))' | ${DEPSYS} +@ + +\subsection{br-data.boot} + +<<br-data.o (AUTO from OUT)>>= +${AUTO}/br-data.$(FASLEXT): br-data.$(FASLEXT) + @ echo 481 making ${AUTO}/br-data.$(FASLEXT) from br-data.$(FASLEXT) + @ cp br-data.$(FASLEXT) ${AUTO} + +@ +<<br-data.clisp>>= +br-data.clisp: br-data.boot + @ echo 483 making $@ from $< + @ echo '(progn (old-boot::boot "br-data.boot"))' | ${DEPSYS} +@ + +\subsection{br-util.boot} + +<<br-util.o (AUTO from OUT)>>= +${AUTO}/br-util.$(FASLEXT): br-util.$(FASLEXT) + @ echo 485 making ${AUTO}/br-util.$(FASLEXT) from br-util.$(FASLEXT) + @ cp br-util.$(FASLEXT) ${AUTO} + +@ +<<br-util.clisp>>= +br-util.clisp: br-util.boot + @ echo 487 making $@ from $< + @ echo '(progn (old-boot::boot "br-util.boot"))' | ${DEPSYS} +@ + +\subsection{br-saturn.boot} + +<<br-saturn.o (AUTO from OUT)>>= +${AUTO}/br-saturn.$(FASLEXT): br-saturn.$(FASLEXT) + @ echo 489 making ${AUTO}/br-saturn.$(FASLEXT) from br-saturn.$(FASLEXT) + @ cp br-saturn.$(FASLEXT) ${AUTO} + +@ +<<br-saturn.clisp>>= +br-saturn.clisp: br-saturn.boot + @ echo 491 making $@ from $< + @ echo '(progn (old-boot::boot "br-saturn.boot"))' | ${DEPSYS} +@ + +\subsection{topics.boot} + +<<topics.o (AUTO from OUT)>>= +${AUTO}/topics.$(FASLEXT): topics.$(FASLEXT) + @ echo 493 making ${AUTO}/topics.$(FASLEXT) from topics.$(FASLEXT) + @ cp topics.$(FASLEXT) ${AUTO} + +@ +<<topics.clisp>>= +topics.clisp: topics.boot + @ echo 495 making $@ from $< + @ echo '(progn (old-boot::boot "topics.boot"))' | ${DEPSYS} +@ + +\subsection{br-prof.boot} + +<<br-prof.o (AUTO from OUT)>>= +${AUTO}/br-prof.$(FASLEXT): br-prof.$(FASLEXT) + @ echo 497 making ${AUTO}/br-prof.$(FASLEXT) from br-prof.$(FASLEXT) + @ cp br-prof.$(FASLEXT) ${AUTO} + +@ +<<br-prof.clisp>>= +br-prof.clisp: br-prof.boot + @ echo 499 making $@ from $< + @ ($(axiom_build_document) --tangle --output=br-prof.boot $< ;\ + echo '(progn (old-boot::boot "br-prof.boot"))' | ${DEPSYS}; \ + rm br-prof.boot ) + +@ + +\subsection{showimp.boot} + +system level hacking files +<<showimp.o (AUTO from OUT)>>= +${AUTO}/showimp.$(FASLEXT): showimp.$(FASLEXT) + @ echo 579 making ${AUTO}/showimp.$(FASLEXT) from showimp.$(FASLEXT) + @ cp showimp.$(FASLEXT) ${AUTO} + +@ + +\subsection{wi1.boot} + +translate files +<<wi1.o (AUTO from MID)>>= +${AUTO}/wi1.$(FASLEXT): wi1.$(FASLEXT) + @ cp $< $@ +@ + +\subsection{wi2.boot} + +<<wi2.o (AUTO from MID)>>= +${AUTO}/wi2.$(FASLEXT): wi2.$(FASLEXT) + @ cp $< $@ +@ + +\subsection{pspad1.boot} + +<<pspad1.o (AUTO from MID)>>= +${AUTO}/pspad1.$(FASLEXT): pspad1.$(FASLEXT) + @ cp $< $@ +@ + +\subsection{pspad2.boot} + +<<pspad2.o (AUTO from MID)>>= +${AUTO}/pspad2.$(FASLEXT): pspad2.$(FASLEXT) + @ cp $< $@ +@ + +\subsection{mark.boot} + +<<mark.o (AUTO from MID)>>= +${AUTO}/mark.$(FASLEXT): mark.$(FASLEXT) + @ cp $< $@ + +@ + +\section{The databases} + +\begin{verbatim} + autoload dependencies + + if you are adding a file which is to be autoloaded the following step + information is useful: + there are 2 cases: + 1) adding files to currently autoloaded parts + (as of 2/92: browser old parser and old compiler) + 2) adding new files + case 1: + a) you have to add the file to the list of files currently there + (e.g. see BROBJS above) + b) add an autolaod rule + (e.g. ${AUTO}/parsing.$(FASLEXT): parsing.$(FASLEXT)) + c) edit util.lisp to add the 'external' function (those that + should trigger the autoload + case 2: + build-interpsys (in util.lisp) needs an extra argument for the + new autoload things and several functions in util.lisp need hacking. + + database.date is a marker file used to force a rebuild of interpsys if the + database is rebuilt (src/algebra/Makefile). + +\end{verbatim} +<<databases>>= +exposed.lsp: $(axiom_src_algdir)/exposed.lsp.pamphlet + @ echo 615 making exposed.lsp from $(axiom_src_algdir)/exposed.lsp.pamphlet + $(axiom_build_document) --tangle --output=$@ $< + +$(axiom_targetdir)/algebra/exposed.$(FASLEXT) : exposed.lsp ${LISPSYS} + @ echo 616 making $@ from exposed.lsp + $(mkinstalldirs) $(axiom_targetdir)/algebra + @ echo '(progn (compile-file "exposed.lsp" :output-file "$(axiom_targetdir)/algebra/exposed.$(FASLEXT)"))' | ${LISPSYS} + +database.date: + @ echo 617 the database was updated...remaking interpsys + @ touch database.date + +@ + +\section{The Makefile} +<<*>>= + +subdir = src/interp/ + +<<environment>> + +.SUFFIXES: +.SUFFIXES: .boot .clisp .lisp .pamphlet + +.PHONY: all all-ax all-depsys all-interpsys all-axiomsys all-debugsys + +all: all-ax + +all-ax: stamp + @echo finished $(srcdir) + +stamp: $(AUTO) remove-stamp build-images + $(STAMP) stamp + +.PHONY: remove-stamp +remove-stamp: + -rm -f stamp + +.PHONY: build-images +build-images: remove-stamp all-interpsys all-debugsys + +all-interpsys: all-depsys + $(mkinstalldirs) $(AUTO) + $(MAKE) $(SAVESYS) + +all-axiomsys: all-depsys + $(MAKE) $(AXIOMSYS) + +all-debugsys: all-interpsys + $(MAKE) $(DEBUGSYS) + +all-depsys: $(DEPSYS) + +<<extract source codes>> + +mostlyclean-local: + @rm -f *.fn *.data *.$(FASLEXT) *.lib + +clean-local: mostlyclean-local + @rm -f *.clisp *.lsp + +distclean-local: clean-local + +<<savesys>> +<<depsys>> +<<axiomsys>> +<<debugsys>> +<<databases>> + +<<apply.o (AUTO from OUT)>> + +<<as.clisp>> + +<<ax.o (AUTO from OUT)>> +<<ax.clisp>> + +<<bc-matrix.o (AUTO from OUT)>> +<<bc-matrix.clisp>> + +<<bc-misc.o (AUTO from OUT)>> +<<bc-misc.clisp>> + +<<bc-solve.o (AUTO from OUT)>> +<<bc-solve.clisp>> + +<<bc-util.o (AUTO from OUT)>> +<<bc-util.clisp>> + +<<bootlex.o (AUTO from OUT)>> + +<<br-con.o (AUTO from OUT)>> +<<br-con.clisp>> + +<<br-data.o (AUTO from OUT)>> +<<br-data.clisp>> + +<<br-op1.o (AUTO from OUT)>> +<<br-op1.clisp>> + +<<br-op2.o (AUTO from OUT)>> +<<br-op2.clisp>> + +<<br-prof.o (AUTO from OUT)>> +<<br-prof.clisp>> + +<<br-saturn.o (AUTO from OUT)>> +<<br-saturn.clisp>> + +<<br-search.o (AUTO from OUT)>> +<<br-search.clisp>> + +<<br-util.o (AUTO from OUT)>> +<<br-util.clisp>> + +<<buildom.clisp>> + +<<category.o (AUTO from OUT)>> +<<category.clisp>> + +<<cattable.clisp>> + +<<c-doc.o (AUTO from OUT)>> +<<c-doc.clisp>> + +<<clammed.clisp>> + +<<compat.clisp>> + +<<compiler.o (AUTO from OUT)>> +<<compiler.clisp>> + +<<c-util.o (AUTO from OUT)>> +<<c-util.lisp (OUT from IN)>> +<<c-util.clisp>> + +<<database.clisp>> + +<<debugsys.lisp>> + +<<def.o (AUTO from OUT)>> + +<<define.o (AUTO from OUT)>> +<<define.clisp>> + +<<fnewmeta.o (AUTO from OUT)>> + +<<format.clisp>> + +<<fortcall.clisp>> + +<<functor.o (AUTO from OUT)>> +<<functor.clisp>> + +<<g-cndata.clisp>> + +<<g-opt.clisp>> + +<<g-timer.clisp>> + +<<htcheck.o (AUTO from OUT)>> +<<htcheck.clisp>> + +<<ht-root.o (AUTO from OUT)>> +<<ht-root.clisp>> + +<<htsetvar.o (AUTO from OUT)>> +<<htsetvar.clisp>> + +<<ht-util.o (AUTO from OUT)>> +<<ht-util.clisp>> + +<<hypertex.clisp>> + +<<i-analy.clisp>> + +<<i-code.clisp>> + +<<i-coerce.clisp>> + +<<i-coerfn.clisp>> + +<<i-eval.clisp>> + +<<i-funsel.clisp>> + +<<bookvol5.lisp>> + +<<i-intern.clisp>> + +<<i-map.clisp>> + +<<info.o (AUTO from OUT)>> +<<info.clisp>> + +<<i-output.clisp>> + +<<i-resolv.clisp>> + +<<i-spec1.clisp>> + +<<i-spec2.clisp>> + +<<i-syscmd.clisp>> + +<<iterator.o (AUTO from OUT)>> +<<iterator.clisp>> + +<<i-toplev.clisp>> + +<<i-util.clisp>> + +<<lisplib.clisp>> + +<<mark.o (AUTO from MID)>> + +<<match.clisp>> + +<<metalex.o (AUTO from OUT)>> + +<<metameta.o (AUTO from OUT)>> + +<<modemap.o (AUTO from OUT)>> +<<modemap.clisp>> + +<<msgdb.clisp>> + +<<nag-c02.o (AUTO from OUT)>> +<<nag-c02.clisp>> + +<<nag-c05.o (AUTO from OUT)>> +<<nag-c05.clisp>> + +<<nag-c06.o (AUTO from OUT)>> +<<nag-c06.clisp>> + +<<nag-d01.o (AUTO from OUT)>> +<<nag-d01.clisp>> + +<<nag-d02.o (AUTO from OUT)>> +<<nag-d02.clisp>> + +<<nag-d03.o (AUTO from OUT)>> +<<nag-d03.clisp>> + +<<nag-e01.o (AUTO from OUT)>> +<<nag-e01.clisp>> + +<<nag-e02.o (AUTO from OUT)>> +<<nag-e02.clisp>> + +<<nag-e04.o (AUTO from OUT)>> +<<nag-e04.clisp>> + +<<nag-f01.o (AUTO from OUT)>> +<<nag-f01.clisp>> + +<<nag-f02.o (AUTO from OUT)>> +<<nag-f02.clisp>> + +<<nag-f04.o (AUTO from OUT)>> +<<nag-f04.clisp>> + +<<nag-f07.o (AUTO from OUT)>> +<<nag-f07.clisp>> + +<<nag-s.o (AUTO from OUT)>> +<<nag-s.clisp>> + +<<newfort.clisp>> + +<<nruncomp.o (AUTO from OUT)>> +<<nruncomp.clisp>> + +<<nrunfast.clisp>> + +<<nrungo.clisp>> + +<<nruntime.clisp>> + +<<nrunopt.clisp>> + +<<nspadaux.o (AUTO from OUT)>> + +<<package.o (AUTO from OUT)>> + +<<parse.o (AUTO from OUT)>> + +<<parsing.o (AUTO from OUT)>> + +<<postpar.o (AUTO from OUT)>> + +<<postprop.lisp (AUTO from OUT)>> + +<<preparse.o (AUTO from OUT)>> + +<<profile.o (AUTO from OUT)>> +<<profile.clisp>> + +<<pspad1.o (AUTO from MID)>> + +<<pspad2.o (AUTO from MID)>> + +<<record.clisp>> + +<<rulesets.clisp>> + +<<server.clisp>> + +<<setvart.clisp>> + +<<showimp.o (AUTO from OUT)>> + +<<template.clisp>> + +<<termrw.clisp>> + +<<topics.o (AUTO from OUT)>> +<<topics.clisp>> + +<<trace.clisp>> + +<<warm.data.stanza>> + +<<wi1.o (AUTO from MID)>> + +<<wi2.o (AUTO from MID)>> + +<<xruncomp.o (AUTO from OUT)>> +<<xruncomp.clisp>> + +<<DVI from pamphlet>> + +@ +pp +\eject +\begin{thebibliography}{99} +\bibitem{1} \File{Makefile.pamphlet} +\bibitem{2} \File{src/boot/Makefile.pamphlet} +\bibitem{3} \File{src/interp/bootfuns.lisp.pamphlet} +\bibitem{4} \File{src/interp/setq.lisp.pamphlet} +\bibitem{5} \File{src/interp/patches.lisp.pamphlet} +\bibitem{6} {\bf www.aldor.org} +\bibitem{7} \File{src/interp/apply.boot.pamphlet} +\bibitem{8} \File{src/interp/bits.lisp.pamphlet} +\bibitem{9} \File{src/interp/bootlex.lisp.pamphlet} +\bibitem{10} \File{src/interp/cfuns.lisp.pamphlet} +\bibitem{11} \File{src/interp/comp.lisp.pamphlet} +\bibitem{12} \File{src/interp/construc.lisp.pamphlet} +\bibitem{13} \File{src/interp/daase.lisp.pamphlet} +\bibitem{14} \File{src/interp/debug.lisp.pamphlet} +\bibitem{15} \File{src/interp/def.lisp.pamphlet} +\bibitem{16} \File{src/interp/fortcall.boot.pamphlet} +\bibitem{17} \File{src/interp/fname.lisp.pamphlet} +\bibitem{18} \File{src/interp/fnewmeta.lisp.pamphlet} +\bibitem{19} \File{src/interp/ggreater.lisp.pamphlet} +\bibitem{20} \File{src/interp/hash.lisp.pamphlet} +\bibitem{21} \File{src/interp/macros.lisp.pamphlet} +\bibitem{22} \File{src/interp/metalex.lisp.pamphlet} +\bibitem{23} \File{src/interp/metameta.lisp.pamphlet} +\bibitem{24} \File{src/interp/monitor.lisp.pamphlet} +\bibitem{25} \File{src/interp/newaux.lisp.pamphlet} +\bibitem{26} \File{src/interp/nlib.lisp.pamphlet} +\bibitem{27} \File{src/interp/nocompil.lisp.pamphlet} +\bibitem{28} \File{src/interp/nspadaux.lisp.pamphlet} +\bibitem{29} \File{src/interp/parsing.lisp.pamphlet} +\bibitem{30} \File{src/interp/postprop.lisp.pamphlet} +\bibitem{31} \File{src/interp/preparse.lisp.pamphlet} +\bibitem{32} \File{src/interp/property.lisp.pamphlet} +\bibitem{33} \File{src/interp/sockio.lisp.pamphlet} +\bibitem{34} \File{src/interp/spad.lisp.pamphlet} +\bibitem{35} \File{src/interp/spaderror.lisp.pamphlet} +\bibitem{37} \File{src/interp/union.lisp.pamphlet} +\bibitem{38} \File{src/interp/util.lisp.pamphlet} +\bibitem{39} \File{src/interp/vmlisp.lisp.pamphlet} +\bibitem{40} \File{src/interp/alql.boot.pamphlet} +\bibitem{41} \File{src/interp/buildom.boot.pamphlet} +\bibitem{42} \File{src/interp/c-util.boot.pamphlet} +\bibitem{43} \File{src/interp/nag-c02.boot.pamphlet} +\bibitem{44} \File{src/interp/nag-c05.boot.pamphlet} +\bibitem{45} \File{src/interp/nag-c06.boot.pamphlet} +\bibitem{46} \File{src/interp/nag-d01.boot.pamphlet} +\bibitem{47} \File{src/interp/nag-d02.boot.pamphlet} +\bibitem{48} \File{src/interp/nag-d03.boot.pamphlet} +\bibitem{49} \File{src/interp/nag-e01.boot.pamphlet} +\bibitem{51} \File{src/interp/nag-e02.boot.pamphlet} +\bibitem{52} \File{src/interp/nag-e04.boot.pamphlet} +\bibitem{53} \File{src/interp/nag-f01.boot.pamphlet} +\bibitem{54} \File{src/interp/nag-f02.boot.pamphlet} +\bibitem{55} \File{src/interp/nag-f04.boot.pamphlet} +\bibitem{56} \File{src/interp/nag-f07.boot.pamphlet} +\bibitem{57} \File{src/interp/nag-s.boot.pamphlet} +\bibitem{58} \File{src/interp/category.boot.pamphlet} +\bibitem{59} \File{src/interp/cattable.boot.pamphlet} +\bibitem{60} \File{src/interp/c-doc.boot.pamphlet} +\bibitem{61} \File{src/interp/clam.boot.pamphlet} +\bibitem{62} \File{src/interp/clammed.boot.pamphlet} +\bibitem{63} \File{src/interp/compat.boot.pamphlet} +\bibitem{64} \File{src/interp/compiler.boot.pamphlet} +\bibitem{65} \File{src/interp/profile.boot.pamphlet} +\bibitem{66} \File{src/interp/compress.boot.pamphlet} +\bibitem{67} \File{src/interp/database.boot.pamphlet} +\end{thebibliography} +\end{document} |