This page overviews the architecture of a QEF process.
1. The Parameter/ Configuration Database Construction
The first stage invokes a program called qvrs, which prepares a
database of the build parameters and configuration information for use
by other programs. The information is represented in a hierarchical
database at the top of the current tree and distributed through the
source tree. Configuration files at a particular level of the tree
apply to all sublevels of the tree. This parallels the lexical
scoping used in programming languages -- configuration information is
only visible where it is required.
qvrs finds and processes the relevant files for the current directory and outputs a binary file that can be directly loaded by other programs to retrieve the various parameters, options and controls provided via the qvrs files. Parameters are used to specify search paths, process controls, build options, the names of special files and directories, tool names and flags, and so on. In this and other documents the convention used to specify the use of a qvrs variable's value is either @Variable or @Array[value], "@" being the qvrs precursor variable escape.
2. Script Preparation
The major purpose of the script preparation stage is to transform an
as simple as possible specification of the processing to be done, into
the back-end command to be run and the input to that command. This
transformation can range from the naming of a back-end process and its
input file via qvrs parameters, to the more common three-stage
process of the creation of a list of source files using sls,
script generation using the source list as arguments or input,
and the macro processing of the generated script.
Practically any command may serve as a
script generator, but two programs, qsg and qefdirs,
are used most of the time.
qefdirs was briefly introduced in
A Multi-Directory Application.
qsg is described in the next page.
3. Back-End Interpretation
The third stage is the back-end which usually does the real work. In
most instances, this will be a shell or make-like program. Some
back-ends that are specifically designed for use by qef are discussed
in later sections. The actual back-end to be run is specified by
qvrs variable or a preprocessor symbol.
The most commonly used QEF back ends are mimk,
a make like program, and qsh a shell command interpreter
with special features to serve as a QEF back end.
A fuller description of the QEF architecture can be found in the paper An Architecture for a Construction System.
|cook70.qh - 1.12 - 03/10/16|