X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcold%2Fshared.lisp;h=5f86752620730c51836e54beb9b4890e6bd86cc3;hb=fea8ea02847ddc0864546a02480fb3e97d6fa318;hp=653d0c48c4d275be5b7908852838a8657426f821;hpb=148e3820ad314a9b59d0133c1d60eaac4af9118b;p=sbcl.git diff --git a/src/cold/shared.lisp b/src/cold/shared.lisp index 653d0c4..5f86752 100644 --- a/src/cold/shared.lisp +++ b/src/cold/shared.lisp @@ -23,6 +23,17 @@ (in-package "SB-COLD") +;;; FIXME: This is embarassing -- SBCL violates SBCL style-package +;;; locks on the host lisp. Rather then find and fix all the cases +;;; right now, let's just remain self-hosting. The problems at least +;;; involve a few defvars and local macros with names in the CL +;;; package. +#+sbcl +(let ((plp (find-symbol PACKAGE-LOCKED-P :sb-ext))) + (when (and plp (fboundp plp)) + (dolist (p (list-all-packages)) + (sb-ext::unlock-package p)))) + ;;; prefixes for filename stems when cross-compiling. These are quite arbitrary ;;; (although of course they shouldn't collide with anything we don't want to ;;; write over). In particular, they can be either relative path names (e.g. @@ -46,7 +57,8 @@ ;; that we never explicitly refer to host object file suffixes, ;; only to the result of CL:COMPILE-FILE-PATHNAME. #+lispworks ".ufsl" ; as per Lieven Marchand sbcl-devel 2002-02-01 - #+openmcl ".pfsl" + #+(and openmcl (not darwin)) ".pfsl" + #+(and openmcl darwin) ".dfsl" ;; On most xc hosts, any old extension works, so we use an ;; arbitrary one. ".lisp-obj")) @@ -286,10 +298,13 @@ (defparameter *expected-stem-flags* '(;; meaning: This file is not to be compiled when building the - ;; cross-compiler which runs on the host ANSI Lisp. + ;; cross-compiler which runs on the host ANSI Lisp. ("not host + ;; code", i.e. does not execute on host -- but may still be + ;; cross-compiled by the host, so that it executes on the target) :not-host ;; meaning: This file is not to be compiled as part of the target - ;; SBCL. + ;; SBCL. ("not target code" -- but still presumably host code, + ;; used to support the cross-compilation process) :not-target ;; meaning: This file is to be processed with the SBCL assembler, ;; not COMPILE-FILE. (Note that this doesn't make sense unless @@ -308,7 +323,7 @@ (defparameter *stems-and-flags* (read-from-file "build-order.lisp-expr")) (defmacro do-stems-and-flags ((stem flags) &body body) - (let ((stem-and-flags (gensym "STEM-AND-FLAGS-"))) + (let ((stem-and-flags (gensym "STEM-AND-FLAGS"))) `(dolist (,stem-and-flags *stems-and-flags*) (let ((,stem (first ,stem-and-flags)) (,flags (rest ,stem-and-flags)))