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/algebra/Makefile.pamphlet | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/algebra/Makefile.pamphlet')
-rw-r--r-- | src/algebra/Makefile.pamphlet | 2305 |
1 files changed, 2305 insertions, 0 deletions
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet new file mode 100644 index 00000000..7e36a81e --- /dev/null +++ b/src/algebra/Makefile.pamphlet @@ -0,0 +1,2305 @@ +%% Oh Emacs, this is a -*- Makefile -*-, so give me tabs. +\documentclass{article} +\usepackage{axiom} + +\title{\$SPAD/src/algebra Makefile} +\author{Timothy Daly \and Gabriel Dos~Reis} + +\begin{document} +\maketitle + +\begin{abstract} +\end{abstract} +\eject + +\tableofcontents +\eject + +\section{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{src/algebra/exposed.lsp.pamphlet} + +otherwise the new algebra won't be loaded by the interpreter when needed. + +Since understanding is the key to making correct changes to this file +I'll work on explaining the details of why things need to exist. + +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: +\begin{enumerate} +\item Find out where the algebra code lives in the lattice. + +You do this by +\begin{enumerate} +\item starting a new interpsys session +\item collecting all the names of the algebra files BAR requires +\item determining which layer each of the required files resides +\item determine the highest layer (e.g. 14) that contains the required files +\end{enumerate} + +\item insert the documentation into the next layer (e.g. 15) +\item insert the [[\${OUT}/BAR.o]] file into the layer's file list +\end{enumerate} + +\section{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. + +The cycle for [[SETCAT]] is longer consisting of: [[SETCAT]] needs +{\bf SINT} needs {\bf UFD} needs {\bf GCDDOM} needs {\bf COMRING} needs +{\bf RING} needs {\bf RNG} needs {\bf ABELGRP} needs {\bf CABMON} needs +{\bf ABELMON} needs {\bf ABELSG} needs {\bf SETCAT}. + +It is highly recommended that you try to become a developer of Axiom +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 the code that follows we find the categories, packages and domains +that compile with no dependencies and call this set ``layer 0''. Next +we find the categories, packages and domains that will compile using +only ``layer 0'' code and call this ``layer 1''. We walk up the +lattice in this fashion adding layers. Note that at layer 3 this +process runs into cycles and we create the ``layer 3 bootstrap'' +stanzas before continuing upward. + +\section{The Algebra Lattice Layers} + +\subsection{Layer 0 Bootstrap} + +\subsubsection{Completed spad files} + +\begin{verbatim} +si.spad.pamphlet (INS SINT) +\end{verbatim} + +Note well that none of the algebra stanzas should include these +files in the preconditions otherwise we have an infinite compile +loop. These files are originally bootstrapped from lisp code +when we build the system for the first time but they are +forcibly recompiled at the end of the build so they reflect +current code (just in case someone changes the spad code but +does not re-cache the generated lisp). If you add these files +as preconditions (note that they are all in the \File{strap/} +directory rather than the {\bf OUT} directory like everything +else) then the final recompile will invalidate all of the +rest of the algebra targets which will get rebuilt again causing +these targets to be out of date. The rest of the loop is left +up to the student. + +The bootstrap process works because first we ask for the compiled +lisp code stanzas (the \File{strap/BAR.o} files), THEN we ask for +the final algebra code stanzas (the [[\${OUT}/BAR.o]] files). This +is a very subtle point so think it through carefully. Notice that +this is the only layer calling for \File{strap/} files. All other +layers call for [[\${OUT}]] files. If you break this the world +will no longer compile so don't change it if you don't understand it. + +\begin{verbatim} +LAYER0BOOTSTRAP=${OUT}/XPR.o +\end{verbatim} + +<<layer0 bootstrap>>= +# The list of objects necessary to bootstrap the whole algebra library. +axiom_algebra_layer_strap_objects = \ + strap/ABELGRP.o strap/ABELGRP-.o strap/ABELMON.o strap/ABELMON-.o \ + strap/ABELSG.o strap/ABELSG-.o strap/ALAGG.o strap/BOOLEAN.o \ + strap/CABMON.o strap/CHAR.o strap/CLAGG.o strap/CLAGG-.o \ + strap/COMRING.o strap/DFLOAT.o strap/DIFRING.o strap/DIFRING-.o \ + strap/DIVRING.o strap/DIVRING-.o strap/ENTIRER.o strap/ES.o \ + strap/ES-.o strap/EUCDOM.o strap/EUCDOM-.o strap/FFIELDC.o \ + strap/FFIELDC-.o strap/FPS.o strap/FPS-.o strap/GCDDOM.o \ + strap/GCDDOM-.o strap/HOAGG.o strap/HOAGG-.o strap/ILIST.o \ + strap/INS.o strap/INS-.o strap/INT.o strap/INTDOM.o \ + strap/INTDOM-.o strap/ISTRING.o strap/LIST.o strap/LNAGG.o \ + strap/LNAGG-.o strap/LSAGG.o strap/LSAGG-.o strap/MONOID.o \ + strap/MONOID-.o strap/MTSCAT.o strap/NNI.o strap/OINTDOM.o \ + strap/ORDRING.o strap/ORDRING-.o strap/OUTFORM.o strap/PI.o \ + strap/PRIMARR.o strap/POLYCAT.o strap/POLYCAT-.o strap/PSETCAT.o \ + strap/PSETCAT-.o strap/QFCAT.o strap/QFCAT-.o strap/RCAGG.o \ + strap/RCAGG-.o strap/REF.o strap/RING.o strap/RING-.o \ + strap/RNG.o strap/RNS.o strap/RNS-.o strap/SETAGG.o \ + strap/SETAGG-.o strap/SETCAT.o strap/SETCAT-.o strap/SINT.o \ + strap/STAGG.o strap/STAGG-.o strap/SYMBOL.o strap/TSETCAT.o \ + strap/TSETCAT-.o strap/UFD.o strap/UFD-.o strap/ULSCAT.o \ + strap/UPOLYC.o strap/UPOLYC-.o strap/URAGG.o strap/URAGG-.o \ + strap/VECTOR.o + +@ +<<layer0 copy>>= + +axiom_algebra_bootstrap = \ + ABELGRP.o ABELGRP-.o ABELMON.o ABELMON-.o \ + ABELSG.o ABELSG-.o ALAGG.o BOOLEAN.o \ + CABMON.o CHAR.o CLAGG.o CLAGG-.o \ + COMRING.o DFLOAT.o DIFRING.o DIFRING-.o \ + DIVRING.o DIVRING-.o ENTIRER.o ES.o \ + ES-.o EUCDOM.o EUCDOM-.o FFIELDC.o \ + FFIELDC-.o FPS.o FPS-.o GCDDOM.o \ + GCDDOM-.o HOAGG.o HOAGG-.o ILIST.o \ + INS.o INS-.o INT.o INTDOM.o \ + INTDOM-.o ISTRING.o LIST.o LNAGG.o \ + LNAGG-.o LSAGG.o LSAGG-.o MONOID.o \ + MONOID-.o MTSCAT.o NNI.o OINTDOM.o \ + ORDRING.o ORDRING-.o OUTFORM.o PI.o \ + PRIMARR.o POLYCAT.o POLYCAT-.o PSETCAT.o \ + PSETCAT-.o QFCAT.o QFCAT-.o RCAGG.o \ + RCAGG-.o REF.o RING.o RING-.o \ + RNG.o RNS.o RNS-.o SETAGG.o \ + SETAGG-.o SETCAT.o SETCAT-.o SINT.o \ + STAGG.o STAGG-.o SYMBOL.o TSETCAT.o \ + TSETCAT-.o UFD.o UFD-.o ULSCAT.o \ + UPOLYC.o UPOLYC-.o URAGG.o URAGG-.o \ + VECTOR.o + +axiom_algebra_bootstrap_nrlibs = \ + $(axiom_algebra_bootstrap:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_bootstrap_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_bootstrap)) +@ + +\subsection{Layer 0} + +\subsubsection{Completed spad files} + +\begin{verbatim} +attreg.spad.pamphlet (ATTREG) +dhmatrix.spad.pamphlet (DHMATRIX) +omcat.spad.pamphlet (OM) +print.spad.pamphlet (PRINT) +ptranfn.spad.pamphlet (PTRANFN) +system.spad.pamphlet (MSYSCMD) +\end{verbatim} + +<<layer0>>= + +axiom_algebra_layer_0 = \ + AHYP.o ATTREG.o CFCAT.o ELTAB.o \ + KOERCE.o KONVERT.o MSYSCMD.o ODEIFTBL.o \ + OM.o OMCONN.o OMDEV.o OUT.o \ + PRIMCAT.o PRINT.o PTRANFN.o SPFCAT.o \ + TYPE.o + +axiom_algebra_layer_0_nrlibs = \ + $(axiom_algebra_layer_0:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_0_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_0)) +@ + +\subsection{Layer 1} + +\subsubsection{Completed spad files} + +\begin{verbatim} +ituple.spad.pamphlet (ITFUN2 ITFUN3 ITUPLE) +mkrecord.spad.pamphlet (MKRECORD) +pcurve.spad.pamphlet (PPCURVE PSCURVE) +coerce.spad.pamphlet (TYPE KOERCE KONVERT RETRACT) +\end{verbatim} + +<<layer1>>= +axiom_algebra_layer_1 = \ + ANY1.o COMBOPC.o DROPT1.o EQ2.o \ + FORTCAT.o ITFUN2.o ITFUN3.o ITUPLE.o \ + MKBCFUNC.o MKRECORD.o MKUCFUNC.o NONE1.o \ + PATAB.o PLOT1.o PPCURVE.o PSCURVE.o \ + REAL.o RESLATC.o RETRACT.o RETRACT-.o \ + SEGBIND2.o SEGCAT.o STREAM1.o STREAM2.o \ + STREAM3.o + +axiom_algebra_layer_1_nrlibs = \ + $(axiom_algebra_layer_1:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_1_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_1)) +@ + +\subsection{Layer 2} + +\subsubsection{Completed spad files} + +<<layer2>>= +axiom_algebra_layer_2 = \ + FMC.o FMFUN.o FORTFN.o FVC.o \ + FVFUN.o INTRET.o SEGXCAT.o + +axiom_algebra_layer_2_nrlibs = \ + $(axiom_algebra_layer_2:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_2_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_2)) +@ + +\subsection{Layer 3} + +\subsubsection{Completed spad files} + +\begin{verbatim} +grdef.spad.pamphlet (GRDEF) +\end{verbatim} + +<<layer3>>= +axiom_algebra_layer_3 = \ + AGG.o AGG-.o BASTYPE.o BASTYPE-.o \ + GRDEF.o LIST3.o MKFUNC.o + +axiom_algebra_layer_3_nrlibs = \ + $(axiom_algebra_layer_3:.$(OBJEXT=./NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_3_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_3)) +@ + +\subsubsection{Completed spad files} + +\begin{verbatim} +annacat.spad.pamphlet (NIPROB ODEPROB PDEPROB OPTPROB NUMINT ODECAT PDECAT + OPTCAT) +color.spad.pamphlet (COLOR PALETTE) +mappkg.spad.pamphlet (MAPHACK1 MAPHACK2 MAPHACK3 MAPPKG1 MAPPKG2 MAPPKG3) +paramete.spad.pamphlet (PARPCURV PARPC2 PARSCURV PARSC2 PARSURF PARSU2 +suchthat.spad.pamphlet (SUCH) +ystream.spad.pamphlet (YSTREAM) +\end{verbatim} + +<<layer4>>= +axiom_algebra_layer_4 = \ + ANON.o COLOR.o COMM.o COMPPROP.o \ + ELTAGG.o ELTAGG-.o ESCONT1.o EXIT.o \ + FAMONC.o FILECAT.o FINITE.o FNCAT.o \ + FORMULA1.o IDPC.o IEVALAB.o IEVALAB-.o \ + INTBIT.o LMODULE.o LOGIC.o LOGIC-.o \ + MAPHACK1.o MAPHACK2.o MAPHACK3.o MAPPKG1.o \ + MAPPKG2.o MAPPKG3.o MONAD.o MONAD-.o \ + NIPROB.o NONE.o NUMINT.o ODECAT.o \ + ODEPROB.o OMENC.o ONECOMP2.o OPTCAT.o \ + OPTPROB.o ORDSET.o ORDSET-.o PALETTE.o \ + PARPCURV.o PARPC2.o PARSCURV.o PARSC2.o \ + PARSURF.o PARSU2.o PATMAB.o PATRES2.o \ + PATTERN1.o PDECAT.o PDEPROB.o REPSQ.o \ + REPDB.o RFDIST.o RIDIST.o RMODULE.o \ + SEXCAT.o SGROUP.o SGROUP-.o SPACEC.o \ + SPLNODE.o STEP.o SUCH.o TEX1.o \ + UDVO.o YSTREAM.o + +axiom_algebra_layer_4_nrlibs = \ + $(axiom_algebra_layer_4:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_4_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_4)) +@ + +\subsection{Layer 5} + +\subsubsection{Completed spad files} + +\begin{verbatim} +equation1.spad.pamphlet (EVALAB IEVALAB) +\end{verbatim} + +<<layer5>>= +axiom_algebra_layer_5 = \ + ATRIG.o ATRIG-.o BMODULE.o CACHSET.o \ + CHARNZ.o CHARZ.o DVARCAT.o DVARCAT-.o \ + ELEMFUN.o ELEMFUN-.o ESTOOLS2.o EVALAB.o \ + EVALAB-.o FCOMP.o FEVALAB.o FEVALAB-.o \ + FPATMAB.o GROUP.o GROUP-.o IDPAM.o \ + IDPO.o INCRMAPS.o IXAGG.o IXAGG-.o \ + KERNEL2.o LALG.o LALG-.o LINEXP.o \ + MODMONOM.o MONADWU.o MONADWU-.o MRF2.o \ + NARNG.o NARNG-.o NSUP2.o OASGP.o \ + ODVAR.o OPQUERY.o ORDFIN.o ORDMON.o \ + PATMATCH.o PERMCAT.o PDRING.o PDRING-.o \ + SDVAR.o SUP2.o TRIGCAT.o TRIGCAT-.o \ + ULS2.o UP2.o + +axiom_algebra_layer_5_nrlibs = \ + $(axiom_algebra_layer_5:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_5_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_5)) +@ + +\subsection{Layer6} + +\subsubsection{Completed spad files} + +\begin{verbatim} +fmod.spad.pamphlet (ZMOD) +sortpak.spad.pamphlet (SORTPAK) +\end{verbatim} + +<<layer6>>= +axiom_algebra_layer_6 = \ + AUTOMOR.o BGAGG.o BGAGG-.o BRAGG.o \ + BRAGG-.o CARTEN2.o CHARPOL.o COMPLEX2.o \ + DIFEXT.o DIFEXT-.o DLAGG.o ELAGG.o \ + ELAGG-.o ES1.o ES2.o GRMOD.o \ + GRMOD-.o HYPCAT.o HYPCAT-.o MKCHSET.o \ + MODRING.o MODULE.o MODULE-.o NASRING.o \ + NASRING-.o OAMON.o SORTPAK.o ZMOD.o + +axiom_algebra_layer_6_nrlibs = \ + $(axiom_algebra_layer_6:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_6_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_6)) +@ + +\subsection{Layer7} + +\subsubsection{Completed spad files} + +\begin{verbatim} +\end{verbatim} + +<<layer7>>= +axiom_algebra_layer_7 = \ + ALGEBRA.o ALGEBRA-.o BTCAT.o BTCAT-.o \ + FMCAT.o IDPOAM.o IFAMON.o GRALG.o \ + GRALG-.o OCAMON.o PRQAGG.o QUAGG.o \ + SKAGG.o + +axiom_algebra_layer_7_nrlibs = \ + $(axiom_algebra_layer_7:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_7_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_7)) +@ + +\subsection{Layer8} + +\subsubsection{Completed spad files} + +\begin{verbatim} +card.spad.pamphlet (CARD) +fortcat.spad.pamphlet (FORTFN FMC FORTCAT FVC FMTC FMFUN FVFUN) +\end{verbatim} + +<<layer8>>= +axiom_algebra_layer_8 = \ + BSTREE.o BTOURN.o CARD.o DRAWHACK.o \ + DQAGG.o FACTFUNC.o FMTC.o FR2.o \ + FRAC2.o FRUTIL.o ITAYLOR.o MLO.o \ + NAALG.o NAALG-.o OAGROUP.o OAMONS.o \ + OP.o ORDCOMP2.o PID.o RANDSRC.o \ + UNISEG2.o XALG.o + +axiom_algebra_layer_8_nrlibs = \ + $(axiom_algebra_layer_8:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_8_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_8)) +@ + +\subsection{Layer9} + +\subsubsection{Completed spad files} + +\begin{verbatim} +degred.spad.pamphlet (DEGRED) +indexedp.spad.pamphlet (IDPC IDPO IDPAM IDPOAM IDPOAMS IDPAG) +product.spad.pamphlet (PRODUCT) +retract.spad.pamphlet (RETRACT FRETRCT RATRET) +sf.spad.pamphlet (REAL RADCAT RNS FPS DFLOAT) +\end{verbatim} + +<<layer9>>= +axiom_algebra_layer_9 = \ + AMR.o AMR-.o DEGRED.o DLP.o \ + EAB.o ESTOOLS1.o FAGROUP.o FAMONOID.o \ + FIELD.o FIELD-.o FLAGG.o FLAGG-.o \ + FLINEXP.o FLINEXP-.o FRETRCT.o FRETRCT-.o \ + FSERIES.o FT.o IDPAG.o IDPOAMS.o \ + INFINITY.o LA.o OMLO.o ORTHPOL.o \ + PRODUCT.o PADICCT.o PMPRED.o PMASS.o \ + PTFUNC2.o RADCAT.o RADCAT-.o RATRET.o \ + RADUTIL.o UPXS2.o XFALG.o ZLINDEP.o + +axiom_algebra_layer_9_nrlibs = \ + $(axiom_algebra_layer_9:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_9_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_9)) +@ + +\subsection{Layer10} + +\subsubsection{Completed spad files} + +\begin{verbatim} +complet.spad.pamphlet (ORDCOMP ORDCOMP2 ONECOMP ONECOMP2 INFINITY) +cra.spad.pamphlet (CRAPACK) +defaults.spad.pamphlet (REPSQ REPDB FLASORT) +drawpak.spad.pamphlet (DRAWCX) +free.spad.pamphlet (LMOPS FMONOID FGROUP FAMONC IFAMON FAMONOID FAGROUP) +fourier.spad.pamphlet (FCOMP FSERIES) +functions.spad.pamphlet (BFUNCT) +mesh.spad.pamphlet (MESH) +moebius.spad.pamphlet (MOEBIUS) +mring.spad.pamphlet (MRING MRF2) +opalg.spad.pamphlet (MODOP OP) +partperm.spad.pamphlet (PARTPERM) +pgrobner.spad.pamphlet (PGROEB) +plottool.spad.pamphlet (PLOTTOOL) +setorder.spad.pamphlet (UDPO UDVO) +sttaylor.spad.pamphlet (STTAYLOR) +tableau.spad.pamphlet (TABLBUMP TABLEAU) +viewpack.spad.pamphlet (VIEW) +\end{verbatim} + +<<layer10>>= +axiom_algebra_layer_10 = \ + A1AGG.o A1AGG-.o ARR2CAT.o ARR2CAT-.o \ + ASP34.o BBTREE.o BFUNCT.o BPADIC.o \ + BTREE.o CRAPACK.o DEQUEUE.o DLIST.o \ + DRAWCX.o D01GBFA.o D02EJFA.o D03FAFA.o \ + DRAWPT.o FAMR.o FAMR-.o FLASORT.o \ + FLAGG2.o FGROUP.o FM.o FM1.o \ + FPC.o FPC-.o FMONOID.o INDE.o \ + IPADIC.o IROOT.o IR2.o LEXP.o \ + LIECAT.o LIECAT-.o LIST2.o LIST2MAP.o \ + LMOPS.o LZSTAGG.o LZSTAGG-.o MAGMA.o \ + MESH.o MOEBIUS.o MODFIELD.o MODOP.o \ + MRING.o MTHING.o NCNTFRAC.o NCODIV.o \ + NUMTUBE.o ODR.o OFMONOID.o ONECOMP.o \ + ORDCOMP.o OREPCAT.o OREPCAT-.o OWP.o \ + PADIC.o PATTERN2.o PATLRES.o PARTPERM.o \ + PBWLB.o PENDTREE.o PGE.o PGROEB.o \ + PINTERP.o PLOTTOOL.o PFR.o PMDOWN.o \ + PRTITION.o PMINS.o PMLSAGG.o PMTOOLS.o \ + PSCAT.o PSCAT-.o QFORM.o QUEUE.o \ + SCACHE.o SEG.o SEG2.o SEXOF.o \ + STACK.o STTAYLOR.o TABLBUMP.o TABLEAU.o \ + TOPSP.o TRANFUN.o TRANFUN-.o TUBE.o \ + UDPO.o UNISEG.o VIEW.o VSPACE.o \ + VSPACE-.o XPOLYC.o XPR.o + +axiom_algebra_layer_10_nrlibs = \ + $(axiom_algebra_layer_10:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_10_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_10)) +@ + +\subsection{Layer11} + +\subsubsection{Completed spad files} + +\begin{verbatim} +array1.spad.pamphlet (PRIMARR PRIMARR2 TUPLE IFARRAY FARRAY IARRAY1 ARRAY1 + ARRAY12) +bags.spad.pamphlet (STACK ASTACK QUEUE DEQUEUE HEAP) +combinat.spad.pamphlet (COMBINAT) +ffx.spad.pamphlet (IRREDFFX) +galutil.spad.pamphlet (GALUTIL) +matstor.spad.pamphlet (MATSTOR) +ore.spad.pamphlet (OREPCAT APPLYORE AUTOMOR OREPCTO ORESUP OREUP) +plot3d.spad.pamphlet (PLOT3D) +prtition.spad.pamphlet (PRTITION SYMPOLY) +stream.spad.pamphlet (LZSTAGG CSTTOOLS STREAM STREAM1 STREAM2 STREAM3) +trigcat.spad.pamphlet (ELEMFUN AHYP ATRIG HYPCAT TRANFUN TRIGCAT PRIMCAT + LFCAT CFCAT SPFCAT) +xlpoly.spad.pamphlet (MAGMA LWORD LIECAT FLALG XEXPPKG LPOLY PBWLB XPBWPOLY + LEXP) +xpoly.spad.pamphlet (OFMONOID FMCAT FM1 XALG XFALG XPOLYC XPR XDPOLY XRPOLY + XPOLY) +\end{verbatim} + +<<layer11>>= +axiom_algebra_layer_11 = \ + APPLYORE.o ARRAY1.o ARRAY12.o ARRAY2.o \ + ASTACK.o BTAGG.o BTAGG-.o COMBINAT.o \ + CSTTOOLS.o D01FCFA.o E04MBFA.o FARRAY.o \ + FLALG.o GALUTIL.o HEAP.o IARRAY1.o \ + IARRAY2.o IFARRAY.o INTCAT.o INTHEORY.o \ + IRREDFFX.o LFCAT.o LODOCAT.o LODOCAT-.o \ + LWORD.o MATCAT.o MATCAT-.o MATSTOR.o \ + ORESUP.o OREPCTO.o OREUP.o PLOT3D.o \ + PR.o PREASSOC.o PRIMARR2.o REDORDER.o \ + SRAGG.o SRAGG-.o STREAM.o SYMPOLY.o \ + TS.o TUPLE.o UPSCAT.o UPSCAT-.o \ + VECTCAT.o VECTCAT-.o XDPOLY.o XEXPPKG.o \ + XF.o XF-.o XPBWPOLY.o XPOLY.o \ + XRPOLY.o + +axiom_algebra_layer_11_nrlibs = \ + $(axiom_algebra_layer_11:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_11_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_11)) +@ + +\subsection{Layer12} + +\subsubsection{Completed spad files} + +\begin{verbatim} +\end{verbatim} + +<<layer12>>= +axiom_algebra_layer_12 = \ + BITS.o DIRPROD2.o IMATRIX.o IVECTOR.o \ + LPOLY.o LSMP.o LSMP1.o MATCAT2.o \ + PTCAT.o STRICAT.o TRIMAT.o + +axiom_algebra_layer_12_nrlibs = \ + $(axiom_algebra_layer_12:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_12_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_12)) +@ + +\subsection{Layer13} + +\subsubsection{Completed spad files} + +\begin{verbatim} +carten.spad.pamphlet (GRMOD GRALG CARTEN CARTEN2) +catdef.spad.pamphlet (ABELGRP ABELMON ABELSG ALGEBRA BASTYPE BMODULE CABMON + CHARNZ CHARZ COMRING DIFRING DIFEXT DIVRING ENTIRER + EUCDOM FIELD FINITE FLINEXP GCDDOM GROUP INTDOM LMODULE + LINEXP MODULE MONOID OAGROUP OAMON OAMONS OASGP OCAMON + ORDFIN OINTDOM ORDMON ORDRING ORDSET PDRING PFECAT PID + RMODULE RING RNG SGROUP SETCAT STEP UFD VSPACE) +clifford.spad.pamphlet (QFORM CLIF) +clip.spad.pamphlet (CLIP) +coordsys.spad.pamphlet (COORDSYS) +dhmatrix.spad.pamphlet (DHMATRIX) +d02routine.spad.pamphlet (D02BBFA D02BHFA D02CJFA D02EJFA) +ffpoly2.spad.pamphlet (FFPOLY2) +irsn.spad.pamphlet (IRSN) +numode.spad.pamphlet (NUMODE) +numquad.spad.pamphlet (NUMQUAD) +perman.spad.pamphlet (GRAY PERMAN) +pseudolin.spad.pamphlet (PSEUDLIN) +rep2.spad.pamphlet (REP2) +sex.spad.pamphlet (SEXCAT SEXOF SEX) +solvedio.spad.pamphlet (DIOSP) +\end{verbatim} + +<<layer13>>= +axiom_algebra_layer_13 = \ + ASSOCEQ.o CARTEN.o CLIF.o CLIP.o \ + COORDSYS.o DBASE.o DHMATRIX.o DIOSP.o \ + DIRPCAT.o DIRPCAT-.o D02BBFA.o D02BHFA.o \ + D02CJFA.o FAXF.o FAXF-.o FFPOLY2.o \ + FNLA.o GRAY.o HB.o IRSN.o \ + MCALCFN.o MHROWRED.o NUMODE.o NUMQUAD.o \ + ODESYS.o ODETOOLS.o ORDFUNS.o PERMAN.o \ + PFECAT.o PFECAT-.o POINT.o PSEUDLIN.o \ + PTPACK.o REP2.o SETMN.o SEX.o \ + STRING.o SYMFUNC.o VECTOR2.o + +axiom_algebra_layer_13_nrlibs = \ + $(axiom_algebra_layer_13:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_13_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_13)) +@ + +\subsection{Layer14} + +\subsubsection{Completed spad files} + +\begin{verbatim} +allfact.spad.pamphlet (MRATFAC MPRFF MPCPF GENMFACT RFFACTOR SUPFRACF) +array2.spad.pamphlet (ARR2CAT IIARRAY2 IARRAY2 ARRAY2) +bezout.spad.pamphlet (BEZOUT) +boolean.spad.pamphlet (REF LOGIC BOOLEAN IBITS BITS) +brill.spad.pamphlet (BRILL) +cden.spad.pamphlet (ICDEN CDEN UPCDEN MCDEN) +contfrac.spad.pamphlet (CONTFRAC NCNTFRAC) +cycles.spad.pamphlet (CYCLES EVALCYC) +cyclotom.spad.pamphlet (CYCLOTOM) +ddfact.spad.pamphlet (DDFACT) +equation2.spad.pamphlet (EQ EQ2 FEVALAB) +error.spad.pamphlet (ERROR) +facutil.spad.pamphlet (FACUTIL PUSHVAR) +ffcat.spad.pamphlet (FPC XF FAXF DLP FFIELDC FFSLPE) +fff.spad.pamphlet (FFF) +ffhom.spad.pamphlet (FFHOM) +ffpoly.spad.pamphlet (FFPOLY) +fname.spad.pamphlet (FNCAT FNAME) +formula.spad.pamphlet (FORMULA FORMULA1) +fraction.spad.pamphlet (LO LA QFCAT QFCAT2 FRAC LPEFRAC FRAC2) +galfactu.spad.pamphlet (GALFACTU) +galpolyu.spad.pamphlet (GALPOLYU) +gb.spad.pamphlet (GB) +gbeuclid.spad.pamphlet (GBEUCLID) +gbintern.spad.pamphlet (GBINTERN) +gdirprod.spad.pamphlet (ORDFUNS ODP HDP SHDP) +geneez.spad.pamphlet (GENEEZ) +ghensel.spad.pamphlet (GHENSEL) +gpgcd.spad.pamphlet (GENPGCD) +gpol.spad.pamphlet (LAUPOL) +groebf.spad.pamphlet (GBF) +groebsol.spad.pamphlet (GROEBSOL) +intrf.spad.pamphlet (SUBRESP MONOTOOL INTHERTR INTTR INTRAT INTRF) +idecomp.spad.pamphlet (IDECOMP) +leadcdet.spad.pamphlet (LEADCDET) +lindep.spad.pamphlet (LINDEP ZLINDEP) +lingrob.spad.pamphlet (LGROBP) +listgcd.spad.pamphlet (HEUGCD) +matfuns.spad.pamphlet (IMATLIN MATCAT2 RMCAT2 IMATQF MATLIN) +mfinfact.spad.pamphlet (MFINFACT) +mlift.spad.pamphlet (MLIST) +moddfact.spad.pamphlet (MDDFACT) +modmon.spad.pamphlet (MODMON) +modring.spad.pamphlet (MODRING EMR MODFIELD) +mts.spad.pamphlet (SMTS TS) +multsqfr.spad.pamphlet (MULTSQFR) +newpoint.spad.pamphlet (PTCAT POINT COMPPROP SUBSPACE PTPACK PTFUNC2) +numtheor.spad.pamphlet (INTHEORY PNTHEORY) +npcoef.spad.pamphlet (NPCOEF) +omdev.spad.pamphlet (OMENC OMDEV OMCONN OMPKG) +omserver.spad.pamphlet (OMSERVER) +padic.spad.pamphlet (PADICCT IPADIC PADIC BPADIC PADICRC PADICRAT BPADICRT) +pdecomp.spad.pamphlet (PCOMP PDECOMP) +pfbr.spad.pamphlet (PFBRU PFBR) +pfr.spad.pamphlet (PFR PFRPAC) +pgcd.spad.pamphlet (PGCD) +pinterp.spad.pamphlet (PINTERPA PINTERP) +pleqn.spad.pamphlet (PLEQN) +poltopol.spad.pamphlet (MPC2 MPC3 POLTOPOL) +poly.spad.pamphlet (FM PR SUP SUP2 UP UP2 POLY2UP UPSQFREE PSQFR UPMP) +polycat.spad.pamphlet (AMR FAMR POLYCAT POLYLIFT UPOLYC UPOLYC2 COMMUPC) +prs.spad.pamphlet (PRS) +radix.spad.pamphlet (RADIX BINARY DECIMAL HEXADEC RADUTIL) +ratfact.spad.pamphlet (RATFACT) +rderf.spad.pamphlet (RDETR) +realzero.spad.pamphlet (REAL0) +real0q.spad.pamphlet (REAL0Q) +resring.spad.pamphlet (RESRING) +rf.spad.pamphlet (POLYCATQ RF) +solvefor.spad.pamphlet (SOLVEFOR) +solvelin.spad.pamphlet (LSMP LSMP1 LSPP) +smith.spad.pamphlet (SMITH) +sttf.spad.pamphlet (STTF STTFNC) +sturm.spad.pamphlet (SHP) +sum.spad.pamphlet (ISUMP GOSPER SUMRF) +tex.spad.pamphlet (TEX) +tree.spad.pamphlet (TREE BTCAT BTREE BSTREE BTOURN BBTREE PENDTREE) +twofact.spad.pamphlet (NORMRETR TWOFACT) +unifact.spad.pamphlet (UNIFACT) +updecomp.spad.pamphlet (UPDECOMP) +updivp.spad.pamphlet (UPDIVP) +viewDef.spad.pamphlet (VIEWDEF) +vector.spad.pamphlet (VECTCAT IVECTOR VECTOR VECTOR2 DIRPCAT DIRPROD DIRPROD2) +view2D.spad.pamphlet (GRIMAGE VIEW2D) +void.spad.pamphlet (VOID EXIT) +weier.spad.pamphlet (WEIER) +wtpol.spad.pamphlet (WP OWP) +\end{verbatim} + +<<layer14>>= +axiom_algebra_layer_14 = \ + ASP1.o ASP10.o ASP24.o ASP4.o \ + ASP50.o ASP6.o ASP73.o BALFACT.o \ + BEZOUT.o BINARY.o BINFILE.o BOUNDZRO.o \ + BPADICRT.o BRILL.o CDEN.o CHVAR.o \ + COMMUPC.o CONTFRAC.o CVMP.o CYCLOTOM.o \ + CYCLES.o DDFACT.o DECIMAL.o DIOPS.o \ + DIOPS-.o DIRPROD.o DISPLAY.o DMP.o \ + DPMO.o DPOLCAT.o DPOLCAT-.o D01AJFA.o \ + D01AKFA.o D01ALFA.o D01AMFA.o D01APFA.o \ + D01AQFA.o EMR.o EQ.o ERROR.o \ + EVALCYC.o E04DGFA.o E04FDFA.o E04GCFA.o \ + E04JAFA.o FACUTIL.o FF.o FFCG.o \ + FFCGX.o FFHOM.o FFNB.o FFNBX.o \ + FFPOLY.o FFX.o FFSLPE.o FGLMICPK.o \ + FILE.o FINAALG.o FINAALG-.o FINRALG.o \ + FINRALG-.o FFF.o FLOATRP.o FNAME.o \ + FOP.o FORMULA.o FORT.o FRAC.o \ + FTEM.o GENEEZ.o GENMFACT.o GENPGCD.o \ + GALFACTU.o GALPOLYU.o GB.o GBEUCLID.o \ + GBF.o GBINTERN.o GHENSEL.o GMODPOL.o \ + GOSPER.o GRIMAGE.o GROEBSOL.o HDMP.o \ + HDP.o HEXADEC.o HEUGCD.o IBPTOOLS.o \ + IFF.o IBITS.o ICARD.o ICDEN.o \ + IDECOMP.o IIARRAY2.o IMATLIN.o IMATQF.o \ + INMODGCD.o INNMFACT.o INPSIGN.o INTHERTR.o \ + INTRAT.o INTRF.o INTSLPE.o INTTR.o \ + ISUMP.o LAUPOL.o LEADCDET.o LGROBP.o \ + LIMITRF.o LINDEP.o LO.o LPEFRAC.o \ + LSPP.o MATLIN.o MCDEN.o MDDFACT.o \ + MFINFACT.o MFLOAT.o MINT.o MLIFT.o \ + MMAP.o MODMON.o MONOTOOL.o MPCPF.o \ + MPC2.o MPC3.o MPOLY.o MPRFF.o \ + MRATFAC.o MULTSQFR.o NORMRETR.o NPCOEF.o \ + NSUP.o NTPOLFN.o ODP.o ODEPRIM.o \ + ODEPRRIC.o OMPKG.o OMSERVER.o PADEPAC.o \ + PADICRAT.o PADICRC.o PCOMP.o PDECOMP.o \ + PF.o PFBR.o PFBRU.o PFOTOOLS.o \ + PFRPAC.o PGCD.o PINTERPA.o PLEQN.o \ + PMPLCAT.o PMQFCAT.o PNTHEORY.o POLUTIL.o \ + POLTOPOL.o POLYCATQ.o POLYLIFT.o POLYROOT.o \ + POLY2.o POLY2UP.o PRS.o PSQFR.o \ + PUSHVAR.o QALGSET.o QFCAT2.o RADIX.o \ + RATFACT.o RCFIELD.o RCFIELD-.o RDETR.o \ + RDETRS.o REAL0.o REAL0Q.o REALSOLV.o \ + RESRING.o RETSOL.o RF.o RFFACTOR.o \ + RMATCAT.o RMATCAT-.o RRCC.o RRCC-.o \ + SCPKG.o SHDP.o SHP.o SIGNRF.o \ + SMITH.o SMP.o SMTS.o SOLVEFOR.o \ + SPLTREE.o STINPROD.o STTFNC.o SUBRESP.o \ + SUMRF.o SUP.o SUPFRACF.o TANEXP.o \ + TEMUTL.o TEX.o TEXTFILE.o TREE.o \ + TWOFACT.o UNIFACT.o UP.o UPCDEN.o \ + UPDECOMP.o UPDIVP.o UPMP.o UPOLYC2.o \ + UPXSCAT.o UPSQFREE.o VIEWDEF.o VIEW2D.o \ + VOID.o WEIER.o WP.o + +axiom_algebra_layer_14_nrlibs = \ + $(axiom_algebra_layer_14:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_14_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_14)) +@ + +\subsection{Layer15} + +\subsubsection{Completed spad files} + +\begin{verbatim} +dpolcat.spad.pamphlet (DVARCAT ODVAR SDVAR DPOLCAT DSMP ODPOL SDPOL) +matcat.spad.pamphlet (MATCAT RMATCAT SMATCAT) +plot.spad.pamphlet (PLOT PLOT1) +\end{verbatim} + +<<layer15>>= +axiom_algebra_layer_15 = \ + DIAGG.o DIAGG-.o DSMP.o EXPUPXS.o \ + FRAMALG.o FRAMALG-.o MDAGG.o ODPOL.o \ + PLOT.o RMCAT2.o ROIRC.o SDPOL.o \ + SMATCAT.o SMATCAT-.o TUBETOOL.o UPXSCCA.o \ + UPXSCCA-.o + +axiom_algebra_layer_15_nrlibis = \ + $(axiom_algebra_layer_15:.$(OBJEXT)=.NRLIBS/code.$(OBJEXT)) + +axiom_algebra_layer_15_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_15)) +@ + +\subsection{Layer16} + +\subsubsection{Completed spad files} + +\begin{verbatim} +efupxs.spad.pamphlet (EFUPXS) +lodop.spad.pamphlet (MLO OMLO NCODIV ODR DPMO DPMM) +space.spad.pamphlet (SPACEC SPACE3 TOPSP) +\end{verbatim} + +<<layer16>>= +axiom_algebra_layer_16 = \ + DPMM.o EFUPXS.o FFINTBAS.o FRIDEAL.o \ + FRIDEAL2.o FRMOD.o FSAGG.o FSAGG-.o \ + IBATOOL.o INTFACT.o KDAGG.o KDAGG-.o \ + MSETAGG.o MONOGEN.o MONOGEN-.o NFINTBAS.o \ + SPACE3.o + +axiom_algebra_layer_16_nrlibs = \ + $(axiom_algebra_layer_16:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_16_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_16)) +@ + +\subsection{Layer17} + +\subsubsection{Completed spad files} + +\begin{verbatim} +algext.spad.pamphlet (SAE) +aggcat.spad.pamphlet (AGG HOAGG CLAGG BGAGG SKAGG QUAGG DQAGG PRQAGG DIOPS + DIAGG MDAGG SETAGG FSAGG MSETAGG OMSAGG KDAGG ELTAB + ELTAGG ISAGG TBAGG RCAGG BRAGG DLAGG URAGG STAGG LNAGG + FLAGG A1AGG ELAGG LSAGG ALAGG SRAGG BTAGG ITAGG) +aggcat2.spad.pamphlet (FLAGG2 FSAGG2) +galfact.spad.pamphlet (GALFACT) +intfact.spad.pamphlet (PRIMES IROOT INTFACT) +padiclib.spad.pamphlet (IBPTOOLS IBACHIN PWFFINTB) +perm.spad.pamphlet (PERMCAT PERM) +permgrps.spad.pamphlet (PERMGRP PGE) +random.spad.pamphlet (RANDSRC RDIST INTBIT RIDIST RFDIST) +sgcf.spad.pamphlet (SGCF) +string.spad.pamphlet (CHAR CCLASS ISTRING STRING STRICAT) +view3D.spad.pamphlet (VIEW3D) +\end{verbatim} + +<<layer17>>= +axiom_algebra_layer_17 = \ + CCLASS.o FSAGG2.o GALFACT.o IALGFACT.o \ + IBACHIN.o NORMMA.o ODERED.o OMSAGG.o \ + PERM.o PERMGRP.o PRIMES.o PWFFINTB.o \ + RDIST.o SAE.o SAEFACT.o SAERFFC.o \ + SGCF.o TBAGG.o TBAGG-.o VIEW3D.o + +axiom_algebra_layer_17_nrlibs = \ + $(axiom_algebra_layer_17:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_17_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_17)) +@ + +\subsection{Layer18} + +\subsubsection{Completed spad files} + +\begin{verbatim} +d01Package.spad.pamphlet (INTPACK) +list.spad.pamphlet (ILIST LIST LIST2 LIST3 LIST2MAP ALIST) +pf.spad.pamphlet (IPF PF) +table.spad.pamphlet (HASHTBL INTABL TABLE EQTBL STRTBL GSTBL STBL) +\end{verbatim} + +<<layer18>>= +axiom_algebra_layer_18 = \ + ALIST.o EQTBL.o GSTBL.o HASHTBL.o \ + INTABL.o INTFTBL.o INTPACK.o IPF.o \ + KAFILE.o PATRES.o STBL.o STRTBL.o \ + TABLE.o TBCMPPK.o + +axiom_algebra_layer_18_nrlibs = \ + $(axiom_algebra_layer_18:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_18_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_18)) +@ + +\subsection{Layer19} + +\subsubsection{Completed spad files} + +\begin{verbatim} +acplot.spad.pamphlet (REALSOLV ACPLOT) +alql.spad.pamphlet (DLIST ICARD DBASE QEQUAT MTHING OPQUERY) +any.spad.pamphlet (NONE NONE1 ANY ANY1) +c02.spad.pamphlet (NAGC02) +c05.spad.pamphlet (NAGC05) +c06.spad.pamphlet (NAGC06) +d01routine.spad.pamphlet (D01AJFA D01AKFA D01AMFA D01APFA D01AQFA D01ALFA + D01ANFA D01ASFA D01GBFA D01FCFA) +d02Package.spad.pamphlet (ODEPACK) +d03agents.spad.pamphlet (D03AGNT) +d03Package.spad.pamphlet (PDEPACK) +drawopt.spad.pamphlet (DROPT DROPT1 DROPT0) +eigen.spad.pamphlet (EP CHARPOL) +e01.spad.pamphlet (NAGE01) +e02.spad.pamphlet (NAGE02) +e04.spad.pamphlet (NAGE04) +e04agents.spad.pamphlet (E04AGNT) +e04Package.spad.pamphlet (OPTPACK) +ffcg.spad.pamphlet (FFCGP FFCGX FFCG) +ffp.spad.pamphlet (FFP FFX IFF FF) +files.spad.pamphlet (FILECAT FILE TEXTFILE BINFILE KAFILE LIB) +float.spad.pamphlet (FLOAT) +fnla.spad.pamphlet (OSI COMM HB FNLA) +fortpak.spad.pamphlet (FCPAK1 NAGSP FORT FOP TEMUTL MCALCFN) +forttyp.spad.pamphlet (FST FT SYMTAB SYMS) +fparfrac.spad.pamphlet (FPARFRAC) +fr.spad.pamphlet (FR FRUTIL FR2) +f07.spad.pamphlet (NAGF07) +gdpoly.spad.pamphlet (GDMP DMP HDMP) +ideal.spad.pamphlet (IDEAL) +intaux.spad.pamphlet (IR IR2) +intclos.spad.pamphlet (TRIMAT IBATOOL FFINTBAS WFFINTBS NFINTBAS) +integer.spad.pamphlet (INTSLPE INT NNI PI ROMAN) +kl.spad.pamphlet (CACHSET SCACHE MKCHSET KERNEL KERNEL2) +lmdict.spad.pamphlet (LMDICT) +matrix.spad.pamphlet (IMATRIX MATRIX RMATRIX SQMATRIX) +misc.spad.pamphlet (SAOS) +mkfunc.spad.pamphlet (INFORM INFORM1 MKFUNC MKUCFUNC MKBCFUNC MKFLCFN) +modgcd.spad.pamphlet (INMODGCD) +mset.spad.pamphlet (MSET) +multpoly.spad.pamphlet (POLY POLY2 MPOLY SMP INDE) +naalgc.spad.pamphlet (MONAD MONADWU NARNG NASRING NAALG FINAALG FRNAALG) +newdata.spad.pamphlet (IPRNTPK TBCMPPK SPLNODE SPLTREE) +omerror.spad.pamphlet (OMERRK OMERR) +op.spad.pamphlet (BOP BOP1 COMMONOP) +out.spad.pamphlet (OUT SPECOUT DISPLAY) +outform.spad.pamphlet (NUMFMT OUTFORM) +patmatch1.spad.pamphlet (PATRES PATRES2 PATLRES PATMAB FPATMAB PMSYM PMKERNEL + PMDOWN PMTOOLS PMLSAGG) +pattern.spad.pamphlet (PATTERN PATTERN1 PATTERN2 PATAB) +pscat.spad.pamphlet (PSCAT UPSCAT UTSCAT ULSCAT UPXSCAT MTSCAT) +qalgset.spad.pamphlet (QALGSET QALGSET2) +reclos.spad.pamphlet (POLUTIL RRCC RCFIELD ROIRC RECLOS) +rep1.spad.pamphlet (REP1) +routines.spad.pamphlet (ROUTINE ATTRBUT) +s.spad.pamphlet (NAGS) +seg.spad.pamphlet (SEGCAT SEGXCAT SEG SEG2 SEGBIND SETBIND2 UNISEG UNISEG2 + INCRMAPS) +sets.spad.pamphlet (SET) +sups.spad.pamphlet (ISUPS) +syssolp.spad.pamphlet (SYSSOLP) +variable.spad.pamphlet (OVAR VARIABLE RULECOLD FUNCTION ANON) +\end{verbatim} + +<<layer19>>= +axiom_algebra_layer_19 = \ + ACF.o ACF-.o ACPLOT.o ANTISYM.o \ + ANY.o ASP12.o ASP27.o ASP28.o \ + ASP33.o ASP49.o ASP55.o ASP7.o \ + ASP78.o ASP8.o ASP9.o ATTRBUT.o \ + BOP.o BOP1.o COMMONOP.o COMPCAT.o \ + COMPCAT-.o DRAW.o DRAWCFUN.o DROPT.o \ + DROPT0.o D01ANFA.o D01ASFA.o D03AGNT.o \ + EP.o E04AGNT.o FCPAK1.o FEXPR.o \ + FFCAT.o FFCAT-.o FFCGP.o FFNBP.o \ + FFP.o FLOAT.o FPARFRAC.o FR.o \ + FRNAALG.o FRNAALG-.o FS.o FS-.o \ + FST.o FUNCTION.o GDMP.o HACKPI.o \ + IDEAL.o INFORM.o INFORM1.o IPRNTPK.o \ + IR.o ISUPS.o KERNEL.o LIB.o \ + LMDICT.o LODOOPS.o MATRIX.o MKFLCFN.o \ + MSET.o M3D.o NAGC02.o NAGC05.o \ + NAGC06.o NAGD03.o NAGE01.o NAGE02.o \ + NAGE04.o NAGF07.o NAGS.o NAGSP.o \ + NREP.o NUMFMT.o OC.o OC-.o \ + ODEPACK.o ODERAT.o OMERR.o OMERRK.o \ + OPTPACK.o OSI.o PATTERN.o OVAR.o \ + PMKERNEL.o PMSYM.o POLY.o PRIMELT.o \ + QALGSET2.o QEQUAT.o RECLOS.o REP1.o \ + RESULT.o QUATCAT.o QUATCAT-.o RFFACT.o \ + RMATRIX.o ROMAN.o ROUTINE.o RPOLCAT.o \ + RPOLCAT-.o RULECOLD.o SAOS.o SEGBIND.o \ + SET.o SPECOUT.o SQMATRIX.o SWITCH.o \ + SYMS.o SYMTAB.o SYSSOLP.o UTSCAT.o \ + UTSCAT-.o VARIABLE.o WFFINTBS.o + +axiom_algebra_layer_19_nrlibs = \ + $(axiom_algebra_layer_19:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_19_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_19)) +@ + +\subsection{Layer20} + +\subsubsection{Completed spad files} + +\begin{verbatim} +algfact.spad.pamphlet (IALGFACT SAEFACT RFFACT SAERFFC ALGFACT) +algfunc.spad.pamphlet (ACF ACFS AF) +asp.spad.pamphlet (ASP1 ASP10 ASP12 ASP19 ASP20 ASP24 ASP27 ASP28 ASP29 ASP30 + ASP31 ASP33 ASP34 ASP35 ASP4 ASP41 ASP42 ASP49 ASP50 ASP55 + ASP6 ASP7 ASP73 ASP74 ASP77 ASP78 ASP8 ASP80 ASP9) +constant.spad.pamphlet (IAN AN) +cmplxrt.spad.pamphlet (CMPLXRT) +crfp.spad.pamphlet (CRFP) +curve.spad.pamphlet (FFCAT MMAP FFCAT2 CHAVAR RDFF ALGFF) +derham.spad.pamphlet (LALG EAB ANTISYM DERHAM) +draw.spad.pamphlet (DRAWCFUN DRAW DRAWCURV DRAWPT) +d01.spad.pamphlet (NAGD01) +efstruc.spad.pamphlet (SYMFUNC TANEXP EFSTRUC ITRIGMNP TRIGMNIP CTRIGMNP) +elemntry.spad.pamphlet (EF) +elfuts.spad.pamphlet (ELFUTS) +expexpan.spad.pamphlet (EXPUPXS UPXSSING EXPEXPAN) +exprode.spad.pamphlet (EXPRODE) +e04routine.spad.pamphlet (E04DFGA E04FDFA E04GCFA E04JAFA E04MBFA E04NAFA + E04UCFA) +f01.spad.pamphlet (NAGF01) +f02.spad.pamphlet (NAGF02) +f04.spad.pamphlet (NAGF04) +fortmac.spad.pamphlet (MINT MFLOAT MCMPLX) +fortran.spad.pamphlet (RESULT FC FORTRAN M3D SFORT SWITCH FTEM FEXPR) +fspace.spad.pamphlet (ES ES1 ES2 FS FS2) +fs2ups.spad.pamphlet (FS2UPS) +funcpkgs.spad.pamphlet (FSUPFACT) +gaussfac.spad.pamphlet (GAUSSFAC) +gaussian.spad.pamphlet (COMPCAT COMPLPAT CPMATCH COMPLEX COMPLEX2 COMPFACT + CINTSLPE) +generic.spad.pamphlet (GCNAALG CVMP) +genufact.spad.pamphlet (GENUFACT) +genups.spad.pamphlet (GENUPS) +infprod.spad.pamphlet (STINPROD INFPROD0 INPRODPF INPRODFF) +intaf.spad.pamphlet (INTG0 INTPAF INTAF) +intalg.spad.pamphlet (DBLRESP INTHERAL INTALG) +intef.spad.pamphlet (INTEF) +intpm.spad.pamphlet (INTPM) +kovacic.spad.pamphlet (KOVACIC) +lie.spad.pamphlet (LIE JORDAN LSQM) +liouv.spad.pamphlet (LF) +lodof.spad.pamphlet (SETMN PREASSOC ASSOCEQ LODOF) +manip.spad.pamphlet (FACTFUNC POLYROOT ALGMANIP SIMPAN TRMANIP) +multfact.spad.pamphlet (INNMFACT MULTFACT ALGMFACT) +naalg.spad.pamphlet (ALGSC SCPKG ALGPKG FRNAAF2) +newpoly.spad.pamphlet (NSUP NSUP2 RPOLCAT NSMP) +nlinsol.spad.pamphlet (RETSOL NLINSOL) +numeigen.spad.pamphlet (IFSPRMELT.oNEP NREP NCEP) +numeric.spad.pamphlet (NUMERIC DRAWHACK) +numsolve.spad.pamphlet (INFSP FLOATRP FLOATCP) +oct.spad.pamphlet (OC OCT OCTCT2) +odealg.spad.pamphlet (ODESYS ODERED ODEPAL) +openmath.spad.pamphlet (OMEXPR) +pade.spad.pamphlet (PADEPAC PADE) +patmatch2.spad.pamphlet (PMINS PMQFCAT PMPLCT PMFS PATMATCH) +pfo.spad.pamphlet (FORDER RDIV PFOTOOLS PFOQ FSRED PFO) +polset.spad.pamphlet (PSETCAT GPOLSET) +primelt.spad.pamphlet (PRIMELT FSPRMELT) +quat.spad.pamphlet (QUATCAT QUAT QUATCT2) +rdeef.spad.pamphlet (INTTOOLS RDEEF) +rdesys.spad.pamphlet (RDETRS RDEEFS) +riccati.spad.pamphlet (ODEPRRIC ODERTRIC) +rule.spad.pamphlet (RULE APPRULE RULESET) +sign.spad.pamphlet (TOOLSIGN INPSIGN SIGNRF LIMITRF) +special.spad.pamphlet (DFSFUN ORTHPOL NTPOLFN) +suts.spad.pamphlet (SUTS) +tools.spad.pamphlet (ESTOOLS ESTOOLS1 ESTOOLS2) +triset.spad.pamphlet (TSETCAT GTSET PSETPK) +tube.spad.pamphlet (TUBE TUBETOOL EXPRTUBE NUMTUBE) +utsode.spad.pamphlet (UTSODE) +\end{verbatim} + +<<layer20>>= +axiom_algebra_layer_20 = \ + ACFS.o ACFS-.o AF.o ALGFACT.o \ + ALGFF.o ALGMANIP.o ALGMFACT.o ALGPKG.o \ + ALGSC.o AN.o APPRULE.o ASP19.o \ + ASP20.o ASP30.o ASP31.o ASP35.o \ + ASP41.o ASP42.o ASP74.o ASP77.o \ + ASP80.o CINTSLPE.o COMPFACT.o COMPLEX.o \ + COMPLPAT.o CMPLXRT.o CPMATCH.o CRFP.o \ + CTRIGMNP.o D01WGTS.o D02AGNT.o D03EEFA.o \ + DBLRESP.o DERHAM.o DFSFUN.o DRAWCURV.o \ + E04NAFA.o E04UCFA.o EF.o EFSTRUC.o \ + ELFUTS.o ESTOOLS.o EXPEXPAN.o EXPRODE.o \ + EXPRTUBE.o EXPR2.o FC.o FDIVCAT.o \ + FDIVCAT-.o FDIV2.o FFCAT2.o FLOATCP.o \ + FORDER.o FORTRAN.o FSRED.o FSUPFACT.o \ + FRNAAF2.o FSPECF.o FS2.o FS2UPS.o \ + GAUSSFAC.o GCNAALG.o GENUFACT.o GENUPS.o \ + GTSET.o GPOLSET.o IAN.o INEP.o \ + INFPROD0.o INFSP.o INPRODFF.o INPRODPF.o \ + INTAF.o INTALG.o INTEF.o INTG0.o \ + INTHERAL.o INTPAF.o INTPM.o INTTOOLS.o \ + ITRIGMNP.o JORDAN.o KOVACIC.o LF.o \ + LIE.o LODOF.o LSQM.o OMEXPR.o \ + MCMPLX.o MULTFACT.o NAGD01.o NAGD02.o \ + NAGF01.o NAGF02.o NAGF04.o NCEP.o \ + NLINSOL.o NSMP.o NUMERIC.o OCT.o \ + OCTCT2.o ODEPAL.o ODERTRIC.o PADE.o \ + PAN2EXPR.o PDEPACK.o PFO.o PFOQ.o \ + PICOERCE.o PMASSFS.o PMFS.o PMPREDFS.o \ + PSETPK.o QUAT.o QUATCT2.o RADFF.o \ + RDEEF.o RDEEFS.o RDIV.o RSETCAT.o \ + RSETCAT-.o RULE.o RULESET.o SIMPAN.o \ + SFORT.o SOLVESER.o SUMFS.o SUTS.o \ + TOOLSIGN.o TRIGMNIP.o TRMANIP.o ULSCCAT.o \ + ULSCCAT-.o UPXSSING.o UTSODE.o UTSODETL.o \ + UTS2.o WUTSET.o + +axiom_algebra_layer_20_nrlibs = \ + $(axiom_algebra_layer_20:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_20_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_20)) +@ + +\subsection{Layer21} + +\subsubsection{Completed spad files} + +\begin{verbatim} +cont.spad.pamphlet (ESCONT ESCONT1) +ddfact.spad.pamphlet (DDFACT) +defintef.spad.pamphlet (DEFINTEF) +defintrf.spad.pamphlet (DFINTTLS DEFINTRF) +divisor.spad.pamphlet (FRIDEAL FRIDEAL2 MHROWRED FRMOD FDIVCAT HELLFDIV FDIV + FDIV2) +d01transform.spad.pamphlet (D01TRNS) +efuls.spad.pamphlet (EFULS) +expr.spad.pamphlet (EXPR PAN2EXPR EXPR2 PMPREDFS PMASSFS PMPRED PMASS HACKPI + PICOERCE) +expr2ups.spad.pamphlet (EXPR2UPS) +fs2expxp.spad.pamphlet (FS2EXPXP) +gseries.spad.pamphlet (GSERIES) +integrat.spad.pamphlet (FSCINT FSINT) +irexpand.spad.pamphlet (IR2F IRRF2F) +laplace.spad.pamphlet (LAPLACE INVLAPLA) +laurent.spad.pamphlet (ULSCCAT ULSCONS ULS USL2) +nlode.spad.pamphlet (NODE1) +oderf.spad.pamphlet (BALFACT BOUNDZRO ODEPRIM UTSODETL ODERAT ODETOOLS ODEINT + ODECONST) +puiseux.spad.pamphlet (UPXSCCA UPXSCONS UPXS UPXS2) +radeigen.spad.pamphlet (REP) +solverad.spad.pamphlet (SOLVERAD) +suls.spad.pamphlet (SULS) +supxs.spad.pamphlet (SUPXS) +taylor.spad.pamphlet (ITAYLOR UTS UTS2) +\end{verbatim} + +<<layer21>>= +axiom_algebra_layer_21 = \ + DEFINTEF.o DFINTTLS.o DEFINTRF.o D01TRNS.o \ + EFULS.o ESCONT.o EXPR.o EXPR2UPS.o \ + FDIV.o FSCINT.o FSINT.o FS2EXPXP.o \ + GSERIES.o HELLFDIV.o INVLAPLA.o IR2F.o \ + IRRF2F.o LAPLACE.o LIMITPS.o LODEEF.o \ + NODE1.o ODECONST.o ODEINT.o REP.o \ + SOLVERAD.o SULS.o SUPXS.o ULS.o \ + ULSCONS.o UPXS.o UPXSCONS.o UTS.o + +axiom_algebra_layer_21_nrlibs = \ + $(axiom_algebra_layer_21:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_21_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_21)) +@ + +\subsection{Layer22} + +\subsubsection{Completed spad files} + +\begin{verbatim} +asp.spad.pamphlet (ASP29) +combfunc.spad.pamphlet (COMBF) +d01agents.spad.pamphlet (D01AGNT SNTSCAT) +ffnb.spad.pamphlet (INBFF) +limitps.spad.pamphlet (SIGNEF) +lodo.spad.pamphlet (LODO LODO1 LODO2) +newpoint.spad.pamphlet (SUBSPACE) +nregset.spad.pamphlet (NTSCAT) +primelt.spad.pamphlet (FSPRMELT) +regset.spad.pamphlet (REGSET RSETGCD RSDCMPK) +sregset.spad.pamphlet (SFRTCAT SRDCMPK SREGSET) +sttf.spad.pamphlet (STTF) +transsolve.spad.pamphlet (SOLVETRA) +zerodim.spad.pamphlet (RGCHAIN ZDSOLVE) +\end{verbatim} +\subsection{Layer21} +<<layer22>>= +axiom_algebra_layer_22 = \ + ASP29.o COMBF.o D01AGNT.o FSPRMELT.o \ + INBFF.o LODO.o LODO1.o LODO2.o \ + NTSCAT.o REGSET.o RGCHAIN.o RSETGCD.o \ + RSDCMPK.o SFRTCAT.o SIGNEF.o SNTSCAT.o \ + SOLVETRA.o SRDCMPK.o SREGSET.o STTF.o \ + SUBSPACE.o ZDSOLVE.o + +axiom_algebra_layer_22_nrlibs = \ + $(axiom_algebra_layer_22:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_22_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_22)) +@ + +\subsection{Final layer spad files} + +These files have not yet been fully analyzed for dependencies but +have added in alphabetical order in this final layer. This +ordering is apparently adequate. + +These files all depend on layer22. +\begin{verbatim} +algcat.spad.pamphlet (CPIMA) +nregset.spad.pamphlet (NORMPK) +nsregset.spad.pamphlet (LAZM3PK) +regset.spad.pamphlet (QCMPACK) +sregset.spad.pamphlet (SFRGCD SFQCMPK) +zerodim.spad.pamphlet (LEXTRIPK IRURPK RURPK) +\end{verbatim} + +<<layer23>>= +axiom_algebra_layer_23 = \ + CPIMA.o IRURPK.o LAZM3PK.o LEXTRIPK.o \ + NORMPK.o QCMPACK.o RURPK.o SFRGCD.o \ + SFQCMPK.o INTRVL.o ODEEF.o + +axiom_algebra_layer_23_nrlibs = \ + $(axiom_algebra_layer_23:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_23_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_23)) +@ + +\subsection{User Layer for newly added algebra} + +Rather than classify newly created algebra into the existing type lattice +we add it here. +<<USERLAYER>>= +axiom_algebra_layer_user = RINTERP.o + +axiom_algebra_layer_user_nrlibs = \ + $(axiom_algebra_layer_user:.$(OBJEXT)=.NRLIB/code.$(OBJEXT)) + +axiom_algebra_layer_user_objects = \ + $(addprefix $(OUT)/, $(axiom_algebra_layer_user)) +@ + +\section{Broken Files} + +These files are Aldor files +\begin{verbatim} +axtimer.as Timer +iviews.as InventorRenderPackage IVREND +ffrac.as FormalFraction FORMAL +iviews.as InventorViewPort IVVIEW +iviews.as InventorDataSink IVDATA +herm.as PackedHermitianSequence PACKED +nsfip.as NagSpecialFunctionsInterfacePackage NAGSPE +nrc.as NagResultChecks NAGRES +nqip.as NagQuadratureInterfacePackage NAGQUA +noptip.as NagOptimizationInterfacePackage NAGOPT +nepip.as NagEigenInterfacePackage NAGEIG +ndftip.as NagDiscreteFourierTransformInterfacePackage NAGDIS +\end{verbatim} + +These domains are referenced but don't exist +\begin{verbatim} +OBJECT +\end{verbatim} + +\section{The Environment} + +\subsection{The working directories} + +We define 5 directories for this build. The{\bf IN} directory +contains the pamphlet files for the algebra. These are expanded +into the{\bf MID} directory as either .spad or .as files. The +.spad files are compiled by the native spad internal compiler. +The .as files are compiled using the Aldor compiler. The output +of the compilation has two purposes. Part of the information is +used to build various database files (daase files). The other +part is executable code which is placed in the {\bf OUT} +directory. When invoked as ``make document'' we construct +the .dvi files in the{\bf DOC} directory. + +The [[OUTSRC=$(axiom_target_srcdir)/algebra]] subdirectory contains the +algebra source files extracted from the pamphlet files. These sources +allow the end user to change the algebra if needed. + +<<environment>>= + +IN=$(srcdir) +OUT=$(axiom_targetdir)/algebra +DOC=$(axiom_target_docdir)/src/algebra +OUTSRC=$(axiom_target_srcdir)/algebra +INPUT=../input + +EXTRACT_BOOTSTRAP_FILE = \ + $(axiom_build_document) --output=$@ --tangle="$@ BOOTSTRAP" $< + +@ + +\subsection{The depsys variable} + +The {\bf depsys} image is the compile-time environment for boot and lisp +files. + +<<environment>>= + +DEPSYS= ../interp/depsys$(EXEEXT) + +@ + +\subsection{The interpsys variable} +The {\bf interpsys} image is the compile-time environment for algebra +files. + +<<environment>>= + +INTERPSYS = \ + AXIOM="$(AXIOM)" \ + DAASE="$(axiom_src_datadir)" \ + ../interp/interpsys$(EXEEXT) + +@ + +\subsection{The SPADFILES list} +Note that we have excluded {\bf mlift.spad.jhd} from this list. +We need to figure out which mlift.spad to keep. + +<<environment>>= + +SPADFILES= \ + ${OUTSRC}/acplot.spad ${OUTSRC}/aggcat2.spad ${OUTSRC}/aggcat.spad \ + ${OUTSRC}/algcat.spad ${OUTSRC}/algext.spad ${OUTSRC}/algfact.spad \ + ${OUTSRC}/algfunc.spad ${OUTSRC}/allfact.spad ${OUTSRC}/alql.spad \ + ${OUTSRC}/annacat.spad ${OUTSRC}/any.spad ${OUTSRC}/array1.spad \ + ${OUTSRC}/array2.spad ${OUTSRC}/asp.spad ${OUTSRC}/attreg.spad \ + ${OUTSRC}/bags.spad ${OUTSRC}/bezout.spad ${OUTSRC}/boolean.spad \ + ${OUTSRC}/brill.spad \ + ${OUTSRC}/c02.spad ${OUTSRC}/c05.spad ${OUTSRC}/c06.spad \ + ${OUTSRC}/card.spad ${OUTSRC}/carten.spad ${OUTSRC}/catdef.spad \ + ${OUTSRC}/cden.spad ${OUTSRC}/clifford.spad ${OUTSRC}/clip.spad \ + ${OUTSRC}/cmplxrt.spad ${OUTSRC}/coerce.spad ${OUTSRC}/color.spad \ + ${OUTSRC}/combfunc.spad ${OUTSRC}/combinat.spad ${OUTSRC}/complet.spad \ + ${OUTSRC}/constant.spad ${OUTSRC}/contfrac.spad ${OUTSRC}/cont.spad \ + ${OUTSRC}/coordsys.spad ${OUTSRC}/cra.spad ${OUTSRC}/crfp.spad \ + ${OUTSRC}/curve.spad ${OUTSRC}/cycles.spad ${OUTSRC}/cyclotom.spad \ + ${OUTSRC}/d01agents.spad ${OUTSRC}/d01Package.spad \ + ${OUTSRC}/d01routine.spad ${OUTSRC}/d01.spad ${OUTSRC}/d01transform.spad \ + ${OUTSRC}/d01weights.spad ${OUTSRC}/d02agents.spad \ + ${OUTSRC}/d02Package.spad ${OUTSRC}/d02routine.spad ${OUTSRC}/d02.spad \ + ${OUTSRC}/d03agents.spad ${OUTSRC}/d03Package.spad \ + ${OUTSRC}/d03routine.spad ${OUTSRC}/d03.spad ${OUTSRC}/ddfact.spad \ + ${OUTSRC}/defaults.spad ${OUTSRC}/defintef.spad ${OUTSRC}/defintrf.spad \ + ${OUTSRC}/degred.spad ${OUTSRC}/derham.spad ${OUTSRC}/dhmatrix.spad \ + ${OUTSRC}/divisor.spad ${OUTSRC}/dpolcat.spad ${OUTSRC}/drawopt.spad \ + ${OUTSRC}/drawpak.spad ${OUTSRC}/draw.spad \ + ${OUTSRC}/e01.spad ${OUTSRC}/e02.spad ${OUTSRC}/e04agents.spad \ + ${OUTSRC}/e04Package.spad ${OUTSRC}/e04routine.spad ${OUTSRC}/e04.spad \ + ${OUTSRC}/efstruc.spad ${OUTSRC}/efuls.spad ${OUTSRC}/efupxs.spad \ + ${OUTSRC}/eigen.spad ${OUTSRC}/elemntry.spad ${OUTSRC}/elfuts.spad \ + ${OUTSRC}/equation1.spad ${OUTSRC}/equation2.spad ${OUTSRC}/error.spad \ + ${OUTSRC}/expexpan.spad ${OUTSRC}/expr2ups.spad \ + ${OUTSRC}/exprode.spad ${OUTSRC}/expr.spad \ + ${OUTSRC}/f01.spad ${OUTSRC}/f02.spad ${OUTSRC}/f04.spad \ + ${OUTSRC}/f07.spad ${OUTSRC}/facutil.spad ${OUTSRC}/ffcat.spad \ + ${OUTSRC}/ffcg.spad ${OUTSRC}/fff.spad ${OUTSRC}/ffhom.spad \ + ${OUTSRC}/ffnb.spad ${OUTSRC}/ffpoly2.spad ${OUTSRC}/ffpoly.spad \ + ${OUTSRC}/ffp.spad ${OUTSRC}/ffx.spad \ + ${OUTSRC}/files.spad ${OUTSRC}/float.spad ${OUTSRC}/fmod.spad \ + ${OUTSRC}/fname.spad ${OUTSRC}/fnla.spad ${OUTSRC}/formula.spad \ + ${OUTSRC}/fortcat.spad ${OUTSRC}/fortmac.spad ${OUTSRC}/fortpak.spad \ + ${OUTSRC}/fortran.spad ${OUTSRC}/forttyp.spad ${OUTSRC}/fourier.spad \ + ${OUTSRC}/fparfrac.spad ${OUTSRC}/fraction.spad ${OUTSRC}/free.spad \ + ${OUTSRC}/fr.spad ${OUTSRC}/fs2expxp.spad ${OUTSRC}/fs2ups.spad \ + ${OUTSRC}/fspace.spad ${OUTSRC}/funcpkgs.spad ${OUTSRC}/functions.spad \ + ${OUTSRC}/galfact.spad ${OUTSRC}/galfactu.spad ${OUTSRC}/galpolyu.spad \ + ${OUTSRC}/galutil.spad ${OUTSRC}/gaussfac.spad ${OUTSRC}/gaussian.spad \ + ${OUTSRC}/gbeuclid.spad ${OUTSRC}/gbintern.spad ${OUTSRC}/gb.spad \ + ${OUTSRC}/gdirprod.spad ${OUTSRC}/gdpoly.spad ${OUTSRC}/geneez.spad \ + ${OUTSRC}/generic.spad ${OUTSRC}/genufact.spad ${OUTSRC}/genups.spad \ + ${OUTSRC}/ghensel.spad ${OUTSRC}/gpgcd.spad ${OUTSRC}/gpol.spad \ + ${OUTSRC}/grdef.spad ${OUTSRC}/groebf.spad ${OUTSRC}/groebsol.spad \ + ${OUTSRC}/gseries.spad \ + ${OUTSRC}/ideal.spad ${OUTSRC}/idecomp.spad ${OUTSRC}/indexedp.spad \ + ${OUTSRC}/infprod.spad ${OUTSRC}/intaf.spad ${OUTSRC}/intalg.spad \ + ${OUTSRC}/intaux.spad ${OUTSRC}/intclos.spad ${OUTSRC}/intef.spad \ + ${OUTSRC}/integer.spad ${OUTSRC}/integrat.spad \ + ${OUTSRC}/interval.spad \ + ${OUTSRC}/intfact.spad ${OUTSRC}/intpm.spad \ + ${OUTSRC}/intrf.spad \ + ${OUTSRC}/irexpand.spad \ + ${OUTSRC}/irsn.spad ${OUTSRC}/ituple.spad \ + ${OUTSRC}/kl.spad ${OUTSRC}/kovacic.spad \ + ${OUTSRC}/laplace.spad ${OUTSRC}/laurent.spad ${OUTSRC}/leadcdet.spad \ + ${OUTSRC}/lie.spad ${OUTSRC}/limitps.spad ${OUTSRC}/lindep.spad \ + ${OUTSRC}/lingrob.spad ${OUTSRC}/liouv.spad ${OUTSRC}/listgcd.spad \ + ${OUTSRC}/list.spad ${OUTSRC}/lmdict.spad ${OUTSRC}/lodof.spad \ + ${OUTSRC}/lodop.spad ${OUTSRC}/lodo.spad \ + ${OUTSRC}/manip.spad ${OUTSRC}/mappkg.spad ${OUTSRC}/matcat.spad \ + ${OUTSRC}/matfuns.spad ${OUTSRC}/matrix.spad ${OUTSRC}/matstor.spad \ + ${OUTSRC}/mesh.spad ${OUTSRC}/mfinfact.spad ${OUTSRC}/misc.spad \ + ${OUTSRC}/mkfunc.spad ${OUTSRC}/mkrecord.spad \ + ${OUTSRC}/mlift.spad ${OUTSRC}/moddfact.spad ${OUTSRC}/modgcd.spad \ + ${OUTSRC}/modmonom.spad ${OUTSRC}/modmon.spad ${OUTSRC}/modring.spad \ + ${OUTSRC}/moebius.spad ${OUTSRC}/mring.spad ${OUTSRC}/mset.spad \ + ${OUTSRC}/mts.spad ${OUTSRC}/multfact.spad ${OUTSRC}/multpoly.spad \ + ${OUTSRC}/multsqfr.spad \ + ${OUTSRC}/naalgc.spad ${OUTSRC}/naalg.spad \ + ${OUTSRC}/newdata.spad ${OUTSRC}/newpoint.spad \ + ${OUTSRC}/newpoly.spad ${OUTSRC}/nlinsol.spad ${OUTSRC}/nlode.spad \ + ${OUTSRC}/npcoef.spad \ + ${OUTSRC}/nregset.spad \ + ${OUTSRC}/nsregset.spad ${OUTSRC}/numeigen.spad ${OUTSRC}/numeric.spad \ + ${OUTSRC}/numode.spad ${OUTSRC}/numquad.spad ${OUTSRC}/numsolve.spad \ + ${OUTSRC}/numtheor.spad \ + ${OUTSRC}/oct.spad ${OUTSRC}/odealg.spad ${OUTSRC}/odeef.spad \ + ${OUTSRC}/oderf.spad ${OUTSRC}/omcat.spad ${OUTSRC}/omdev.spad \ + ${OUTSRC}/omerror.spad ${OUTSRC}/omserver.spad ${OUTSRC}/opalg.spad \ + ${OUTSRC}/openmath.spad ${OUTSRC}/op.spad ${OUTSRC}/ore.spad \ + ${OUTSRC}/outform.spad ${OUTSRC}/out.spad \ + ${OUTSRC}/pade.spad ${OUTSRC}/padiclib.spad ${OUTSRC}/padic.spad \ + ${OUTSRC}/paramete.spad ${OUTSRC}/partperm.spad ${OUTSRC}/patmatch1.spad \ + ${OUTSRC}/patmatch2.spad ${OUTSRC}/pattern.spad ${OUTSRC}/pcurve.spad \ + ${OUTSRC}/pdecomp.spad ${OUTSRC}/perman.spad ${OUTSRC}/permgrps.spad \ + ${OUTSRC}/perm.spad ${OUTSRC}/pfbr.spad ${OUTSRC}/pfo.spad \ + ${OUTSRC}/pfr.spad ${OUTSRC}/pf.spad ${OUTSRC}/pgcd.spad \ + ${OUTSRC}/pgrobner.spad ${OUTSRC}/pinterp.spad ${OUTSRC}/pleqn.spad \ + ${OUTSRC}/plot3d.spad ${OUTSRC}/plot.spad ${OUTSRC}/plottool.spad \ + ${OUTSRC}/polset.spad ${OUTSRC}/poltopol.spad ${OUTSRC}/polycat.spad \ + ${OUTSRC}/poly.spad ${OUTSRC}/primelt.spad ${OUTSRC}/print.spad \ + ${OUTSRC}/product.spad ${OUTSRC}/prs.spad ${OUTSRC}/prtition.spad \ + ${OUTSRC}/pscat.spad ${OUTSRC}/pseudolin.spad ${OUTSRC}/ptranfn.spad \ + ${OUTSRC}/puiseux.spad \ + ${OUTSRC}/qalgset.spad ${OUTSRC}/quat.spad \ + ${OUTSRC}/radeigen.spad ${OUTSRC}/radix.spad ${OUTSRC}/random.spad \ + ${OUTSRC}/ratfact.spad ${OUTSRC}/rdeef.spad ${OUTSRC}/rderf.spad \ + ${OUTSRC}/rdesys.spad ${OUTSRC}/real0q.spad ${OUTSRC}/realzero.spad \ + ${OUTSRC}/reclos.spad ${OUTSRC}/regset.spad ${OUTSRC}/rep1.spad \ + ${OUTSRC}/rep2.spad ${OUTSRC}/resring.spad ${OUTSRC}/retract.spad \ + ${OUTSRC}/rf.spad ${OUTSRC}/riccati.spad ${OUTSRC}/rinterp.spad \ + ${OUTSRC}/routines.spad \ + ${OUTSRC}/rule.spad \ + ${OUTSRC}/seg.spad ${OUTSRC}/setorder.spad ${OUTSRC}/sets.spad \ + ${OUTSRC}/sex.spad ${OUTSRC}/sf.spad ${OUTSRC}/sgcf.spad \ + ${OUTSRC}/sign.spad ${OUTSRC}/si.spad ${OUTSRC}/smith.spad \ + ${OUTSRC}/solvedio.spad ${OUTSRC}/solvefor.spad ${OUTSRC}/solvelin.spad \ + ${OUTSRC}/solverad.spad ${OUTSRC}/sortpak.spad ${OUTSRC}/space.spad \ + ${OUTSRC}/special.spad ${OUTSRC}/sregset.spad ${OUTSRC}/s.spad \ + ${OUTSRC}/stream.spad ${OUTSRC}/string.spad ${OUTSRC}/sttaylor.spad \ + ${OUTSRC}/sttf.spad ${OUTSRC}/sturm.spad ${OUTSRC}/suchthat.spad \ + ${OUTSRC}/suls.spad ${OUTSRC}/sum.spad ${OUTSRC}/sups.spad \ + ${OUTSRC}/supxs.spad ${OUTSRC}/suts.spad ${OUTSRC}/symbol.spad \ + ${OUTSRC}/syssolp.spad ${OUTSRC}/system.spad \ + ${OUTSRC}/tableau.spad ${OUTSRC}/table.spad ${OUTSRC}/taylor.spad \ + ${OUTSRC}/tex.spad ${OUTSRC}/tools.spad ${OUTSRC}/transsolve.spad \ + ${OUTSRC}/tree.spad ${OUTSRC}/trigcat.spad ${OUTSRC}/triset.spad \ + ${OUTSRC}/tube.spad ${OUTSRC}/twofact.spad \ + ${OUTSRC}/unifact.spad ${OUTSRC}/updecomp.spad ${OUTSRC}/updivp.spad \ + ${OUTSRC}/utsode.spad \ + ${OUTSRC}/variable.spad ${OUTSRC}/vector.spad ${OUTSRC}/view2D.spad \ + ${OUTSRC}/view3D.spad ${OUTSRC}/viewDef.spad ${OUTSRC}/viewpack.spad \ + ${OUTSRC}/void.spad \ + ${OUTSRC}/weier.spad ${OUTSRC}/wtpol.spad \ + ${OUTSRC}/xlpoly.spad ${OUTSRC}/xpoly.spad \ + ${OUTSRC}/ystream.spad \ + ${OUTSRC}/zerodim.spad + +@ + +\subsection{The ALDORFILES list} +<<environment>>= + +ALDORFILES= \ + axtimer.as \ + ffrac.as \ + herm.as \ + interval.as \ + invnode.as \ + invrender.as \ + invtypes.as \ + invutils.as \ + iviews.as \ + ndftip.as \ + nepip.as \ + noptip.as nqip.as \ + nrc.as nsfip.as + +@ + +\subsection{The DOCFILES list} +<<environment>>= + +DOCFILES= \ + ${DOC}/acplot.spad.dvi ${DOC}/aggcat2.spad.dvi ${DOC}/aggcat.spad.dvi \ + ${DOC}/algcat.spad.dvi ${DOC}/algext.spad.dvi ${DOC}/algfact.spad.dvi \ + ${DOC}/algfunc.spad.dvi ${DOC}/allfact.spad.dvi ${DOC}/alql.spad.dvi \ + ${DOC}/annacat.spad.dvi ${DOC}/any.spad.dvi ${DOC}/array1.spad.dvi \ + ${DOC}/array2.spad.dvi ${DOC}/asp.spad.dvi ${DOC}/attreg.spad.dvi \ + ${DOC}/axtimer.as.dvi \ + ${DOC}/bags.spad.dvi ${DOC}/bezout.spad.dvi ${DOC}/boolean.spad.dvi \ + ${DOC}/brill.spad.dvi \ + ${DOC}/c02.spad.dvi ${DOC}/c05.spad.dvi ${DOC}/c06.spad.dvi \ + ${DOC}/card.spad.dvi ${DOC}/carten.spad.dvi ${DOC}/catdef.spad.dvi \ + ${DOC}/cden.spad.dvi ${DOC}/clifford.spad.dvi ${DOC}/clip.spad.dvi \ + ${DOC}/cmplxrt.spad.dvi ${DOC}/coerce.spad.dvi ${DOC}/color.spad.dvi \ + ${DOC}/combfunc.spad.dvi ${DOC}/combinat.spad.dvi ${DOC}/complet.spad.dvi \ + ${DOC}/constant.spad.dvi ${DOC}/contfrac.spad.dvi ${DOC}/cont.spad.dvi \ + ${DOC}/coordsys.spad.dvi ${DOC}/cra.spad.dvi ${DOC}/crfp.spad.dvi \ + ${DOC}/curve.spad.dvi ${DOC}/cycles.spad.dvi ${DOC}/cyclotom.spad.dvi \ + ${DOC}/d01agents.spad.dvi ${DOC}/d01Package.spad.dvi \ + ${DOC}/d01routine.spad.dvi ${DOC}/d01.spad.dvi ${DOC}/d01transform.spad.dvi \ + ${DOC}/d01weights.spad.dvi ${DOC}/d02agents.spad.dvi \ + ${DOC}/d02Package.spad.dvi ${DOC}/d02routine.spad.dvi ${DOC}/d02.spad.dvi \ + ${DOC}/d03agents.spad.dvi ${DOC}/d03Package.spad.dvi \ + ${DOC}/d03routine.spad.dvi ${DOC}/d03.spad.dvi ${DOC}/ddfact.spad.dvi \ + ${DOC}/defaults.spad.dvi ${DOC}/defintef.spad.dvi ${DOC}/defintrf.spad.dvi \ + ${DOC}/degred.spad.dvi ${DOC}/derham.spad.dvi ${DOC}/dhmatrix.spad.dvi \ + ${DOC}/divisor.spad.dvi ${DOC}/dpolcat.spad.dvi ${DOC}/drawopt.spad.dvi \ + ${DOC}/drawpak.spad.dvi ${DOC}/draw.spad.dvi \ + ${DOC}/e01.spad.dvi ${DOC}/e02.spad.dvi ${DOC}/e04agents.spad.dvi \ + ${DOC}/e04Package.spad.dvi ${DOC}/e04routine.spad.dvi ${DOC}/e04.spad.dvi \ + ${DOC}/efstruc.spad.dvi ${DOC}/efuls.spad.dvi ${DOC}/efupxs.spad.dvi \ + ${DOC}/eigen.spad.dvi ${DOC}/elemntry.spad.dvi ${DOC}/elfuts.spad.dvi \ + ${DOC}/equation1.spad.dvi ${DOC}/equation2.spad.dvi ${DOC}/error.spad.dvi \ + ${DOC}/expexpan.spad.dvi ${DOC}/exposed.lsp.dvi ${DOC}/expr2ups.spad.dvi \ + ${DOC}/exprode.spad.dvi ${DOC}/expr.spad.dvi \ + ${DOC}/f01.spad.dvi ${DOC}/f02.spad.dvi ${DOC}/f04.spad.dvi \ + ${DOC}/f07.spad.dvi ${DOC}/facutil.spad.dvi ${DOC}/ffcat.spad.dvi \ + ${DOC}/ffcg.spad.dvi ${DOC}/fff.spad.dvi ${DOC}/ffhom.spad.dvi \ + ${DOC}/ffnb.spad.dvi ${DOC}/ffpoly2.spad.dvi ${DOC}/ffpoly.spad.dvi \ + ${DOC}/ffp.spad.dvi ${DOC}/ffrac.as.dvi ${DOC}/ffx.spad.dvi \ + ${DOC}/files.spad.dvi ${DOC}/float.spad.dvi ${DOC}/fmod.spad.dvi \ + ${DOC}/fname.spad.dvi ${DOC}/fnla.spad.dvi ${DOC}/formula.spad.dvi \ + ${DOC}/fortcat.spad.dvi ${DOC}/fortmac.spad.dvi ${DOC}/fortpak.spad.dvi \ + ${DOC}/fortran.spad.dvi ${DOC}/forttyp.spad.dvi ${DOC}/fourier.spad.dvi \ + ${DOC}/fparfrac.spad.dvi ${DOC}/fraction.spad.dvi ${DOC}/free.spad.dvi \ + ${DOC}/fr.spad.dvi ${DOC}/fs2expxp.spad.dvi ${DOC}/fs2ups.spad.dvi \ + ${DOC}/fspace.spad.dvi ${DOC}/funcpkgs.spad.dvi ${DOC}/functions.spad.dvi \ + ${DOC}/galfact.spad.dvi ${DOC}/galfactu.spad.dvi ${DOC}/galpolyu.spad.dvi \ + ${DOC}/galutil.spad.dvi ${DOC}/gaussfac.spad.dvi ${DOC}/gaussian.spad.dvi \ + ${DOC}/gbeuclid.spad.dvi ${DOC}/gbintern.spad.dvi ${DOC}/gb.spad.dvi \ + ${DOC}/gdirprod.spad.dvi ${DOC}/gdpoly.spad.dvi ${DOC}/geneez.spad.dvi \ + ${DOC}/generic.spad.dvi ${DOC}/genufact.spad.dvi ${DOC}/genups.spad.dvi \ + ${DOC}/ghensel.spad.dvi ${DOC}/gpgcd.spad.dvi ${DOC}/gpol.spad.dvi \ + ${DOC}/grdef.spad.dvi ${DOC}/groebf.spad.dvi ${DOC}/groebsol.spad.dvi \ + ${DOC}/gseries.spad.dvi \ + ${DOC}/herm.as.dvi \ + ${DOC}/ideal.spad.dvi ${DOC}/idecomp.spad.dvi ${DOC}/indexedp.spad.dvi \ + ${DOC}/infprod.spad.dvi ${DOC}/intaf.spad.dvi ${DOC}/intalg.spad.dvi \ + ${DOC}/intaux.spad.dvi ${DOC}/intclos.spad.dvi ${DOC}/intef.spad.dvi \ + ${DOC}/integer.spad.dvi ${DOC}/integrat.spad.dvi \ + ${DOC}/interval.as.dvi ${DOC}/interval.spad.dvi \ + ${DOC}/intfact.spad.dvi ${DOC}/intpm.spad.dvi \ + ${DOC}/intrf.spad.dvi ${DOC}/invnode.as.dvi ${DOC}/invrender.as.dvi \ + ${DOC}/invtypes.as.dvi ${DOC}/invutils.as.dvi ${DOC}/irexpand.spad.dvi \ + ${DOC}/irsn.spad.dvi ${DOC}/ituple.spad.dvi ${DOC}/iviews.as.dvi \ + ${DOC}/kl.spad.dvi ${DOC}/kovacic.spad.dvi \ + ${DOC}/laplace.spad.dvi ${DOC}/laurent.spad.dvi ${DOC}/leadcdet.spad.dvi \ + ${DOC}/lie.spad.dvi ${DOC}/limitps.spad.dvi ${DOC}/lindep.spad.dvi \ + ${DOC}/lingrob.spad.dvi ${DOC}/liouv.spad.dvi ${DOC}/listgcd.spad.dvi \ + ${DOC}/list.spad.dvi ${DOC}/lmdict.spad.dvi ${DOC}/lodof.spad.dvi \ + ${DOC}/lodop.spad.dvi ${DOC}/lodo.spad.dvi \ + ${DOC}/manip.spad.dvi ${DOC}/mappkg.spad.dvi ${DOC}/matcat.spad.dvi \ + ${DOC}/matfuns.spad.dvi ${DOC}/matrix.spad.dvi ${DOC}/matstor.spad.dvi \ + ${DOC}/mesh.spad.dvi ${DOC}/mfinfact.spad.dvi ${DOC}/misc.spad.dvi \ + ${DOC}/mkfunc.spad.dvi ${DOC}/mkrecord.spad.dvi ${DOC}/mlift.spad.jhd.dvi \ + ${DOC}/mlift.spad.dvi ${DOC}/moddfact.spad.dvi ${DOC}/modgcd.spad.dvi \ + ${DOC}/modmonom.spad.dvi ${DOC}/modmon.spad.dvi ${DOC}/modring.spad.dvi \ + ${DOC}/moebius.spad.dvi ${DOC}/mring.spad.dvi ${DOC}/mset.spad.dvi \ + ${DOC}/mts.spad.dvi ${DOC}/multfact.spad.dvi ${DOC}/multpoly.spad.dvi \ + ${DOC}/multsqfr.spad.dvi \ + ${DOC}/naalgc.spad.dvi ${DOC}/naalg.spad.dvi ${DOC}/ndftip.as.dvi \ + ${DOC}/nepip.as.dvi ${DOC}/newdata.spad.dvi ${DOC}/newpoint.spad.dvi \ + ${DOC}/newpoly.spad.dvi ${DOC}/nlinsol.spad.dvi ${DOC}/nlode.spad.dvi \ + ${DOC}/noptip.as.dvi ${DOC}/npcoef.spad.dvi ${DOC}/nqip.as.dvi \ + ${DOC}/nrc.as.dvi ${DOC}/nregset.spad.dvi ${DOC}/nsfip.as.dvi \ + ${DOC}/nsregset.spad.dvi ${DOC}/numeigen.spad.dvi ${DOC}/numeric.spad.dvi \ + ${DOC}/numode.spad.dvi ${DOC}/numquad.spad.dvi ${DOC}/numsolve.spad.dvi \ + ${DOC}/numtheor.spad.dvi \ + ${DOC}/oct.spad.dvi ${DOC}/odealg.spad.dvi ${DOC}/odeef.spad.dvi \ + ${DOC}/oderf.spad.dvi ${DOC}/omcat.spad.dvi ${DOC}/omdev.spad.dvi \ + ${DOC}/omerror.spad.dvi ${DOC}/omserver.spad.dvi ${DOC}/opalg.spad.dvi \ + ${DOC}/openmath.spad.dvi ${DOC}/op.spad.dvi ${DOC}/ore.spad.dvi \ + ${DOC}/outform.spad.dvi ${DOC}/out.spad.dvi \ + ${DOC}/pade.spad.dvi ${DOC}/padiclib.spad.dvi ${DOC}/padic.spad.dvi \ + ${DOC}/paramete.spad.dvi ${DOC}/partperm.spad.dvi ${DOC}/patmatch1.spad.dvi \ + ${DOC}/patmatch2.spad.dvi ${DOC}/pattern.spad.dvi ${DOC}/pcurve.spad.dvi \ + ${DOC}/pdecomp.spad.dvi ${DOC}/perman.spad.dvi ${DOC}/permgrps.spad.dvi \ + ${DOC}/perm.spad.dvi ${DOC}/pfbr.spad.dvi ${DOC}/pfo.spad.dvi \ + ${DOC}/pfr.spad.dvi ${DOC}/pf.spad.dvi ${DOC}/pgcd.spad.dvi \ + ${DOC}/pgrobner.spad.dvi ${DOC}/pinterp.spad.dvi ${DOC}/pleqn.spad.dvi \ + ${DOC}/plot3d.spad.dvi ${DOC}/plot.spad.dvi ${DOC}/plottool.spad.dvi \ + ${DOC}/polset.spad.dvi ${DOC}/poltopol.spad.dvi ${DOC}/polycat.spad.dvi \ + ${DOC}/poly.spad.dvi ${DOC}/primelt.spad.dvi ${DOC}/print.spad.dvi \ + ${DOC}/product.spad.dvi ${DOC}/prs.spad.dvi ${DOC}/prtition.spad.dvi \ + ${DOC}/pscat.spad.dvi ${DOC}/pseudolin.spad.dvi ${DOC}/ptranfn.spad.dvi \ + ${DOC}/puiseux.spad.dvi \ + ${DOC}/qalgset.spad.dvi ${DOC}/quat.spad.dvi \ + ${DOC}/radeigen.spad.dvi ${DOC}/radix.spad.dvi ${DOC}/random.spad.dvi \ + ${DOC}/ratfact.spad.dvi ${DOC}/rdeef.spad.dvi ${DOC}/rderf.spad.dvi \ + ${DOC}/rdesys.spad.dvi ${DOC}/real0q.spad.dvi ${DOC}/realzero.spad.dvi \ + ${DOC}/reclos.spad.dvi ${DOC}/regset.spad.dvi ${DOC}/rep1.spad.dvi \ + ${DOC}/rep2.spad.dvi ${DOC}/resring.spad.dvi ${DOC}/retract.spad.dvi \ + ${DOC}/rf.spad.dvi ${DOC}/riccati.spad.dvi ${DOC}/rinterp.spad.dvi \ + ${DOC}/routines.spad.dvi \ + ${DOC}/rule.spad.dvi \ + ${DOC}/seg.spad.dvi ${DOC}/setorder.spad.dvi ${DOC}/sets.spad.dvi \ + ${DOC}/sex.spad.dvi ${DOC}/sf.spad.dvi ${DOC}/sgcf.spad.dvi \ + ${DOC}/sign.spad.dvi ${DOC}/si.spad.dvi ${DOC}/smith.spad.dvi \ + ${DOC}/solvedio.spad.dvi ${DOC}/solvefor.spad.dvi ${DOC}/solvelin.spad.dvi \ + ${DOC}/solverad.spad.dvi ${DOC}/sortpak.spad.dvi ${DOC}/space.spad.dvi \ + ${DOC}/special.spad.dvi ${DOC}/sregset.spad.dvi ${DOC}/s.spad.dvi \ + ${DOC}/stream.spad.dvi ${DOC}/string.spad.dvi ${DOC}/sttaylor.spad.dvi \ + ${DOC}/sttf.spad.dvi ${DOC}/sturm.spad.dvi ${DOC}/suchthat.spad.dvi \ + ${DOC}/suls.spad.dvi ${DOC}/sum.spad.dvi ${DOC}/sups.spad.dvi \ + ${DOC}/supxs.spad.dvi ${DOC}/suts.spad.dvi ${DOC}/symbol.spad.dvi \ + ${DOC}/syssolp.spad.dvi ${DOC}/system.spad.dvi \ + ${DOC}/tableau.spad.dvi ${DOC}/table.spad.dvi ${DOC}/taylor.spad.dvi \ + ${DOC}/tex.spad.dvi ${DOC}/tools.spad.dvi ${DOC}/transsolve.spad.dvi \ + ${DOC}/tree.spad.dvi ${DOC}/trigcat.spad.dvi ${DOC}/triset.spad.dvi \ + ${DOC}/tube.spad.dvi ${DOC}/twofact.spad.dvi \ + ${DOC}/unifact.spad.dvi ${DOC}/updecomp.spad.dvi ${DOC}/updivp.spad.dvi \ + ${DOC}/utsode.spad.dvi \ + ${DOC}/variable.spad.dvi ${DOC}/vector.spad.dvi ${DOC}/view2D.spad.dvi \ + ${DOC}/view3D.spad.dvi ${DOC}/viewDef.spad.dvi ${DOC}/viewpack.spad.dvi \ + ${DOC}/void.spad.dvi \ + ${DOC}/weier.spad.dvi ${DOC}/wtpol.spad.dvi \ + ${DOC}/xlpoly.spad.dvi ${DOC}/xpoly.spad.dvi \ + ${DOC}/ystream.spad.dvi \ + ${DOC}/zerodim.spad.dvi + +@ + +\section{Test Cases} + +<<environment>>= + +TESTS=${INPUT}/INTHEORY.input ${INPUT}/VIEW2D.input ${INPUT}/TESTFR.input + +@ + +<<testrules>>= + +${INPUT}/TESTFR.input: $(srcdir)/fr.spad.pamphlet + $(axiom_build_document) --tangle='TEST FR' --output=$@ $< + +${INPUT}/INTHEORY.input: $(srcdir)/numtheor.spad.pamphlet + $(axiom_build_document) --tangle='TEST INTHEORY' --output=$@ $< + +${INPUT}/VIEW2D.input: $(srcdir)/view2D.spad.pamphlet + $(axiom_build_document) --tangle='TEST VIEW2D' --output=$@ $< + +@ + +\section{The Makefile Stanzas} + +A [[spad]] pamphlet can contain many Axiom [[categories]], [[domains]], and +[[packages]]. + +For the purpose of explanation we assume that the pamphlet file is +named [[foo.spad.pamphlet]]. It contains the domains [[BAR]], [[BAX]], +and [[BAZ]]. Thus there will be a subsection named [[foo.spad]]. + +Since pamphlet files (e.g. [[foo.spad.pamphlet]] contain a spad file +e.g. [[foo.spad]], it follows that every subsection contains a Makefile +stanza that extract the [[foo.spad]] file using [[notangle]]. + +Since pamphlet files are intended as documents it follows that each +subsection contains a Makefile stanza that extracts a [[dvi]] file +using [[noweave]]. + +We could have a category, domain, or package that is in +the ``bootstrap'' list. Bootstrap spad files contain their generated +lisp code in special sections. The way bootstrapping works is that +we extract the lisp code and compile it rather than extracting the +spad code. We do this because we need the domain to exist before we +can compile the domain. Some domains depend on themselves directly. +Some domains depend on themselves thru a long chain of other domains. +In either case we can't compile the domain until it exists so we +cache the generated lisp code and, when we need to bootstrap the +domain, we compile the raw lisp rather than the spad. + +This will only happen when the system is built from scratch. Once +the system has been built the bootstrap code is no longer executed +and these algebra files will appear as normal algebra files. That +means that once the system has been built once only the last three +rules will ever be executed. The first two rules happen when the +system is built from scratch. + +A 5 stanza group for this case performs the following functions: +\begin{enumerate} +\item extract the lisp [[BAR.lsp]] from the pamphlet [[foo.spad.pamphlet]] +\item compile and copy the bootstrap lisp to the final algebra directory +\item extract the bootstrap [[BAR.lsp]] from the spad file [[foo.spad]] +\item compile the extracted [[BAR]] domain +\item copy the compiled [[BAR]] to the final algebra directory +\end{enumerate} + +The subtle point here occurs in the first item. The bootstrap code +group (in the [[layer0 bootstrap]] code chunk above) asks for the +compiled [[.o]] files in the \File{strap/} directory. Essentially this +code group calls for intermediate compiled files. This triggers the +bootstrap stanzas (items 1 and 2 above). All of the other layer +chunks ask for compiled code in the [[\${OUT}]] directory which is +the final algebra directory. + +The bootstrap process works because first we ask for the compiled +lisp code stanzas (the \File{strap/BAR.o} files), THEN we ask for +the final algebra code stanzas (the [[\${OUT}/BAR.o]] files). This +is a very subtle point so think it through carefully. The layer0 +bootstrap list is the only file list that calls for \File{strap/} files. +All other layers ask for [[\${OUT}]] files. Make sure you +understand this before you change things. If you break it the +world will no longer compile. + +So we have a 3 stanza group for normal files, a 3+2 (5) stanza +group for normal files with default code, and a 3+2 (5) stanza +group for normal files that need to be bootstrapped. There is +another combination that occurs, namely bootstrap code that +also contains default code which gives a 3+2+2+2 (9) stanza case. +(see TSETCAT for an example. Be sure to read the items in reverse order). + +A 9 stanza group for this case performs the following functions: +\begin{enumerate} +\item extract the bootstrap \File{BAR.lsp} from the \File{foo.spad.pamphlet} +\item compile the bootstrap \File{BAR.lsp} to the \File{strap/} directory +\item extract the bootstrap \File{BAR-.lsp} from the \File{foo.spad.pamphlet} +\item compile the bootstrap \File{BAR-.lsp} to the \File{strap/} directory +\item extract the spad \File{BAR.spad} from the pamphlet + \File{foo.spad.pamphlet} +\item compile the extracted \File{BAR.spad} domain (to get [[BAR.o]]) +\item copy the \File{BAR.o} to the final algebra directory +\item compile the extracted \File{BAR-.spad} domain (to get [[BAR-.o]]) +\item copy the [[BAR-.o]] to the final algebra directory +\end{enumerate} + +As you can see this is just the combination of the two possible 5 +stanza case. We just have to deal with the [[BAR-]] both in regular +and bootstrap files. The first four stanzas will only happen when +the system is built from scratch. Once the system is built these +four rules no longer apply and these stanzas effectively act like +the 5 stanza rules above. + +I'm sure all of this seems confusing but it is very stylized code. +Basically you need to figure out which kind of stanza group you need, +copy an existing stanza group, and do a correct renaming of the parts. +The decision tree looks something like: +\begin{verbatim} +IF (you have a regular spad domain) + THEN use a 3 stanza form (see YSTREAM) +IF (you have a default spad domain (it generates [[-]] files)) AND + (it does not require bootstrapping) + THEN use the first 5 stanza form explained above (see LIECAT) +IF (you have a normal spad domain) AND + (it requires bootstrapping) + THEN use the second 5 stanza form explained above (see VECTOR) +IF (you have a default spad domain (it generates [[-]] files)) AND + (it requires bootstrapping) + THEN use the 9 stanza form explained above (see TSETCAT) +\end{verbatim} + +\section{Generic Make Rules} + +The idea is to use generic rules to try to cut down the size of this file. + +This Makefile works very hard to cache +intermediate results in order to minimize the re-build time. The cached +files are kept in the current build and \File{strap/} directories. +If one of these +files disappears but the original pamphlet file is unchanged we only +need to rebuild the intermediate file. These rule will attempt to do +that and they succeed however these are intermediate files created by +implicit rules so they would normally be deleted. To prevent the removal +the NRLIB directory and its contents, the files are marked as .PRECIOUS. + +The output of the compile step is saved in a file of the same name +and extension .out in the \${MID} directory. These files are useful for +deriving the dependencies by scanning the ``Loading ...'' messages. + +<<genericDotOfiles>>= + +${OUT}/%.o: %.NRLIB/code.o + cp $*.NRLIB/code.o ${OUT}/$*.o + +@ + +<<genericNRLIBfiles>>= + +.PRECIOUS: %.NRLIB/code.o +%.NRLIB/code.o: %.spad + @ rm -rf $*.NRLIB + echo ")co $*.spad" | ${INTERPSYS} +@ + +<<genericBOOTSTRAPfiles>>= +# Compile bootstrap file to machine object code, and the result +# immediately available for AXIOMsys consumption. +strap/%.o: %.lsp + $(DEPSYS) -- --compile --output=$@ $< + cp $@ ${OUT} +@ + +<<genericSPADfiles>>= + +$(OUTSRC)/%.spad: mk-target-src-algabra-dir + +${OUTSRC}/%.spad: $(srcdir)/%.spad.pamphlet + $(axiom_build_document) --tangle --output=$@ $< + +.PHONY: mk-target-src-algabra-dir +mk-target-src-algabra-dir: + @ [ -d $(OUTSRC) ] || $(mkinstalldirs) $(OUTSRC) + +@ +<<genericDOCfiles>>= +.PRECIOUS: $(builddir)/%.tex +.PRECIOUS: $(builddir)/%.dvi + +$(DOC)/%.dvi: mk-target-doc-dir + +.PHONY: mk-target-doc-dir +mk-target-doc-dir: + @ [ -d $(DOC) ] || $(mkinstalldirs) $(DOC) + +$(DOC)/%.dvi: $(builddir)/%.dvi + $(INSTALL_DATA) $< $@ + +$(builddir)/%.dvi: $(axiom_build_texdir)/diagrams.tex \ + $(axiom_build_texdir)/axiom.sty + +$(builddir)/%.dvi: $(builddir)/%.tex + $(axiom_build_document) --latex $< + +$(builddir)/%.tex: $(srcdir)/%.pamphlet + $(axiom_build_document) --weave --output=$@ $< + +$(axiom_build_texdir)/diagrams.tex: $(axiom_src_docdir)/diagrams.tex + $(INSTALL_DATA) $< $@ +@ +<<genericRules>>= + +<<genericDotOfiles>> +<<genericNRLIBfiles>> +<<genericBOOTSTRAPfiles>> +<<genericSPADfiles>> +<<genericDOCfiles>> + +@ +<<diagrams.tex (OUT from IN)>>= + +${DOC}/diagrams.tex: $(axiom_src_docdir)/diagrams.tex + $(INSTALL_DATA) $< $@ + +@ + +\section{Pamphlet file structure} + +Because the individual .spad files are grouped into higher-level +algebra pamphlet files, the rules for extracting them are coded +below as simple ``awk'' scripts that are called when the Makefile +is constructed. + +There are, at present, 3 kinds of algebra files to be handled. +First we have [[.as]] files which use the [[aldor]] compiler. +These are ignored here as the compiler is not yet integrated. + +Second, there are the bootstrap files. These files live within +their respective pamphlet files and are "captured" lisp code. +These are necessary to create the algebra. See the +[[src/algebra/Makefile.pamphlet]] for details. + +Third, there are 3 "types" of algebra which are all treated +the same at compile time, namely the "domain", "category", and +"package" algebra. + +\subsection{Finding the algebra code} + +NOTE: This construct is now moved to configure time. Update. + +Step 1 is to scan all of the algebra pamphlet files for the +chunk names which contain the string "domain", "package", or +"category". This is done using egrep (same as grep -E, which +means that the pattern is an extended regular expression) because +extended regular expressions allows the use of alternatives +written as (domain|package|category). Thus the command +\begin{verbatim} + egrep '@<<(domain|package|category) .*>>=' *.spad.pamphlet +\end{verbatim} +will scan the algebra files looking for special chunknames. +Axiom's chunk names are written in a stylized form so that each +algebra chunk name begins with one of those three symbols. Thus +in zerodim.spad.pamphlet the LexTriangularPackage chunkname is: +\begin{verbatim} +@<<package LEXTRIPK LexTriangularPackage>> +\end{verbatim} +so this egrep will generate an output line, prefixed by the filename +that looks like: +\begin{verbatim} +zerodim.spad.pamphlet:@<<package LEXTRIPK LexTriangularPackage>>= +\end{verbatim} +There can be many lines of output per pamphlet file, one for +each domain, package and category cod chunk contained in the file. + +Step 2 is an [[awk]] command line. + +\subsection{Write the Makefile stanzas for the algebra files} + +NOTE: This construct is now moved to configure time. + +[awk] processes each line of the [[egrep]] output. + +The awk script uses [[-F:]] which is a flag that says that a [[:]] is +the field separator. As a result the \$1 and \$2 in the awk script +refer to the parts of the egrep output that come before and after the +[[:]] respectively. + +The variable [[chunk]] is assigned the actual chunk name minus +the @<< and >>= delimiters. In the example given above this will become +\begin{verbatim} +package LEXTRIPK LexTriangularPackage +\end{verbatim} +The call to [[split]] splits the chunk into parts separated +by spaces. Thus +\begin{verbatim} + part[1]=package + part[2]=LEXTRIPK + part[3]=LexTriangularPackage +\end{verbatim} +The variable [[spadfile]] in the above example is set to +\begin{verbatim} +${MID}/LEXTRIPK.spad +\end{verbatim} +Finally, in the domain example given above we print two lines. +The first line is the Makefile stanza header which depends on the +original [[zerodim.spad.pamphlet]] file. + +The second line is the body of the makefile stanza which calls +notangle to extract the algebra from the original pamphlet using +the chunk name and writes it to the intermediate subdirectory. In +the case above this would resolve to [[\${MID}/LEXTRIPK.spad]]. + +For the line given above it outputs the following: +\begin{verbatim} +${MID}/LEXTRIPK.spad: $(srcdir)/zerodim.spad.pamphlet + $(axiom_build_document) --tangle='package LEXTRIPK LexTriangularPackage' --output=$@ $< +\end{verbatim} + +\subsection{Find the algebra bootstrap code} + +Step 3 works like step 1 above except that we are looking for +chunk names that have the "BOOTSTRAP" string. The output will look like: +\begin{verbatim} +vector.spad.pamphlet:@<<VECTOR.lsp BOOTSTRAP>>= +\end{verbatim} +This output, which can consist of many lines per input file is piped +into [[awk]]. + +The process is the same way as described above except that +there are only two parts to the chunk names +\begin{verbatim} + part[1]=VECTOR.lsp + part[2]=BOOTSTRAP +\end{verbatim} +The [[lspfile]] variable is assigned +\begin{verbatim} +${MID}/VECTOR.lsp +\end{verbatim} +Finally we output two lines: +\begin{verbatim} +${MID}/vector.spad.pamphlet: $(srcdir)/vector.spad.pamphlet + $(axiom_build_document) --tangle='VECTOR.lsp BOOTSTRAP' --output=$@ $< +\end{verbatim} + +The first line is the stanza head and creates a dependence between +the intermediate file, in this case [[int/algebra/VECTOR.lsp]] and +the input file [[src/algebra/vector.spad.pamphlet]] + +The second line calls [[notangle]] to extract the required chunk +from the source file. + +\section{Stage markers} + +We output these as each stage completes. +<<stages>>= +$(axiom_algebra_layer_0_objects): strap-stamp +$(axiom_algebra_layer_1_objects): 0-stamp +$(axiom_algebra_layer_2_objects): 1-stamp +$(axiom_algebra_layer_3_objects): 2-stamp +$(axiom_algebra_layer_4_objects): 3-stamp +$(axiom_algebra_layer_5_objects): 4-stamp +$(axiom_algebra_layer_6_objects): 5-stamp +$(axiom_algebra_layer_7_objects): 6-stamp +$(axiom_algebra_layer_8_objects): 7-stamp +$(axiom_algebra_layer_9_objects): 8-stamp +$(axiom_algebra_layer_10_objects): 9-stamp +$(axiom_algebra_layer_11_objects): 10-stamp +$(axiom_algebra_layer_12_objects): 11-stamp +$(axiom_algebra_layer_13_objects): 12-stamp +$(axiom_algebra_layer_14_objects): 13-stamp +$(axiom_algebra_layer_15_objects): 14-stamp +$(axiom_algebra_layer_16_objects): 15-stamp +$(axiom_algebra_layer_17_objects): 16-stamp +$(axiom_algebra_layer_18_objects): 17-stamp +$(axiom_algebra_layer_19_objects): 18-stamp +$(axiom_algebra_layer_20_objects): 19-stamp +$(axiom_algebra_layer_21_objects): 20-stamp +$(axiom_algebra_layer_22_objects): 21-stamp +$(axiom_algebra_layer_23_objects): 22-stamp +$(axiom_algebra_layer_user_objects): 23-stamp +$(axiom_algebra_bootstrap_objects): user-stamp + +strap-stamp: $(axiom_algebra_layer_strap_objects) + @ rm -f strap-stamp + @ $(STAMP) strap-stamp + @ echo ===================================== + @ echo === algebra bootstrap complete ====== + @ echo ===================================== + +0-stamp: strap-stamp $(axiom_algebra_layer_0_objects) + @ rm -f 0-stamp + @ $(STAMP) 0-stamp + @ echo ================================== + @ echo === layer 0 of 23 complete ====== + @ echo ================================== + +1-stamp: 0-stamp $(axiom_algebra_layer_1_objects) + @ rm -f 1-stamp + @ $(STAMP) 1-stamp + @ echo ================================== + @ echo === layer 1 of 23 complete ====== + @ echo ================================== + +2-stamp: 1-stamp $(axiom_algebra_layer_2_objects) + @ rm -f 2-stamp + @ $(STAMP) 2-stamp + @ echo ================================== + @ echo === layer 2 of 23 complete ====== + @ echo ================================== + +3-stamp: 2-stamp $(axiom_algebra_layer_3_objects) + @ rm -f 3-stamp + @ $(STAMP) 3-stamp + @ echo ================================== + @ echo === layer 3 of 23 complete ====== + @ echo ================================== + +4-stamp: 3-stamp $(axiom_algebra_layer_4_objects) + @ rm -f 4-stamp + @ $(STAMP) 4-stamp + @ echo ================================== + @ echo === layer 4 of 23 complete ====== + @ echo ================================== + +5-stamp: 4-stamp $(axiom_algebra_layer_5_objects) + @ rm -f 5-stamp + @ $(STAMP) 5-stamp + @ echo ================================== + @ echo === layer 5 of 23 complete ====== + @ echo ================================== + +6-stamp: 5-stamp $(axiom_algebra_layer_6_objects) + @ rm -f 6-stamp + @ $(STAMP) 6-stamp + @ echo ================================== + @ echo === layer 6 of 23 complete ====== + @ echo ================================== + +7-stamp: 6-stamp $(axiom_algebra_layer_7_objects) + @ rm -f 7-stamp + @ $(STAMP) 7-stamp + @ echo ================================== + @ echo === layer 7 of 23 complete ====== + @ echo ================================== + +8-stamp: 7-stamp $(axiom_algebra_layer_8_objects) + @ rm -f 8-stamp + @ $(STAMP) 8-stamp + @ echo ================================== + @ echo === layer 8 of 23 complete ====== + @ echo ================================== + +9-stamp: 8-stamp $(axiom_algebra_layer_9_objects) + @ rm -f 9-stamp + @ $(STAMP) 9-stamp + @ echo ================================== + @ echo === layer 9 of 23 complete ====== + @ echo ================================== + +10-stamp: 9-stamp $(axiom_algebra_layer_10_objects) + @ rm -f 10-stamp + @ $(STAMP) 10-stamp + @ echo ================================== + @ echo === layer 10 of 23 complete ====== + @ echo ================================== + +11-stamp: 10-stamp $(axiom_algebra_layer_11_objects) + @ rm -f 11-stamp + @ $(STAMP) 11-stamp + @ echo ================================== + @ echo === layer 11 of 23 complete ====== + @ echo ================================== + +12-stamp: 11-stamp $(axiom_algebra_layer_12_objects) + @ rm -f 12-stamp + @ $(STAMP) 12-stamp + @ echo ================================== + @ echo === layer 12 of 23 complete ====== + @ echo ================================== + +13-stamp: 12-stamp $(axiom_algebra_layer_13_objects) + @ rm -f 13-stamp + @ $(STAMP) 13-stamp + @ echo ================================== + @ echo === layer 13 of 23 complete ====== + @ echo ================================== + +14-stamp: 13-stamp $(axiom_algebra_layer_14_objects) + @ rm -f 14-stamp + @ $(STAMP) 14-stamp + @ echo ================================== + @ echo === layer 14 of 23 complete ====== + @ echo ================================== + +15-stamp: 14-stamp $(axiom_algebra_layer_15_objects) + @ rm -f 15-stamp + @ $(STAMP) 15-stamp + @ echo ================================== + @ echo === layer 15 of 23 complete ====== + @ echo ================================== + +16-stamp: 15-stamp $(axiom_algebra_layer_16_objects) + @ rm -f 16-stamp + @ $(STAMP) 16-stamp + @ echo ================================== + @ echo === layer 16 of 23 complete ====== + @ echo ================================== + +17-stamp: 16-stamp $(axiom_algebra_layer_17_objects) + @ rm -f 17-stamp + @ $(STAMP) 17-stamp + @ echo ================================== + @ echo === layer 17 of 23 complete ====== + @ echo ================================== + +18-stamp: 17-stamp $(axiom_algebra_layer_18_objects) + @ rm -f 18-stamp + @ $(STAMP) 18-stamp + @ echo ================================== + @ echo === layer 18 of 23 complete ====== + @ echo ================================== + +19-stamp: 18-stamp $(axiom_algebra_layer_19_objects) + @ rm -f 19-stamp + @ $(STAMP) 19-stamp + @ echo ================================== + @ echo === layer 19 of 23 complete ====== + @ echo ================================== + +20-stamp: 19-stamp $(axiom_algebra_layer_20_objects) + @ rm -f 20-stamp + @ $(STAMP) 20-stamp + @ echo ================================== + @ echo === layer 20 of 23 complete ====== + @ echo ================================== + +21-stamp: 20-stamp $(axiom_algebra_layer_21_objects) + @ rm -f 21-stamp + @ $(STAMP) 21-stamp + @ echo ================================== + @ echo === layer 21 of 23 complete ====== + @ echo ================================== + +22-stamp: 21-stamp $(axiom_algebra_layer_22_objects) + @ rm -f 22-stamp + @ $(STAMP) 22-stamp + @ echo ================================== + @ echo === layer 22 of 23 complete ====== + @ echo ================================== + +23-stamp: 22-stamp $(axiom_algebra_layer_23_objects) + @ rm -f 23-stamp + @ $(STAMP) 23-stamp + @ echo ================================== + @ echo === layer 23 of 23 complete ====== + @ echo ================================== + +user-stamp: 23-stamp $(axiom_algebra_layer_user_objects) + @ rm -f user-stamp + @ $(STAMP) user-stamp + + +# bootstrap-pre: user-stamp $(axiom_algebra_bootstrap_nrlibs) +# $(axiom_algebra_bootstrap_nrlibs): user-stamp + +# bootstrap-post: bootstrap-pre $(axiom_algebra_bootstrap_objects) + +bootstrap-stamp: $(axiom_algebra_bootstrap_objects) + @ rm -f bootstrap-stamp + @ $(STAMP) bootstrap-stamp + @ echo ================================== + @ echo === algebra complete ====== + @ echo ================================== +@ + +\section{The Makefile} + +<<*>>= +<<environment>> + +subdir = src/algebra/ + +<<layer0 bootstrap>> +<<layer0 copy>> +<<layer0>> +<<layer1>> +<<layer2>> +<<layer3>> +<<layer4>> +<<layer5>> +<<layer6>> +<<layer7>> +<<layer8>> +<<layer9>> +<<layer10>> +<<layer11>> +<<layer12>> +<<layer13>> +<<layer14>> +<<layer15>> +<<layer16>> +<<layer17>> +<<layer18>> +<<layer19>> +<<layer20>> +<<layer21>> +<<layer22>> +<<layer23>> +<<USERLAYER>> + +# The algebra build is not yet ready for parallel build. +.NOTPARALLEL: + +.PHONY: all all-algebra mkdir-output-directory +all: all-ax + +all-ax all-algebra: stamp + @ echo finished $(builddir) + +stamp: mkdir-output-directory ${SPADFILES} bootstrap-stamp ${TESTS} + -rm -f stamp + $(STAMP) stamp + +mkdir-output-directory: + $(mkinstalldirs) $(OUTSRC) + +everything: check lib db cmd gloss + @ echo 4303 invoking make in `pwd` with parms: + @ echo SYS= ${SYS} LSP= ${LSP} + @ echo MNT= ${MNT} LISP=${LISP} BYE=${BYE} + +check: + @ echo 4305 Checking that INTERP.EXPOSED and NRLIBs are consistent + @ echo 4306 libcheck needs to use exposed.lsp, not INTERP.EXPOSED + + +<<genericRules>> + +<<testrules>> +<<diagrams.tex (OUT from IN)>> +<<stages>> + +mostlyclean-local: + @ -rm -f $(OUT)/*.$(OBJEXT) + @ -rm -rf *.NRLIB + +clean-local: mostlyclean-local + +distclean-local: clean-local + +include extract-lisp-files.mk +include extract-spad.mk + +.NOTPARALLEL: + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |