skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: build - A Directory Savvy Replacement for Make

Conference ·
OSTI ID:15014500

All but the most trivial software packages are generally constructed from multiple source files with many steps being required to generate lexer and parser source files, compile the numerous source files, assemble libraries from object files, and link object files and libraries to form the binary executable application. During the development process, the construction process may be repeated many times as source code is modified requiring the application to be rebuilt. To address this problem the original make tool was developed. However this tool was developed when applications were rather simple with a limited number of source files in single directories. Few header files outside of the standard system header files were used. The graph formed by the file-to-file dependencies was generally simple with little cross branching and limited depth. The increased complexity of modern software systems has made the traditional make tool less capable of managing the problem. Good software development practices have led to more and more source files arranged in directory hierarchies. Modular development of the software has resulted in the proliferation of developer implemented header files and libraries that are part of the application. Code reuse and object oriented design has made the problem even worse by hiding the necessity to recompile source files. In short, the dependency graph has become much more complex, less a tree and more lattice-like. Keeping track of these dependencies rapidly becomes difficult with the increasing complexity of the software. In addition the shear volume of source code has increased the need to avoid unnecessary compiles or relinks. The increased number of source files to be compiled has also increased the opportunity for parallelism but the increased complexity of the directory hierarchy and file-file dependencies has at the same time made it harder to exploit parallelism. This paper gives a brief introduction to build - an improved implementation of make. A number of common issues are presented that contrast how build and make are used. In addition a number of new features provided by build are described. This presentation is by no means a complete description of build; a separate document is available that serves as a reference and user's guide.

Research Organization:
Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Sponsoring Organization:
USDOE
DOE Contract Number:
W-7405-ENG-48
OSTI ID:
15014500
Report Number(s):
UCRL-CONF-209020; TRN: US200802%%1254
Resource Relation:
Conference: Presented at: NECDC 2004, Livermore, CA, United States, Oct 04 - Oct 07, 2004
Country of Publication:
United States
Language:
English