QEF home page
25. The QEF Architecture

This page overviews the architecture of a QEF process.

Table of Contents
Previous Page
Next Page

QEF is primarily a driver of other processes. Rather than attempting to solve all the problems using a monolithic program, QEF provides facilities and structures to select, configure and control other processes. As will be seen, this approach provides flexibility in configuring the construction process, while ensuring that there is a single universal interface. QEF's processing is roughly divided into three stages:
  1. construction of the build parameters/configuration database
  2. script preparation
  3. back-end processing

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 QEF home page Table of Contents Previous Page Next Page