build - A Directory Savvy Replacement for Make
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
Similar Records
UNIX programmer`s environment and configuration control
ROSETTA: the compile-time recognition of object-oriented library abstractions and their use within user applications