Recursive Make Considered Harmful
Summary
Recursive Make Considered Harmful argues that recursive make degrades build accuracy and speed in large UNIX projects due to incomplete DAGs and poor inter-module dependencies. It advocates a whole-project make approach with a single top-level Makefile and module-level includes, leveraging GNU Make features like include files, deferred evaluation, and explicit dependencies to achieve faster, more reliable builds. The piece also discusses practical strategies (reduce cross-module coupling, use include dependencies, use .d files) and addresses common concerns (maintainability, the size of a single Makefile, memory usage) while highlighting benefits for development workflows and parallel builds.