The operation of VMake is controlled by a set of rules for each module of a project. A rule definition consists of an identifier which determines the type of rule, a symbolicName, and several keys. A rule definition specifies an object with the symbolicName as unique identifier. These objects can be referenced by other rule definitions using their symbolicNames usually as key values.
For rule definitions a LISP-like syntax was chosen. This decision was decisively influenced by two factors: firstly, the reader of the Vienna LISP interpreter (VLisp) can be used for parsing rule definitions and secondly, the built-in functionality of VLisp sustains processing rules to a great extent.
The syntax of rule definitions is the following:
The following types exist for keys:
5mm
The following notation is used for the description of rule definitions:
5mm
Basically, two different types of rules can be distinguished. The first
group of rules is used for specifying entire projects (project
definition rules). They control the version of the project and define
dependences to other projects. Furthermore, links to external sources, e.g.,
sources not controlled by VMake, can be specified. Sources, which contain
definitions of new additional rules to extend VMake-functionality with
regard to special requirements are also included by project related rules.
The second group of rules handles module specifications. They operate on sources and objects for a certain module (module definition rules). These rules determine grouping of sources, control the compilation processes, and are responsible for automatic code generating and program execution.
To further improve the flexibility of VMake, different configurations of projects can be maintained in parallel. This configuration handling includes the support of different operating systems. VMake provides conditional forms to define key values according to the requirements of a certain configuration. Furthermore, as mentioned above, additional rules can be defined which allows for easily linking new tools.