VMake uses a state machine for checking dependences of files. In the beginning of VMake all files are in the initial state unknown and change their state later as shown in Fig. 8.1. All state information is cleared in interactive mode prior to any goal evaluation.
Abbildung 8.1: State transmissions of files
Due to the state information VMake can distinguish between files which require an update action because of newer dependents (state checked) or due to updated dependents (states build, queued, waiting, and ready). Using this state information speeds up the building phase, because fewer modification time stamps are inquired from the file system. The states waiting and wready can only be reached, if the configuration supports dynamic linking and the only update action for generating a program were in a shared library. In this case the program needs not to be relinked, but is marked with the state built to force update on data files depending on the program. If an update action is required, the file enters either the state queued or waiting. It remains in this state until all required subgoals for this file are finished. If any of these goals got an error the file immediately enters the error state else it continues to the ready or wready state respectively. In the ready state it waits for execution of the update commands by the queuing sub-agent and then enters either state built, if the update action completed without error, else it enters the state error. In interactive mode (see 7.1.3) the state of all files is reset to unknown prior to any goal evaluation. The state depend is used during include dependence generation.
Additional states are used by other modes of VMake (see
Chapter 7). These are: