VMake knows all dependences between files and has full access to the underlying system. All update actions are asynchronous in sub-processes or batch jobs in parallel to its own execution. Multiple jobs may be submitted at the same time by using the queuing sub-agent of VMake. The queued update actions in the state ready (see Fig. 8.1) are checked if any hosts are batch queue is free to execute the job. On termination of a job all files in the state queued and wready are checked if the can be changed to ready because of all of their dependent files are built. The standard output and the error messages of each job are displayed after the job finished. The error messages are additionally copied to the file specified by the command line option errorOutput for later analyzing. The parallel execution mode and the asynchronous behavior of the update actions can be turned of with the command line option vsync.
Parallelizing the build process can lower the time to rebuild a large scale software significantly. A simple definition file for parallel execution on a workstation cluster is shown in Listing 8.1. This example shows definitions for two different configurations using the configuration key of the defhost (see defhost) and defqueue (see defqueue).
In this example the same definition file vmake.cf can used under UNIX
and VMS by specifying the configuration for the definitions. This file
resides in the root directory of all projects defined by the environment
variable VPROJECT or in the home directory of the user. Only the first
matching definition for a host or batch queue is used. In
Listing 8.1 this means if VMake is executed on the UNIX host
``host1'', two priority jobs are allowed on this host (first definition) and
the second definition is ignored. The rules allowed in configuration
file are shown in defhost, defqueue and
defversion (defversion).
These two are used to define the usable hosts and batch queues for parallel
execution of jobs. The defversion is used to define a default
build version for a configuration which can be overridden in any project
definition file vmake.prj (see Section 4.1.1). The name for
the key configuration is a configuration, either a predefined one
(see Section 5.1) or a user defined one (see Appendix E).
The value of host and queue are the host names for execution
or the name of a batch queue. The key priority may be specified for
hosts to execute update actions at standard interactive priority. The
default is to lower the priority of jobs submitted by VMake to reduce the
impact on the interactive performance of the computer. The value of the key
jobs sets the maximum number of jobs allowed to be