D. J. Bernstein
Data structures and program structures
Rebuilding target files when source files have changed
The redo program
Rebuilding target files atomically
Notes on honest prerequisites
Target files depend on build scripts
Target files depend on nonexistent files
Files in other directories are targets