next up previous contents
Next: 4.4 Defining New Rules Up: 1 Standard Make Utilities Previous: 1.3 Imake

1.4 Jam

 

Jam[Sei94] was developed as a replacement of make and uses a more complex language to describe dependences. In addition all Jam description files are scanned only once per invocation and so all information is available for checking. This allows more complex and larger projects to be handled. The syntax of Jam is defined in a special definition file Jambase[Sei93]. Jam uses the folling syntax in description files


block870

The ``;'' is required since rules under Jam are not implicitly terminated with the end of line and may be written on multiple lines. The targets used by the rule may be a list of filenames. The same is true for sources. No explicit update actions are possible because they are implied by the rule. This is controversy to make. The list of known rules implemented in Jam are shown in Table 1.1 with their specific actions.

  table880
Tabelle 1.1: Known Rules by Jam

In addition to the rules Jam allows to add information to any file, e.g., special compilation flags and additional dependences. The small example from make (see Figure 1.1) translates to the Jam description file shown in Figure 1.4.

  figure926
Abbildung 1.4: Simple Jambase for Jam

All filenames in Jam rules are system specific. They can be created by macros (similar to make). No explicit dependences to include files are stored in the description files since these are recreated on every invocation of Jam. The same description file can be used under UNIX, VMS and WindowsNT because file extensions are handled internally by Jam. The big advantage of Jam is that the description files are very short and can be easily maintained. Since all description files are read completly before any action, there are no problems with files spread over different directories. This may lead to problems if the same file name is used more than once in different directories since many rules implicitly search for their input by file name without path information within the full project. There are no unique identifiers for files with identical names.

Jam is currently not able to build shared libraries with the default set of rules. Building shared libraries is a very complex job and differs even between different UNIX systems. Another disadvantage of Jam is that on every invocation all include file dependences are regenerated even if there was no change since the last run. This slows down the current build process significantly if only a few files are modified due to the overhead.




next up previous contents
Next: 4.4 Defining New Rules Up: 1 Standard Make Utilities Previous: 1.3 Imake

IUE WWW server
Fri Jan 3 17:00:13 MET 1997