Sun WorkShop TeamWare 2.1 User's Guide

Building Targets Concurrently

Large software projects typically consist of multiple independent modules that can be built concurrently. The dmake utility supports concurrent processing of targets on multiple machines over a network. This concurrency can markedly reduce the time required to build a large project.

When given a target to build, dmake checks the dependencies associated with that target, and builds those that are out of date. Building those dependencies may, in turn, entail building some of their dependencies. When distributing jobs, dmake starts every target that it can. As these targets complete, dmake starts other targets. Nested invocations of dmake are not run concurrently by default, but this can be changed (see "Restricting Parallelism " for more information).

Since dmake builds multiple targets concurrently, the output of each build is produced simultaneously. To avoid intermixing the output of various commands, dmake collects output from each build separately. The dmake utility displays the commands before they are executed. If an executed command generates any output, warnings, or errors, dmake displays the entire output for that command. Since commands started later may finish earlier, this output may be displayed in an unexpected order.