aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interp/ChangeLog26
-rw-r--r--src/interp/Makefile.in25
-rw-r--r--src/interp/Makefile.pamphlet25
-rw-r--r--src/interp/bootfuns.lisp.pamphlet98
-rw-r--r--src/interp/daase.lisp.pamphlet11
-rw-r--r--src/interp/parsing.lisp.pamphlet10
-rw-r--r--src/interp/setvart.boot.pamphlet6
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])