(declare (ignorable o c))
nil)
+(defclass precompiled-system (system)
+ ((fasl :initarg :fasl :reader %system-fasl)))
+
+(defgeneric system-fasl (system)
+ (:method ((system precompiled-system))
+ (let* ((f (%system-fasl system))
+ (p (etypecase f
+ ((or pathname string) f)
+ (function (funcall f))
+ (cons (eval f)))))
+ (pathname p))))
+
+(defmethod input-files ((o load-op) (s precompiled-system))
+ (declare (ignorable o))
+ (list (system-fasl s)))
+
+(defmethod perform ((o load-op) (s precompiled-system))
+ (declare (ignorable o))
+ (load (system-fasl s)))
+
+#| ;; Example use:
+(asdf:defsystem :precompiled-asdf-utils :class asdf::precompiled-system :fasl (asdf:apply-output-translations (asdf:system-relative-pathname :asdf-utils "asdf-utils.system.fasl")))
+(asdf:load-system :precompiled-asdf-utils)
+|#
+
#+ecl
(defmethod output-files ((o fasl-op) (c system))
(declare (ignorable o c))
;;; Final integration steps
;;;
-(export '(load-fasl-op #+ecl make-build #+mkcl bundle-system))
+(export '(load-fasl-op precompiled-system
+ #+ecl make-build #+mkcl bundle-system))
#+(or ecl mkcl)
(pushnew '("fasb" . si::load-binary) si:*load-hooks* :test 'equal :key 'car)