![]() | ![]() | ![]() | define-module | ![]() |
|
| [Macro] |
Purpose
Defines a module to the Module Manager Facility.
Package :module-manager
Module :module-manager
Arguments and values
| module-name | A keyword symbol naming a module | |
| module-options | See below |
Errors
The :requires module option specifies a fully expanded
required-module order that contains a circularity.
The :requires module option specifies a fully expanded
required-module order that conflicts with the fully expanded
required-module order in a previously defined module.
Detailed syntax
|
| (:requires module-name*) | |
(:directory directory-specifier) | | |
(:files file-specifier*) | | |
(:patches file-specifier*) | |
|
| root-or-relative-directory subdirectory* |
|
| file-name | |
(file-name file-option*) | |
|
| :recompile |
:reload | :source |
:forces-recompile | :noload |
Terms
| root-or-relative-directory | A keyword naming a root or
relative directory, a keyword naming another module,
or nil, indicating that the module is rooted at the
*load-truename* | |
| subdirectory | A string naming a subdirectory | |
| file-name | A string naming a file | |
| module-name | A keyword symbol naming a module |
Description
The module-options :requires:directory:files, and :patches can be specified
in any order, but at most one of each is allowed.
If a :directory module option is not specified, an implicit root
directory for the module (at the *load-truename*:directory
The :requires module option specifies, in order, the modules
that must be loaded before this module. The fully expanded
required-module order determined from the specified
:requires
The :files module option specifies, in order, the files that are
compiled (when appropriate) and loaded for this module. Similarly,
the :patches:requires:files, and :patchespatches
File-options have the following effects:
:developing | If the patch file has changed, recompile and reload it (patch files only) |
:forces-recompile | If the file has changed, recompile and reload all subsequent files and modules |
:noload | Compile, but do not load the file |
:recompile | Always recompile the file |
:reload | Always reload the file |
:skip-recompile | Skip recompiling the file if it has been loaded already |
| (takes precedence over other recompilation decisions) | |
:source | Do not compile the file (load the source instead) |
See also
define-relative-directory
define-root-directory
describe-module
describe-patches
compile-module
continue-patch
get-patch-description
finish-patch
load-module
load-module-file
patch
patch-loaded-p
start-patch
with-system-name
with-module-redefinitions
Examples
Define a root directory and module for :my-app
(define-root-directory :my-app-root
(make-pathname :directory "~/my-app"))
(define-module :my-app
(:requires :gbbopen-user)
(:directory :my-app-root)
(:files "preamble"
("macros" :forces-recompile)
"classes"
"my-app"
"epilogue"))
Define a module for :my-app
(define-module :my-app
(:requires :gbbopen-user)
(:files "preamble"
("macros" :forces-recompile)
"classes"
"my-app"
"epilogue"))
Add two patch files to the :my-app
(define-module :my-app
(:requires :gbbopen-user)
(:files "preamble"
("macros" :forces-recompile)
"classes"
"my-app"
"epilogue")
(:patches "my-app-p001"
"my-app-p002"))
The GBBopen Project
![]() | ![]() | ![]() | define-module | ![]() |