|
|
|
Copyright
|
|
|
|
Foreword
|
|
|
|
Dedication
|
|
|
|
Preface
|
|
|
|
|
The Road to the Third Edition
|
|
|
|
|
What's New in This Edition
|
|
|
|
|
Conventions Used in This Book
|
|
|
|
|
Using Code Examples
|
|
|
|
|
Comments and Questions
|
|
|
|
|
Acknowledgments
|
|
|
|
Part I: Basic Concepts
|
|
|
|
|
Chapter 1. How to Write a Simple Makefile
|
|
|
|
|
Section 1.1. Targets and Prerequisites
|
|
|
|
|
Section 1.2. Dependency Checking
|
|
|
|
|
Section 1.3. Minimizing Rebuilds
|
|
|
|
|
Section 1.4. Invoking make
|
|
|
|
|
Section 1.5. Basic Makefile Syntax
|
|
|
|
|
Chapter 2. Rules
|
|
|
|
|
Section 2.1. Explicit Rules
|
|
|
|
|
Section 2.2. Variables
|
|
|
|
|
Section 2.3. Finding Files with VPATH and vpath
|
|
|
|
|
Section 2.4. Pattern Rules
|
|
|
|
|
Section 2.5. The Implicit Rules Database
|
|
|
|
|
Section 2.6. Special Targets
|
|
|
|
|
Section 2.7. Automatic Dependency Generation
|
|
|
|
|
Section 2.8. Managing Libraries
|
|
|
|
|
Chapter 3. Variables and Macros
|
|
|
|
|
Section 3.1. What Variables Are Used For
|
|
|
|
|
Section 3.2. Variable Types
|
|
|
|
|
Section 3.3. Macros
|
|
|
|
|
Section 3.4. When Variables Are Expanded
|
|
|
|
|
Section 3.5. Target- and Pattern-Specific Variables
|
|
|
|
|
Section 3.6. Where Variables Come From
|
|
|
|
|
Section 3.7. Conditional and include Processing
|
|
|
|
|
Section 3.8. Standard make Variables
|
|
|
|
|
Chapter 4. Functions
|
|
|
|
|
Section 4.1. User-Defined Functions
|
|
|
|
|
Section 4.2. Built-in Functions
|
|
|
|
|
Section 4.3. Advanced User-Defined Functions
|
|
|
|
|
Chapter 5. Commands
|
|
|
|
|
Section 5.1. Parsing Commands
|
|
|
|
|
Section 5.2. Which Shell to Use
|
|
|
|
|
Section 5.3. Empty Commands
|
|
|
|
|
Section 5.4. Command Environment
|
|
|
|
|
Section 5.5. Evaluating Commands
|
|
|
|
|
Section 5.6. Command-Line Limits
|
|
|
|
Part II: Advanced and Specialized Topics
|
|
|
|
|
Chapter 6. Managing Large Projects
|
|
|
|
|
Section 6.1. Recursive make
|
|
|
|
|
Section 6.2. Nonrecursive make
|
|
|
|
|
Section 6.3. Components of Large Systems
|
|
|
|
|
Section 6.4. Filesystem Layout
|
|
|
|
|
Section 6.5. Automating Builds and Testing
|
|
|
|
|
Chapter 7. Portable Makefiles
|
|
|
|
|
Section 7.1. Portability Issues
|
|
|
|
|
Section 7.2. Cygwin
|
|
|
|
|
Section 7.3. Managing Programs and Files
|
|
|
|
|
Section 7.4. Working with Nonportable Tools
|
|
|
|
|
Section 7.5. Automake
|
|
|
|
|
Chapter 8. C and C++
|
|
|
|
|
Section 8.1. Separating Source and Binary
|
|
|
|
|
Section 8.2. Read-Only Source
|
|
|
|
|
Section 8.3. Dependency Generation
|
|
|
|
|
Section 8.4. Supporting Multiple Binary Trees
|
|
|
|
|
Section 8.5. Partial Source Trees
|
|
|
|
|
Section 8.6. Reference Builds, Libraries, and Installers
|
|
|
|
|
Chapter 9. Java
|
|
|
|
|
Section 9.1. Alternatives to make
|
|
|
|
|
Section 9.2. A Generic Java Makefile
|
|
|
|
|
Section 9.3. Compiling Java
|
|
|
|
|
Section 9.4. Managing Jars
|
|
|
|
|
Section 9.5. Reference Trees and Third-Party Jars
|
|
|
|
|
Section 9.6. Enterprise JavaBeans
|
|
|
|
|
Chapter 10. Improving the Performance of make
|
|
|
|
|
Section 10.1. Benchmarking
|
|
|
|
|
Section 10.2. Identifying and Handling Bottlenecks
|
|
|
|
|
Section 10.3. Parallel make
|
|
|
|
|
Section 10.4. Distributed make
|
|
|
|
|
Chapter 11. Example Makefiles
|
|
|
|
|
Section 11.1. The Book Makefile
|
|
|
|
|
Section 11.2. The Linux Kernel Makefile
|
|
|
|
|
Chapter 12. Debugging Makefiles
|
|
|
|
|
Section 12.1. Debugging Features of make
|
|
|
|
|
Section 12.2. Writing Code for Debugging
|
|
|
|
|
Section 12.3. Common Error Messages
|
|
|
|
Part III: Appendixes
|
|
|
|
|
Appendix A. Running make
|
|
|
|
|
Appendix B. The Outer Limits
|
|
|
|
|
Section B.1. Data Structures
|
|
|
|
|
Section B.2. Arithmetic
|
|
|
|
|
Appendix C. GNU Free Documentation License ”GNU Project ”Free Software Foundation (FSF)
|
|
|
|
|
Section C.1. 0. PREAMBLE
|
|
|
|
|
Section C.2. 1. APPLICABILITY AND DEFINITIONS
|
|
|
|
|
Section C.3. 2. VERBATIM COPYING
|
|
|
|
|
Section C.4. 3. COPYING IN QUANTITY
|
|
|
|
|
Section C.5. 4. MODIFICATIONS
|
|
|
|
|
Section C.6. 5. COMBINING DOCUMENTS
|
|
|
|
|
Section C.7. 6. COLLECTIONS OF DOCUMENTS
|
|
|
|
|
Section C.8. 7. AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
|
Section C.9. 8. TRANSLATION
|
|
|
|
|
Section C.10. 9. TERMINATION
|
|
|
|
|
Section C.11. 10. FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
Colophon
|
|
|
|
Index
|