The setup file contains static data about the program. It consists of three sections:
The source and object file dependence information is similar to that found in the ``makefiles'' used by the utility make. It is used by the Compiler module of the continuous compiler in the same way such information is used by a traditional compiler: to determine if some files must be compiled before others and to determine which files need recompilation after another file has been edited.
The function
file mapping allows the continuous compiler
to know what new functions are available in native code after a file
has been compiled. It is also used to help determine which file to
compile next in some of the compilation strategies defined in
Section 3.2. The information is identical to
that produced by the ctags utility.
The file sizes and compilation times are used by our simulator both to simulate compilation and to implement the smallest-first and largest-first compilation strategies.
Our simulator implements the following five compilation strategies intrinsically: smallest-first, largest-first, random, most-frequently-executed-so-far, and longest-so-far. However, it is also possible to specify any desired compilation order by providing an ordered list of source files to the simulator as part of the setup. The most-frequently-executed-overall and longest-overall strategies were implemented in this manner.
Figure 4.2 shows a small sample setup file. The section
under the ``MakeStuff'' heading specifies the file dependencies in
exactly the same format as that used by the make utility. The
``CtagStuff'' section lists all of the functions defined in the source
files along with the file in which each function is defined. The
``CompileStuff'' section lists all of the source files along with the
number of lines in each file and the time, in milliseconds, required
to compile the file.
Figure 4.3: Sample Behavior File