Skip to content
Snippets Groups Projects
Commit 6646f910 authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Marginally improved the discussion in "A more involved example" [of defsystem].

parent 7b629476
No related branches found
No related tags found
No related merge requests found
...@@ -736,16 +736,24 @@ slightly convoluted example: ...@@ -736,16 +736,24 @@ slightly convoluted example:
@lisp @lisp
(defsystem "foo" (defsystem "foo"
:version "1.0" :version "1.0"
:components ((:module "foo" :components ((:file "bar") (:file"baz") :components ((:module "mod"
(:file "quux")) :components ((:file "bar")
:perform (compile-op :after (op c) (:file"baz")
(do-something c)) (:file "quux"))
:explain (compile-op :after (op c) :perform (compile-op :after (op c)
(explain-something c))) (do-something c))
(:file "blah"))) :explain (compile-op :after (op c)
(explain-something c)))
(:file "blah")))
@end lisp @end lisp
The method-form tokens need explaining: essentially, this part: The @code{:module} component named @code{"mod"} is a collection of three files,
which will be located in a subdirectory of the main code directory named
@file{mod} (this location can be overridden; see the discussion of the
@code{:pathname} option in @ref{The defsystem grammar}).
The method-form tokens provide a shorthand for defining methods on
particular components. This part
@lisp @lisp
:perform (compile-op :after (op c) :perform (compile-op :after (op c)
...@@ -763,12 +771,25 @@ has the effect of ...@@ -763,12 +771,25 @@ has the effect of
(explain-something c)) (explain-something c))
@end lisp @end lisp
where @code{...} is the component in question; where @code{...} is the component in question.
note that although this also supports @code{:before} methods, In this case @code{...} would expand to something like
they may not do what you want them to ---
a @code{:before} method on perform @code{((op compile-op) (c (eql ...)))} @lisp
will run after all the dependencies and sub-components have been processed, (find-component (find-system "foo") "mod")
but before the component in question has been compiled. @end lisp
For more details on the syntax of such forms, see @ref{The defsystem
grammar}.
For more details on what these methods do, @pxref{Operations} in
@ref{The object model of ASDF}.
@c The following plunge into the weeds is not appropriate in this
@c location. [2010/10/03:rpg]
@c note that although this also supports @code{:before} methods,
@c they may not do what you want them to ---
@c a @code{:before} method on perform @code{((op compile-op) (c (eql ...)))}
@c will run after all the dependencies and sub-components have been processed,
@c but before the component in question has been compiled.
@node The defsystem grammar, Other code in .asd files, A more involved example, Defining systems with defsystem @node The defsystem grammar, Other code in .asd files, A more involved example, Defining systems with defsystem
@comment node-name, next, previous, up @comment node-name, next, previous, up
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment