Hi,
I have been compiling McCLIM with Scieneer Common Lisp. Worked well - a few problems:
********************************************
Flexichain needs SCL support for weak pointers. That's easy:
File utilities.lisp
(defun make-weak-pointer (object) "Creates a new weak pointer which points to OBJECT. For portability reasons, OBJECT most not be NIL." (assert (not (null object))) #+:sbcl (sb-ext:make-weak-pointer object) #+:cmu (ext:make-weak-pointer object) #+:scl (ext:make-weak-pointer object) #+:clisp (ext:make-weak-pointer object) #+:allegro (let ((wv (excl:weak-vector 1))) (setf (svref wv 0) object) wv) #+:openmcl (let ((wp (%make-weak-pointer))) (setf (gethash wp *weak-pointers*) object) wp) #+:corman (ccl:make-weak-pointer object) #+:lispworks (let ((array (make-array 1))) (hcl:set-array-weak array t) (setf (svref array 0) object) array) #-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl) object)
(defun weak-pointer-value (weak-pointer) "If WEAK-POINTER is valid, returns its value. Otherwise, returns NIL." #+:sbcl (prog1 (sb-ext:weak-pointer-value weak-pointer)) #+:cmu (prog1 (ext:weak-pointer-value weak-pointer)) #+:scl (prog1 (ext:weak-pointer-value weak-pointer)) #+:clisp (prog1 (ext:weak-pointer-value weak-pointer)) #+:allegro (svref weak-pointer 0) #+:openmcl (prog1 (gethash weak-pointer *weak-pointers*)) #+:corman (ccl:weak-pointer-obj weak-pointer) #+:lispworks (svref weak-pointer 0) #-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl) weak-pointer)
#-(or :sbcl :cmu :clisp :allegro :openmcl :corman :lispworks :scl) (eval-when (:compile-toplevel :load-toplevel :execute) (warn "No support for weak pointers in this implementation. ~ Things may get big and slow."))
********************************************
File mcclim/designs.lisp
this files uses WITH-MEDIUM-OPTIONS, a macro that is later defined in some other file. The definition that uses WITH-MEDIUM-OPTIONS can be removed, since it is also defined later.
********************************************
File mcclim/presentation-defs.lisp
(define-presentation-generic-function %accept accept (type-key parameters options type stream view &key))
Above definition needs to be something like this:
(define-presentation-generic-function %accept accept (type-key parameters options type stream view &key &allow-other- keys))
Since there are uses of ACCEPT with :DEFAULT and :DEFAULT-TYPE .
********************************************
File: mcclim/Drei/Persistent/persistent-undo.lisp
In: DEFMETHOD FLIP-UNDO-RECORD (FLEXICHAIN::WEAK-POINTER-VALUE C BUFFER)
WEAK-POINTER-VALUE takes only one argument, not two.
********************************************
After fixing above problems, McCLIM compiled fine with Scieneer Common Lisp. The Listener example was running fine...
Regards,
Rainer Joswig
Rainer Joswig, Hamburg, Germany http://lispm.dyndns.org/ mailto:joswig@lisp.de