-;;;; 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
;;;; 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.
+\f
+;;;; CLISP issues
#+clisp
(locally
(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)))
+\f
+;;;; 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
(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~%~%"))
+\f
+;;;; 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
(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.
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~%~%"))
-