Cake

The Unix utility make was written to automate the compilation and recompilation of C programs. For example, it has a builtin rule stating that an object file depends on the corresponding source file, and that to remake the object file from the source file, one must invoke the compiler on the source file. Then, when asked to make sure that a given set of object files are up-to-date, make recompiles exactly those object files that are out-of-date with respect to their source file. Make also allows programmers to state additional dependencies in a Makefile.

Despite its usefulness, make has several problems.

These problems together significantly reduce make's effectiveness in many environments.

I designed cake as a replacement for make that avoids all the major problems described above, as well as several minor ones. Many people have therefore switched from make to cake and use it as an integral part of their software development environment, Since cake is so versatile, it can be used for other purposes as well. For example, some people have used it to maintain VLSI designs, while others use it to control the production of documents. Jon Claerbout, a professor of geology at Stanford, uses cake to control the active aspects of the interactive book he distributes on CD-ROM.

Cake is portable: it runs on machines from many vendors. It was distributed throughout the world via Internet news in 1987 and is now available from several anonymous ftp sites. Due to the nature of these distribution mechanisms, I do not know how many sites use cake. I do expect the number to be quite considerable: all professional programmers need a makelike tool, and even a very small percentage of the programmers on the Internet represents a very significant user base. The sites I do know about include Stanford University, University of Wisconsin, University of Illinois, Digital Equipment Corporation, Philips Corporation, NEC, Autodesk, Xerox PARC, CSIRO as well as several universities in Australia.