This is a test/example for the Makeit build system. The Config.local.mak should not be saved to the repositories usually, it's supposed to be user configuration not visible to other users, but in this case it is because is part of this demonstration. Also, subproj's Config.local.mak shows how to make another project using Makeit behave as it was part of this project, as an "embedded" sub-project. This means you could copy subproj directory elsewhere, remove Config.local.mak and that should be a standalone project using Makeit. Tweaking ours Config.local.mak here, we integrate it into the build system, so doing make in our parent project will make subproj too. lib1 is a standalone C library compiled into a shared object. lib2 is another shared library which uses lib1 and otherproj, which is a standalone project (living in the "subproj" subdirectory) "embedded" into this one. otherproj produces another standalone shared object. Finally, prog is a program which uses lib1 and lib2. Every standalone project have it's copy of Makeit.mak and it's own Toplevel.mak. Both files shouldn't be modified ever (unless you're hacking the build system). Then each directory containing some library or program to build (or directories to include) has a Build.mak, which has only the logic to build the programs/libraries. A well-known Makefile is added to each directory where you want to be able to do "make", just for convenience. This Makefile should be created once, with the default target to build and path to the top-level directory and never touched again. Build.mak should be changes only to add new programs or libraries to build.