X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcold%2Fansify.lisp;h=5bfa6d2415271cdd8391dd28587a32d5091012d8;hb=f1407e424f1063203af07d2e61ceef58515a4797;hp=31cf9fbfe5feaca54847036066f401e8c9a48c72;hpb=c7468ce98233e22d968b8a740743b4bac9ea2c5a;p=sbcl.git diff --git a/src/cold/ansify.lisp b/src/cold/ansify.lisp index 31cf9fb..5bfa6d2 100644 --- a/src/cold/ansify.lisp +++ b/src/cold/ansify.lisp @@ -1,4 +1,4 @@ -;;;; patches to hide some implementation idiosyncrasies in our +;;;; patches to work around implementation idiosyncrasies in our ;;;; cross-compilation host ;;;; This software is part of the SBCL system. See the README file for @@ -9,6 +9,8 @@ ;;;; public domain. The software is in the public domain and is ;;;; provided with absolutely no warranty. See the COPYING and CREDITS ;;;; files for more information. + +;;;; CLISP issues #+clisp (locally @@ -29,11 +31,21 @@ (export 'boolean "LISP") |# - ;; I gave up on using CLISP-1999-01-08 as a cross-compilation host because of - ;; problems that I don't have workarounds for: - (error "can't use CLISP -- no MAKE-LOAD-FORM") - (error "can't use CLISP -- no (FUNCTION (SETF SYMBOL-FUNCTION))") - ) + ;; apparently fixed sometime in 2001, hurray! + #| (error "can't use CLISP -- no MAKE-LOAD-FORM") |# + + ;; CLISP is still unsupported as a cross-compilation host because of + ;; these known problems: + (flet ((clisp-ouch (s) (error "can't bootstrap with CLISP: ~A" s))) + ;; These problems don't seem deep, and could probably be worked + ;; around. + #+nil (clisp-ouch "no (DOCUMENTATION X) when X is a PACKAGE") + #+nil (clisp-ouch "no (FUNCTION (SETF SYMBOL-FUNCTION))")) + + (ext:without-package-lock ("SYSTEM") + (setf system::*inhibit-floating-point-underflow* t))) + +;;;; CMU CL issues ;;; CMU CL, at least as of 18b, doesn't support PRINT-OBJECT. In ;;; particular, it refuses to compile :PRINT-OBJECT options to @@ -63,6 +75,19 @@ (warn "CMU CL has a broken implementation of READ-SEQUENCE.") (pushnew :no-ansi-read-sequence *features*)) +#+(and cmu alpha) +(unless (ignore-errors (read-from-string "1.0l0")) + (error "CMUCL on Alpha can't read floats in the format \"1.0l0\". Patch your core file~%~%")) + +;;;; general non-ANSI-ness + +(in-package :sb-cold) + +(defmacro munging-cl-package (&body body) + #-clisp `(progn ,@body) + #+clisp `(ext:without-package-lock ("CL") + ,@body)) + ;;; Do the exports of COMMON-LISP conform to the standard? If not, try ;;; to make them conform. (Of course, ANSI says that bashing symbols ;;; in the COMMON-LISP package like this is undefined, but then if the @@ -79,13 +104,16 @@ (declare (ignore value)) (unless (gethash key standard-ht) (warn "removing non-ANSI export from package CL: ~S" key) - (unexport (intern key cl) cl))) + (munging-cl-package + (unexport (intern key cl) cl)))) host-ht) (maphash (lambda (key value) (declare (ignore value)) (unless (gethash key host-ht) (warn "adding required-by-ANSI export to package CL: ~S" key) - (export (intern key cl) cl)) + (munging-cl-package + (export (intern key cl) cl))) + ;; FIXME: My righteous indignation below was misplaced. ANSI sez ;; (in 11.1.2.1, "The COMMON-LISP Package") that it's OK for ;; COMMON-LISP things to have their home packages elsewhere. @@ -121,8 +149,3 @@ cl) (kernel:%set-symbol-package symbol cl)))) standard-ht)) - -#+(and cmu alpha) -(unless (ignore-errors (read-from-string "1.0l0")) - (error "CMUCL on Alpha can't read floats in the format \"1.0l0\". Patch your core file~%~%")) -