footer.lisp 2.73 KB
Newer Older
1 2 3
;;;; -----------------------------------------------------------------------
;;;; ASDF Footer: last words and cleanup

4 5
(asdf/package:define-package :asdf/footer
  (:recycle :asdf/footer :asdf)
6
  (:use :common-lisp :asdf/driver :asdf/upgrade
7 8
   :asdf/find-system :asdf/find-component :asdf/operation :asdf/action :asdf/lisp-action
   :asdf/operate :asdf/bundle :asdf/concatenate-source
9
   :asdf/output-translations :asdf/source-registry
10
   :asdf/backward-internals :asdf/defsystem :asdf/backward-interface))
11 12
(in-package :asdf/footer)

13 14
;;;; Configure
(setf asdf/utility:*asdf-debug-utility*
15
      '(asdf/system:system-relative-pathname :asdf "contrib/debug.lisp"))
16

17 18 19
;;;; Hook ASDF into the implementation's REQUIRE and other entry points.

#+(or abcl clisp clozure cmu ecl mkcl sbcl)
20
(let ((x (and #+clisp (find-symbol* '#:*module-provider-functions* :custom nil))))
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
  (when x
    (eval `(pushnew 'module-provide-asdf
            #+abcl sys::*module-provider-functions*
            #+clisp ,x
            #+clozure ccl:*module-provider-functions*
            #+(or cmu ecl) ext:*module-provider-functions*
            #+mkcl mk-ext:*module-provider-functions*
            #+sbcl sb-ext:*module-provider-functions*))))

#+(or ecl mkcl)
(progn
  (pushnew '("fasb" . si::load-binary) si:*load-hooks* :test 'equal :key 'car)

  #+(or (and ecl win32) (and mkcl windows))
  (unless (assoc "asd" #+ecl ext:*load-hooks* #+mkcl si::*load-hooks* :test 'equal)
    (appendf #+ecl ext:*load-hooks* #+mkcl si::*load-hooks* '(("asd" . si::load-source))))

  (setf #+ecl ext:*module-provider-functions* #+mkcl mk-ext::*module-provider-functions*
        (loop :for f :in #+ecl ext:*module-provider-functions*
          #+mkcl mk-ext::*module-provider-functions*
          :unless (eq f 'module-provide-asdf)
          :collect #'(lambda (name)
                       (let ((l (multiple-value-list (funcall f name))))
                         (and (first l) (register-pre-built-system (coerce-name name)))
                         (values-list l))))))


;;;; Cleanups after hot-upgrade.
;; Things to do in case we're upgrading from a previous version of ASDF.
;; See https://bugs.launchpad.net/asdf/+bug/485687
;;
;; If a previous version of ASDF failed to read some configuration, try again.
(when *ignored-configuration-form*
  (clear-configuration)
  (setf *ignored-configuration-form* nil))

;;;; Done!

#+allegro
(eval-when (:compile-toplevel :execute)
  (when (boundp 'excl:*warn-on-nested-reader-conditionals*)
62
    (setf excl:*warn-on-nested-reader-conditionals* asdf/compatibility::*acl-warn-save*)))
63 64 65 66 67 68 69 70

(dolist (f '(:asdf :asdf2 :asdf2.27)) (pushnew f *features*))

(provide :asdf)

(when *load-verbose*
  (asdf-message ";; ASDF, version ~a~%" (asdf-version)))

71

72 73 74
;;; Local Variables:
;;; mode: lisp
;;; End: