A Tool for Maintaining Software-Build Dependencies

The process of building an executable file from a large number of source files can be very costly, sometimes requiring hours of computing time. An incremental-build tool recognizes when a source file does not need to be retranslated, because an existing object file is sufficient. Typically, this decision is made by a software-maintenance tool like Make, which bases its decision on the following information: (1) a representation of the dependencies between files, which arise due to file inclusion and file translation (2) an operating system's timestamp data, which is maintained for each file.

This research paper proposes a method and a software-maintenance tool that combines file-oriented dependencies with finer-grained dependencies; the latter are those between a preprocessor-macro's definition and files that refer to its name.

The benefit of performing incremental builds according to file dependencies and macro dependencies is simple to state, and it applies to many software-development environments: The combination prevents unnecessary retranslation, thereby conserving computing resources.