("utils" :both)
("list" :target)
("string" :target)
+ ("sequence" :target)
("print" :target)
("package" :target)
("ffi" :target)
+ ("misc" :target)
("read" :both)
("defstruct" :both)
("lambda-list" :both)
(make-pathname :type type :directory directory :defaults defaults)
(make-pathname :directory directory :defaults defaults)))
-;;; BOOTSTRAP MAGIC: We record the macro definitions as lists during
-;;; the bootstrap. Once everything is compiled, we want to dump the
-;;; whole global environment to the output file to reproduce it in the
-;;; run-time. However, the environment must contain expander functions
-;;; rather than lists. We do not know how to dump function objects
-;;; itself, so we mark the list definitions with this object and the
-;;; compiler will be called when this object has to be dumped.
-;;; Backquote/unquote does a similar magic, but this use is exclusive.
-;;;
-;;; Indeed, perhaps to compile the object other macros need to be
-;;; evaluated. For this reason we define a valid macro-function for
-;;; this symbol.
-(defvar *magic-unquote-marker* (gensym "MAGIC-UNQUOTE"))
-(setf (macro-function *magic-unquote-marker*)
- (lambda (form env)
- (declare (ignore env))
- (second form)))
-
;;; Compile jscl into the host
(with-compilation-unit ()
(dolist (input *source*)
(defun bootstrap ()
- (let ((*package* (find-package "JSCL")))
+ (let ((*features* (cons :jscl *features*))
+ (*package* (find-package "JSCL")))
(setq *environment* (make-lexenv))
(setq *literal-table* nil)
(setq *variable-counter* 0