Macro
defsystem is used to define systems for use with the LispWorks system tools. A system is a collection of files and other systems that, together with rules expressing the interdependencies of those files and subsystems, make a complete program. The LispWorks system tools support the development and maintenance of large programs. lispworks
defsystem system-name options &key members rules => system
The name of the system to be made.
:package The default package that files are compiled and loaded into. If not specified this defaults to theUSER package.
:default-pathname The default pathname in which to find files.defsystem checks that all the files given as members actually exist.
:default-host The root pathname of a system is defined to be the:default-host if it is given. Otherwise, it is taken to be the directory containing the defsystem file.
Absolute pathnames are interpreted literally, and relative pathnames are taken relative to the root pathname.
Note that you no longer need to use*load-truename* as the default pathname.
:default-type This is the default type of the members of the system. This may be:lisp-file,:c-file, or:system. The default is :lisp-file.
:documentationThis is a string.
(name {keywordvalue}*) where name is once again a symbol or a string referring to the physical file, and the possible keywords are: :type The type of this member. If not specified it defaults to the value of:default-type given as an option
:root-module Ifnil then this member is not loaded unless its loading is specifically requested as a result of a dependency on another module
:source-onlyOnly the source file for this member is ever loaded
:load-only The member is never compiled bydefsystem, objects are loaded in preference to source files
:load-for-compile-only The member is only loaded as necessary during compilation and is never loaded independently
:featuresThe member is only considered during planning if the feature expression is true
(:in-order-to action {:all | ({ member-name }* })
(:caused-by {(action {:previous |{member-name }* }) }*)
(:requires {(action {:previous |{ member-name }*}) }*))
:all refers to all the members of the system. It provides a shorthand for specifying that a rule should apply to all the system's members. The keyword:previous refers to all the members of the system that are before the member in the list of members. This makes it easy, for example, to specify that in order to compile a file in a system, all the members that come before it must be loaded.
(hcl:defsystem defsys-macros
(:default-pathname "/usr/users/james/scm/defsys/"
:default-type :lisp-file
:package defsystem)
:members ("new-macros"
"scm-timemacros"))
(hcl:defsystem clos-sys
(:default-pathname "/usr/users/clc/defsys/"
:default-type :lisp-file
:package defsystem)
:members
(("defsys-macros" :type :system :root-module nil)
"class"
"time-methods"
("scm-pathname" :source-only t)
"execute-plan"
"file-types"
"make-system"
"conv-defsys")
:rules
((:in-order-to :compile ("class" "time-methods")
(:caused-by (:compile "defsys-macros"))
(:requires
(:load "defsys-macros")))
(:in-order-to :compile
("time-methods" "execute-plan")
(:requires (:load "class")))))
(hcl:defsystem dataworks-demo
(:default-pathname
(directory-namestring system::*load-pathname*)
:default-type :system)
:members (
"db-class"
"planar"
"dataworks-dep"
"dataworks-interface-tk"
"dataworks-interface-tools"
"drugs-demo"
("gen-demo" :type :lisp-file)
("load-icon" :type :lisp-file :source-only t)
)
:rules ((:in-order-to :compile :all
(:requires (:load :previous)))))
load-systemcompile-system