diff options
-rw-r--r-- | src/interp/ChangeLog | 26 | ||||
-rw-r--r-- | src/interp/Makefile.in | 25 | ||||
-rw-r--r-- | src/interp/Makefile.pamphlet | 25 | ||||
-rw-r--r-- | src/interp/bootfuns.lisp.pamphlet | 98 | ||||
-rw-r--r-- | src/interp/daase.lisp.pamphlet | 11 | ||||
-rw-r--r-- | src/interp/parsing.lisp.pamphlet | 10 | ||||
-rw-r--r-- | src/interp/setvart.boot.pamphlet | 6 |
7 files changed, 94 insertions, 107 deletions
diff --git a/src/interp/ChangeLog b/src/interp/ChangeLog index 07a1eb5e..0ec27d3e 100644 --- a/src/interp/ChangeLog +++ b/src/interp/ChangeLog @@ -1,5 +1,31 @@ 2007-08-19 Gabriel Dos Reis <gdr@cs.tamu.edu> + * boot-pkg.lisp: New. + + * Makefile.pamphlet (${DEPSYS}): Depend on it + (parsing.$(FASLEXT)): Likewise. + (bookvol5.$(FASLEXT)): Likewise. + (nocompil.$(FASLEXT)): Likewise. + (bootfuns.$(FASLEXT)): Likewise. + (boot-pkg.$(FASLEXT)): New rule. + (boot-pkg.lisp): New rule; work around GCL+VPATH voodoo. + (VPATH): Clear. + * Makefile.in: Regenerate. + + * bootfuns.lisp.pamphlet: Don't define package "BOOT" here. + Import "boot-pkg". + (|printLoadMessages|): Move to setvart.boot.pamphlet. + Move special functions to boot-pkg.lisp. + Move get-current-directory to daase.lisp.pamphlet. + + * setvart.boot.pamphlet (printLoadMessages): Move from + bootfuns.lisp.pamphlet. Write as Boot code. + + * daase.lisp.pamphlet (get-current-directory): Move from + bootfuns.lisp.pamphlet + +2007-08-19 Gabriel Dos Reis <gdr@cs.tamu.edu> + * i-syscmd.boot.pamphlet (SPADRWRITE): Don't confuse Boot comments with Lisp comments. diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in index d5e19916..4c58aeab 100644 --- a/src/interp/Makefile.in +++ b/src/interp/Makefile.in @@ -335,11 +335,15 @@ depsys_objects = nocompil.$(FASLEXT) bookvol5.$(FASLEXT) g-error.$(FASLEXT) \ fnewmeta.$(FASLEXT) clam.$(FASLEXT) \ slam.$(FASLEXT) g-boot.$(FASLEXT) c-util.$(FASLEXT) \ g-util.$(FASLEXT) +VPATH = + + ${DEPSYS}: vmlisp.$(FASLEXT) \ hash.$(FASLEXT) \ ggreater.$(FASLEXT) \ union.$(FASLEXT) \ + boot-pkg.$(FASLEXT) \ bootfuns.$(FASLEXT) \ ${DEP} \ nocompil.$(FASLEXT) \ @@ -412,16 +416,19 @@ ${DEPSYS}: vmlisp.$(FASLEXT) \ util.$(FASLEXT): util.lisp parsing.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -parsing.$(FASLEXT): parsing.lisp bootfuns.$(FASLEXT) +parsing.$(FASLEXT): parsing.lisp boot-pkg.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +bookvol5.$(FASLEXT): bookvol5.lisp boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -bookvol5.$(FASLEXT): bookvol5.lisp bootfuns.$(FASLEXT) +nocompil.$(FASLEXT): nocompil.lisp boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -nocompil.$(FASLEXT): nocompil.lisp bootfuns.$(FASLEXT) +bootfuns.$(FASLEXT): bootfuns.lisp hash.$(FASLEXT) boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -bootfuns.$(FASLEXT): bootfuns.lisp hash.$(FASLEXT) +boot-pkg.$(FASLEXT): boot-pkg.lisp vmlisp.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< hash.$(FASLEXT): hash.lisp vmlisp.$(FASLEXT) @@ -436,6 +443,16 @@ ggreater.$(FASLEXT): ggreater.lisp vmlisp.$(FASLEXT) vmlisp.$(FASLEXT): vmlisp.lisp $(BOOTSYS) -- --compile --output=$@ $< + +## GCL-2.6.8pre has the following behaviour that it will +## try to forcefully put the compiled code in the same directory +## as the source. This is hardly what we want, especially when +## the source file reside in non-writeable areas. Consequently, +## we copy the source file to the current working directory -- +## until we find a better way to convince GCL to do the right thing. +boot-pkg.lisp: $(srcdir)/boot-pkg.lisp + cp $< $@ + .PHONY: all-axiomsys all-axiomsys: ${AXIOMSYS} diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet index 1785de68..e20283fe 100644 --- a/src/interp/Makefile.pamphlet +++ b/src/interp/Makefile.pamphlet @@ -983,11 +983,15 @@ depsys_objects = nocompil.$(FASLEXT) bookvol5.$(FASLEXT) g-error.$(FASLEXT) \ fnewmeta.$(FASLEXT) clam.$(FASLEXT) \ slam.$(FASLEXT) g-boot.$(FASLEXT) c-util.$(FASLEXT) \ g-util.$(FASLEXT) +VPATH = + + ${DEPSYS}: vmlisp.$(FASLEXT) \ hash.$(FASLEXT) \ ggreater.$(FASLEXT) \ union.$(FASLEXT) \ + boot-pkg.$(FASLEXT) \ bootfuns.$(FASLEXT) \ ${DEP} \ nocompil.$(FASLEXT) \ @@ -1059,16 +1063,19 @@ ${DEPSYS}: vmlisp.$(FASLEXT) \ util.$(FASLEXT): util.lisp parsing.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -parsing.$(FASLEXT): parsing.lisp bootfuns.$(FASLEXT) +parsing.$(FASLEXT): parsing.lisp boot-pkg.$(FASLEXT) + $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< + +bookvol5.$(FASLEXT): bookvol5.lisp boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -bookvol5.$(FASLEXT): bookvol5.lisp bootfuns.$(FASLEXT) +nocompil.$(FASLEXT): nocompil.lisp boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -nocompil.$(FASLEXT): nocompil.lisp bootfuns.$(FASLEXT) +bootfuns.$(FASLEXT): bootfuns.lisp hash.$(FASLEXT) boot-pkg.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< -bootfuns.$(FASLEXT): bootfuns.lisp hash.$(FASLEXT) +boot-pkg.$(FASLEXT): boot-pkg.lisp vmlisp.$(FASLEXT) $(BOOTSYS) -- --compile --output=$@ --load-directory=. $< hash.$(FASLEXT): hash.lisp vmlisp.$(FASLEXT) @@ -1083,6 +1090,16 @@ ggreater.$(FASLEXT): ggreater.lisp vmlisp.$(FASLEXT) vmlisp.$(FASLEXT): vmlisp.lisp $(BOOTSYS) -- --compile --output=$@ $< + +## GCL-2.6.8pre has the following behaviour that it will +## try to forcefully put the compiled code in the same directory +## as the source. This is hardly what we want, especially when +## the source file reside in non-writeable areas. Consequently, +## we copy the source file to the current working directory -- +## until we find a better way to convince GCL to do the right thing. +boot-pkg.lisp: $(srcdir)/boot-pkg.lisp + cp $< $@ + @ \section{Building SAVESYS and AXIOMSYS} diff --git a/src/interp/bootfuns.lisp.pamphlet b/src/interp/bootfuns.lisp.pamphlet index ebf2d665..33b953e7 100644 --- a/src/interp/bootfuns.lisp.pamphlet +++ b/src/interp/bootfuns.lisp.pamphlet @@ -62,17 +62,7 @@ interpreter or algebra uses has to (cough, cough) appear here. <<*>>= <<license>> -;; This is a horrible hack to work around a horrible bug in GCL -;; as reported here: -;; http://lists.gnu.org/archive/html/gcl-devel/2007-08/msg00004.html -#+:gcl (in-package "VMLISP") -#+:gcl (in-package "AxiomCore") - -(IMPORT-MODULE "hash") -(defpackage "BOOT" - #+:common-lisp (:use "COMMON-LISP") - #-:common-lisp (:use "LISP") - (:use "VMLISP" "AxiomCore")) +(IMPORT-MODULE "boot-pkg") @ @@ -112,79 +102,6 @@ offer it as extensions. #+:clisp (import 'ext:compiler-let) @ -\subsection{Missing DFLOAT Transcendental functions} - -These functions should be defined for DoubleFloat inputs but are not. -These are cheap and easy definitions that work but should be rewritten. -<<Missing DFLOAT Transcendental functions>>= -(defun sec (x) (/ 1 (cos x))) -(defun csc (x) (/ 1 (sin x))) -(defun acsc (x) (asin (/ 1 x))) -(defun asec (x) (acos (/ 1 x))) -(defun csch (x) (/ 1 (sinh x))) -(defun coth (x) (* (cosh x) (csch x))) -(defun sech (x) (/ 1 (cosh x))) -(defun acsch (x) (asinh (/ 1 x))) -(defun acoth (x) (atanh (/ 1 x))) -(defun asech (x) (acosh (/ 1 x))) -@ - -\subsection{The manexp fix} - -Contributed by Juergen Weiss from a suggestion by Arthur Norman. -This is a Mantissa and Exponent function. -<<manexp>>= -#+(or :cmu :akcl :gcl) -(defun manexp (u) - (multiple-value-bind (f e s) - (decode-float u) - (cons (* s f) e))) - -@ - -\subsection{The arc cotangent function} - -Contributed by Juergen Weiss from Arthur Norman's CCL. -<<acot>>= -#+(or :cmu :akcl :gcl) -(defun acot (a) - (if (> a 0.0) - (if (> a 1.0) - (atan (/ 1.0 a)) - (- (/ pi 2.0) (atan a))) - (if (< a -1.0) - (- pi (atan (/ -1.0 a))) - (+ (/ pi 2.0) (atan (- a)))))) - -@ - -\subsection{The arc cotangent function} - -Contributed by Juergen Weiss from Arthur Norman's CCL. -<<cot>>= -#+(or :cmu :akcl :gcl) -(defun cot (a) - (if (or (> a 1000.0) (< a -1000.0)) - (/ (cos a) (sin a)) - (/ 1.0 (tan a)))) - -@ - -\subsection{The get-current-directory function} - -Contributed by Juergen Weiss. -<<getCD>>= -#+:cmu -(defun get-current-directory () - (namestring (extensions::default-directory))) - -#+(or :akcl :gcl) -(defun get-current-directory () - (namestring (truename ""))) - -@ - - <<*>>= ; NAME: Boot Package @@ -575,19 +492,6 @@ for primitive domains. Also used by putInLocalDomainReferences and optCal.") (def-boot-val |$inputPromptType| '|step| "checked in MKPROMPT") (def-boot-val |$IOindex| 0 "step counter") -(defun |printLoadMessages| (u) - (if (memq u '(|%display%| |%describe%|)) - (if |$printLoadMsgs| "on" "off") - (seq - (setq |$printLoadMsgs| (and (listp u) (equal (car u) '|on|))) -#+:CCL (verbos (if |$printLoadMsgs| 2 0)) -))) - -<<manexp>> -<<acot>> -<<cot>> -<<getCD>> -<<Missing DFLOAT Transcendental functions>> @ \eject \begin{thebibliography}{99} diff --git a/src/interp/daase.lisp.pamphlet b/src/interp/daase.lisp.pamphlet index e5de9ba5..6713021f 100644 --- a/src/interp/daase.lisp.pamphlet +++ b/src/interp/daase.lisp.pamphlet @@ -814,6 +814,17 @@ database. (defun |with| (args) (|library| args)) +;; Current directory +;; Contributed by Juergen Weiss. +#+:cmu +(defun get-current-directory () + (namestring (extensions::default-directory))) + +#+(or :akcl :gcl) +(defun get-current-directory () + (namestring (truename ""))) + + ; )library top level command (defun |library| (args) diff --git a/src/interp/parsing.lisp.pamphlet b/src/interp/parsing.lisp.pamphlet index ff27ac67..7301b8fe 100644 --- a/src/interp/parsing.lisp.pamphlet +++ b/src/interp/parsing.lisp.pamphlet @@ -90,12 +90,18 @@ ; 5. Routines for inspecting and resetting total I/O system state ; ; METALEX.LISP: Meta file handling, auxiliary parsing actions and tokenizing -; METAMETA.LISP: Meta parsing ; ; BOOTLEX.LISP: Boot file handling, auxiliary parsing actions and tokenizing ; NEWMETA.LISP: Boot parsing -(import-module "bootfuns") +;; This is a horrible hack to work around a horrible bug in GCL +;; as reported here: +;; http://lists.gnu.org/archive/html/gcl-devel/2007-08/msg00004.html +;; +#+(and :gcl (not :common-lisp)) (in-package "VMLISP") +#+(and :gcl (not :common-lisp)) (in-package "AxiomCore") + +(import-module "boot-pkg") (in-package "BOOT") ; 0. Current I/O Stream definition diff --git a/src/interp/setvart.boot.pamphlet b/src/interp/setvart.boot.pamphlet index 98dda551..2c02ecfe 100644 --- a/src/interp/setvart.boot.pamphlet +++ b/src/interp/setvart.boot.pamphlet @@ -2373,6 +2373,12 @@ SETANDFILEQ($setOptions,'( <<userlevel>> )) +--% +printLoadMessages u == + MEMQ(u, '(%display% %describe%)) => + ($printLoadMsgs => '"on"; '"off") + $printLoadMsgs := u is ["on"] + -- The following creates a list of option names in the above table. SETANDFILEQ($setOptionNames, [x.0 for x in $setOptions]) |