I'd like to point out a serious flaw in Miller's paper. It's somewhat of a strawman argument, as he describes half a dozen ways to do recursive make incorrectly and concludes that recursive make is bad. To do recursive make correctly, you have to invoke make on every dependency that is in another directory. Make either rebuilds the dependency or determines that it doesn't have to be rebuilt. So I maintain recursive make is not incorrect per se. The drawback is a whole lot of makes (not builds, just makes) of the same thing in a single run. And it takes extra rules to make this happen and I've seen plenty of projects that don't have them. It's worth noting that Miller's paper was fairly well known 10 years ago, and I believe the use of recursive make has only increased since then. So he apparently didn't convince a lot of people. I'm not arguing in favor of recursive make for Mplayer. Just offering a rebuttal to the paper for the record.