asdf.asd 5.15 KB
Newer Older
1 2 3 4 5
;;; -*- mode: lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                                                                  ;;;
;;; Free Software available under an MIT-style license.              ;;;
;;;                                                                  ;;;
6
;;; Copyright (c) 2001-2019 Daniel Barlow and contributors           ;;;
7 8 9
;;;                                                                  ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

10 11
(in-package :asdf)

12 13 14 15 16 17 18 19 20 21 22 23
;; We can't rely on it being defined in uiop.asd, since that file isn't loaded.
(defun call-without-redefinition-warnings (thunk)
  (handler-bind (((or
                   #+allegro simple-warning
                   #+clozure ccl:compiler-warning
                   #+cmucl kernel:simple-style-warning
                   #-(or allegro clozure cmucl) warning)
                   #'muffle-warning))
    (funcall thunk)))

;; Note that it's polite to sort the defsystem forms in dependency order,
;; and compulsory to sort them in defsystem-depends-on order.
24
#+asdf3
25
(defsystem "asdf/prelude"
26
  :version (:read-file-form "version.lisp-expr")
27
  :around-compile call-without-redefinition-warnings ;; we need be the same as uiop
28
  :encoding :utf-8
29
  :components ((:file "header")))
30

31
#+asdf3
32
(defsystem "asdf/driver"
33 34 35 36
  ;; Since ASDF 3.3, asdf.asd can't afford to depend on reading uiop.asd,
  ;; which would cause circularity, since everything depends on reading asdf.asd.
  ;; Therefore, we can't "just" :depends-on ("uiop") like we used to do, and instead
  ;; we transclude the list of uiop component into this secondary system.
37 38 39
  :pathname "uiop"
  :around-compile call-without-redefinition-warnings ;; we need be the same as uiop
  :components #.(getf (read-file-form (subpathname *load-pathname* "uiop/uiop.asd") :at 2) :components))
40

41
#+asdf3
42
(defsystem "asdf/defsystem"
43
  :licence "MIT"
44
  :description "The defsystem part of ASDF"
45 46
  :long-name "Another System Definition Facility"
  :description "The portable defsystem for Common Lisp"
47
  :long-description "ASDF/DEFSYSTEM is the de facto standard DEFSYSTEM facility for Common Lisp,
48
   a successor to Dan Barlow's ASDF and Francois-Rene Rideau's ASDF2.
49
   For bootstrap purposes, it comes bundled with UIOP in a single file, asdf.lisp."
50 51 52
  :homepage "http://common-lisp.net/projects/asdf/"
  :bug-tracker "https://launchpad.net/asdf/"
  :mailto "asdf-devel@common-lisp.net"
53
  :source-control (:git "git://common-lisp.net/projects/asdf/asdf.git")
54
  :version (:read-file-form "version.lisp-expr")
55
  :build-operation monolithic-concatenate-source-op
56
  :build-pathname "build/asdf" ;; our target
57
  :around-compile call-without-redefinition-warnings ;; we need be the same as uiop
58
  :depends-on ("asdf/prelude" "asdf/driver")
59
  :encoding :utf-8
60 61
  :components
  ((:file "upgrade")
62
   (:file "session" :depends-on ("upgrade"))
63 64
   (:file "component" :depends-on ("session"))
   (:file "operation" :depends-on ("session"))
65
   (:file "system" :depends-on ("component"))
66
   (:file "system-registry" :depends-on ("system"))
67
   (:file "action" :depends-on ("session" "system" "operation"))
68 69
   (:file "lisp-action" :depends-on ("action"))
   (:file "find-component" :depends-on ("component"))
70 71
   (:file "forcing" :depends-on ("operation" "system-registry"))
   (:file "plan" :depends-on ("lisp-action" "find-component" "forcing"))
72
   (:file "operate" :depends-on ("plan"))
73
   (:file "find-system" :depends-on ("system-registry" "operate"))
74 75
   (:file "parse-defsystem" :depends-on ("system-registry" "lisp-action" "operate"
                                                           "find-system"))
76 77
   (:file "bundle" :depends-on ("lisp-action" "parse-defsystem"))
   (:file "concatenate-source" :depends-on ("bundle"))
78
   (:file "package-inferred-system" :depends-on ("parse-defsystem"))
79 80 81
   (:file "output-translations" :depends-on ("operate"))
   (:file "source-registry" :depends-on ("find-system"))
   (:file "backward-internals" :depends-on ("find-system" "parse-defsystem"))
82
   (:file "backward-interface" :depends-on ("output-translations"))
83
   (:file "interface" :depends-on
84
          ("parse-defsystem" "concatenate-source"
85 86
           "output-translations" "source-registry" "package-inferred-system"
           "backward-interface" "backward-internals"))
87 88
   (:file "user" :depends-on ("interface"))
   (:file "footer" :depends-on ("user"))))
89

90
(defsystem "asdf"
91
  :author ("Daniel Barlow")
92
  :maintainer ("Robert Goldman")
93 94 95
  :licence "MIT"
  :description "Another System Definition Facility"
  :long-description "ASDF builds Common Lisp software organized into defined systems."
Robert Goldman's avatar
Robert Goldman committed
96
  :version "3.3.3.3" ;; to be automatically updated by make bump-version
97
  :depends-on ()
98
  :components ((:module "build" :components ((:file "asdf"))))
99 100 101 102 103 104 105 106
  . #-asdf3 () #+asdf3
  (:encoding :utf-8
   :class #+asdf3.1 package-inferred-system #-asdf3.1 system
   ;; For most purposes, asdf itself specially counts as a builtin system.
   ;; If you want to link it or do something forbidden to builtin systems,
   ;; specify separate dependencies on uiop (aka asdf/driver) and asdf/defsystem.
   :builtin-system-p t
   :in-order-to ((prepare-op (monolithic-concatenate-source-op "asdf/defsystem")))))