From: Raymond T. <rt...@us...> - 2003-02-23 18:04:49
|
Update of /cvsroot/maxima/maxima/src In directory sc8-pr-cvs1:/tmp/cvs-serv23535/src Modified Files: Makefile.am factor.lisp generr.lisp init-cl.lisp macsys.lisp maxima.in maxima.system mdebug.lisp nparse.lisp plot.lisp spgcd.lisp transs.lisp Log Message: Add support for ACL6. All tests pass, except for the one expected error. Index: Makefile.am =================================================================== RCS file: /cvsroot/maxima/maxima/src/Makefile.am,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Makefile.am 22 Feb 2003 08:41:36 -0000 1.19 +++ Makefile.am 23 Feb 2003 18:04:45 -0000 1.20 @@ -69,6 +69,43 @@ include cmucl-depends.mk endif + +if ACL6 +all-local: binary-acl6/maxima.dxl +install-exec-local: install-acl6 +uninstall: uninstall-acl6 +clean: clean-acl6 +distclean: clean-acl6 + +binary-acl6/maxima.dxl: + test -d binary-acl6 || mkdir binary-acl6 + test -d binary-acl6/numerical || mkdir binary-acl6/numerical + test -d binary-acl6/numerical/slatec || mkdir binary-acl6/numerical/slatec + LISPTYPE=acl6 ; export LISPTYPE ;\ + ACL6=$(ACL6_NAME) ; export ACL6 ;\ + $(RUNLISP) -i "$(top_srcdir)/lisp-utils/defsystem" \ + -x '(funcall (intern "OPERATE-ON-SYSTEM" :mk) "maxima" :compile :verbose t)' && \ + $(RUNLISP) -i "$(top_srcdir)/lisp-utils/defsystem" \ + -x '(funcall (intern "OPERATE-ON-SYSTEM" :mk) "maxima" :load :verbose t)' \ + -d binary-acl6/maxima + +install-acl6: + $(mkinstalldirs) "$(DESTDIR)$(verpkglibdir)/binary-acl6" + $(INSTALL_DATA) binary-acl6/maxima.dxl "$(DESTDIR)$(verpkglibdir)/binary-acl6/maxima.dxl" + +uninstall-acl6: + rm -f "$(DESTDIR)$(verpkglibdir)/binary-acl6/maxima.dxl" + +clean-acl6: + rm -rf binary-acl6 +acl6-depends.mk: maxima.system + LISPTYPE=acl6 ; export LISPTYPE ;\ + ACL6=$(ACL6_NAME); export ACL6 ;\ + $(RUNLISP) -i "$(top_srcdir)/lisp-utils/defsystem" -x '(load "$(top_srcdir)/lisp-utils/make-depends")(funcall (intern "CREATE-DEPENDENCY-FILE" :mk) "binary-acl6/maxima.dxl" "acl6-depends.mk")' +include acl6-depends.mk +endif + + if SBCL all-local: binary-sbcl/maxima.core install-exec-local: install-sbcl Index: factor.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/factor.lisp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- factor.lisp 8 May 2000 06:09:41 -0000 1.1.1.1 +++ factor.lisp 23 Feb 2003 18:04:46 -0000 1.2 @@ -35,9 +35,11 @@ (FIXNUM #-cl (LOG2))) (declare-top(special afixn fctcfixn invcfixn)) +(eval-when (load compile eval) (defmacro afixn (row col) `(arraycall fixnum afixn ,row ,col)) (defmacro fctcfixn (ind) `(arraycall fixnum fctcfixn ,ind)) (defmacro invcfixn (ind) `(arraycall fixnum invcfixn ,ind)) +) ;; Internal specials Index: generr.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/generr.lisp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- generr.lisp 22 Feb 2003 10:22:59 -0000 1.5 +++ generr.lisp 23 Feb 2003 18:04:46 -0000 1.6 @@ -5,6 +5,7 @@ #+(or lispm kcl) (error "the errset special form is defined elsewhere for these machines") +#|| #+excl ;for franz common lisp (defmacro errset (&rest l) `(multiple-value-bind @@ -13,6 +14,7 @@ (cond (noerr (list val)) (errset (error "error inside errset")) (t nil)))) +||# #+lucid (defmacro errset (&rest l) @@ -33,10 +35,11 @@ ;;at all, that caught no errors but at least ;;returned a list in the normal case would be -#+(or cmu sbcl clisp) +#+(or cmu sbcl clisp allegro) (defmacro errset (&rest l) `(handler-case (list ,(car l)) (error (e) (when errset (error e))))) + #-(or excl clisp cmu sbcl lucid) (defmacro errset (&rest l) `(list ,(car l))) Index: init-cl.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/init-cl.lisp,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- init-cl.lisp 22 Feb 2003 10:01:54 -0000 1.20 +++ init-cl.lisp 23 Feb 2003 18:04:46 -0000 1.21 @@ -163,6 +163,11 @@ (load maxima_int_lisp_preload)) (if maxima_int_input_string (setq input-string (make-string-input-stream maxima_int_input_string))) + + #+allegro + (progn + (set-readtable-for-macsyma) + (setf *read-default-float-format* 'lisp::double-float)) (catch 'to-lisp (set-pathnames) Index: macsys.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/macsys.lisp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- macsys.lisp 22 Feb 2003 10:01:54 -0000 1.18 +++ macsys.lisp 23 Feb 2003 18:04:46 -0000 1.19 @@ -488,6 +488,10 @@ (defun $system (&rest args) (ext:run-program "/bin/sh" (list "-c" (apply '$sconcat args)))) +#+allegro +(defun $system (&rest args) + (excl:run-shell-command (apply '$sconcat args) :wait t)) + #+sbcl (defun $system (&rest args) (sb-ext:run-program "/bin/sh" (list "-c" (apply '$sconcat args)) :output t)) Index: maxima.in =================================================================== RCS file: /cvsroot/maxima/maxima/src/maxima.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- maxima.in 22 Feb 2003 09:23:45 -0000 1.12 +++ maxima.in 23 Feb 2003 18:04:46 -0000 1.13 @@ -28,7 +28,8 @@ CMUCL=@CMUCL_NAME@ SBCL=@SBCL_NAME@ GCL=@GCL_NAME@ - export CLISP CMUCL SBCL GCL + ACL6=@ACL6_NAME@ + export CLISP CMUCL SBCL GCL ACL6 MAXIMA_VERSION=@VERSION@ prefix=@prefix@ exec_prefix=@exec_prefix@ Index: maxima.system =================================================================== RCS file: /cvsroot/maxima/maxima/src/maxima.system,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- maxima.system 22 Feb 2003 10:01:54 -0000 1.17 +++ maxima.system 23 Feb 2003 18:04:46 -0000 1.18 @@ -18,7 +18,8 @@ #+cmu (truename "binary-cmucl") #+sbcl "binary-sbcl" #+gcl "binary-gcl" - #-(or clisp cmu sbcl gcl) "binary-unknownlisp" + #+allegro "binary-acl6" + #-(or clisp cmu sbcl gcl allegro) "binary-unknownlisp" :components ((:module package :source-pathname "" :load-only t :components ((:file "maxima-package"))) Index: mdebug.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/mdebug.lisp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- mdebug.lisp 22 Feb 2003 10:38:16 -0000 1.13 +++ mdebug.lisp 23 Feb 2003 18:04:46 -0000 1.14 @@ -269,6 +269,7 @@ (eval-when (compile) (proclaim '(special *mread-prompt*))) +#-allegro (defun dbm-read (&optional (stream *standard-input*) (eof-error-p t) (eof-value nil) repeat-if-newline &aux tem ch (mprompt *mread-prompt*) (*mread-prompt* "") @@ -339,6 +340,89 @@ stream))) (mread new-stream eof-value)) (mread stream eof-value))))) + +;; This needs work! It doesn't handle input spread across lines. +#+allegro +(defun dbm-read (&optional (stream *standard-input*) (eof-error-p t) + (eof-value nil) repeat-if-newline &aux tem ch + (mprompt *mread-prompt*) (*mread-prompt* "") + next + ) + + (when (> (length mprompt) 0) + (fresh-line *standard-output*) + (princ mprompt *standard-output*) + (force-output *standard-output*) + ;;(format t "~&~a" mprompt) + ) + (let ((unread-ch '())) + (flet ((prepend-read-line (stream eof-error-p eof-value) + (prog1 + (concatenate 'string (string unread-ch) + (read-line stream eof-error-p eof-value)) + (setf unread-ch nil)))) + (tagbody + top + (setq ch (read-char stream eof-error-p eof-value)) + (cond ((or (eql ch #\newline) (eql ch #\return)) + (if (and repeat-if-newline *last-dbm-command*) + (return-from dbm-read *last-dbm-command*)) + (go top) + ) + ((eq ch eof-value) (return-from dbm-read eof-value))) + ;; ANSI CL portability bug here. It's undefined if you do a + ;; stream operation and then unread-char, so we save the + ;; character we want to unread in UNREAD-CH. Then remember + ;; that when we read from the stream STREAM, we need to prepend + ;; UNREAD-CH. This makes it portable. + (and (eql ch #\?) (setq next (peek-char nil stream nil))) + (setf unread-ch ch) + ) + (cond ((eql #\: ch) + (let* ((line (prepend-read-line stream eof-error-p eof-value)) + fun) + (multiple-value-bind + (keyword n) + (read-from-string line) + (setq fun (complete-prop keyword 'keyword 'break-command)) + (and (consp fun) (setq fun (car fun))) + ;(print (list 'line line)) + (setq *last-dbm-command* + (cond ((null fun) '(:_none)) + ((get fun 'maxima-read) + (cons keyword (mapcar 'macsyma-read-string + (split-string line " " n )))) + (t (setq tem + ($sconcat "(" (string-right-trim ";" line) ")")) + ;(print (list 'tem tem)) + (read (make-string-input-stream tem) + eof-error-p eof-value))))))) + ((and (eql #\? ch) (member next '(#\space #\tab))) + (let* ((line (string-trim '(#\space #\tab #\; #\$) + (subseq + (prepend-read-line stream eof-error-p eof-value) 1)))) + `((displayinput) nil (($describe) ,line)))) + (t + (setq *last-dbm-command* nil) + ;; At this point, we have peeked at the next character, but + ;; CMUCL has also deleted that character. This is a hack. + ;; + ;; Read the char that we unread back to the stream. + ;; Make a new stream consisting of the next char and the + ;; rest of the actual input. + (if (eql #\? ch) + (let* ((first-char (read-char stream)) + (new-stream (make-concatenated-stream + (make-string-input-stream + (concatenate 'string (string first-char) + (string next))) + stream))) + (mread new-stream eof-value)) + (let* ((new-stream (make-concatenated-stream + (make-string-input-stream + (string unread-ch)) + stream))) + (mread new-stream eof-value)))))))) (defun grab-line-number (li stream) Index: nparse.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/nparse.lisp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- nparse.lisp 10 Jan 2002 03:19:35 -0000 1.10 +++ nparse.lisp 23 Feb 2003 18:04:46 -0000 1.11 @@ -419,6 +419,11 @@ (DEFUN MAKE-NUMBER (DATA) (SETQ DATA (NREVERSE DATA)) + ;; Maxima really wants to read in any number as a double-float + ;; (except when we have a bigfloat, of course!). So convert an E or + ;; S exponent marker to D. + (when (member (car (nth 3. data)) '(#\E #\S)) + (setf (nth 3. data) (list #\D))) (IF (NOT (EQUAL (NTH 3. DATA) '(#\B))) (READLIST (APPLY #'APPEND DATA)) ;; For bigfloats, turn them into rational numbers then convert to bigfloat @@ -693,7 +698,8 @@ (DEFMACRO DEF-LED-EQUIV (OP EQUIV) (LIST 'PUTPROP (LIST 'QUOTE OP) (LIST 'FUNCTION EQUIV) (LIST 'QUOTE 'LED))) -(DEFMACRO LED-PROPL () ''(LED)) +(eval-when (compile load eval) + (DEFMACRO LED-PROPL () ''(LED))) (DEFMACRO DEF-LED-FUN (OP-NAME OP-L . BODY) (LIST* 'DEFUN-PROP (LIST* OP-NAME 'LED 'NIL) OP-L BODY)) (DEFUN LED-CALL (OP L) Index: plot.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/plot.lisp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- plot.lisp 1 Jul 2002 21:34:04 -0000 1.18 +++ plot.lisp 23 Feb 2003 18:04:46 -0000 1.19 @@ -1329,7 +1329,7 @@ (defvar $show_openplot t) (defun show-open-plot (ans) (cond ($show_openplot - (with-open-file (st1 "maxout.openmath" :direction :output) + (with-open-file (st1 "maxout.openmath" :direction :output :if-exists :supersede) (princ ans st1)) ($system (concatenate 'string *maxima-plotdir* "/" $openmath_plot_command) " maxout.openmath" )) (t (princ ans) ""))) Index: spgcd.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/spgcd.lisp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- spgcd.lisp 8 May 2000 06:09:41 -0000 1.1.1.1 +++ spgcd.lisp 23 Feb 2003 18:04:46 -0000 1.2 @@ -135,6 +135,7 @@ (eval-mon (car l) pt)))) ;Should think about a better ;way to do this evaluation. +#-allegro (defun SWAP-ROWS (mat m n) ;Interchange row m and n (do ((k 0 (f1+ k)) (l (ncols mat))) Index: transs.lisp =================================================================== RCS file: /cvsroot/maxima/maxima/src/transs.lisp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- transs.lisp 22 Feb 2003 10:32:12 -0000 1.3 +++ transs.lisp 23 Feb 2003 18:04:46 -0000 1.4 @@ -271,14 +271,14 @@ (setq result (list '(mlist) input-file))) (t (setq result (translate-file input-file translation-output-file)) (setq input-file (third result)))) - #+(or cmu sbcl clisp) + #+(or cmu sbcl clisp allegro) (multiple-value-bind (output-truename warnings-p failure-p) (compile-file input-file :output-file (or bin-file t)) ;; If the compiler encountered errors, don't set bin-file to ;; indicate that we found errors. Is this what we want? (unless failure-p (setq bin-file output-truename))) - #-(or cmu sbcl clisp) + #-(or cmu sbcl clisp allegro) (setq bin-file (compile-file input-file :output-file bin-file)) (append result (list bin-file))) |