mage:recursive make::Frosty the Snowman:volcanic eruptions In other words, recursive makefiles are totally avoided, for good reason. Instead this project uses a single top-level makefile combined with module.mk files and autogenerated .d dependency files. Search for "recursive make considered harmful" for an informative paper on why recusive makefiles are the devil. The top-level makefile includes module.mk files from each subproject in order to develop a list of every source file and everything each of them needs. In practice I find this much, much cleaner than recursion--it is rather ugly to type make and wait for an hour while it goes through directory after directory of "Nothing to make for 'all'." Here it knows this right away. ;^) To modify an existing subproject's makefile, edit its module.mk. It's surprisingly simple. Just don't forget to prefix every SRC entry with the module's directory (e.g. libeast/object.cc). The top-level makefile figgers out what -I's are needed and so on and so forth. To add a subproject (module?), create a new directory somewheres, add that directory's name to the top-level Makefile's MODULES entry, and create a module.mk in the directory. Use the existing module.mk's as templates. And don't forget to prefix the source files! Support this system. I recommend emulating it in your own projects and/or suggesting it to maintainers of existing projects either already using recursive makefiles or about to start using them. Feel free to reuse my wonderful depend.sh script which can make a nice dependency list for your source files. If you extend it to work with more than just .cc C++ source, send improvements my way. Or if you improve the makefile system in general, mail me about that too. And good luck.