-
Fowler 1990 - Explains many old-make limitations and new-make (Nmake) features including procedure rules, accuracy mechanisms, viewpathing, and semaphores for blocking unwanted parallelism.
-
Holyer and Pehlivan 2000 - Program uses no makefile. It records manually-issued compilation commands the first time round, then rebuilds programs using recorded command traces.
-
Articles on makefile optimization, build management and acceleration, etc.
-
Lucent FAQ - Summarizes the function and typical syntax of many make features, using a convenient table format.
-
Pool 2003 - This paper describes a distributed compiler for C/C++ programs, and provides a good discussion of key issues related to parallel, distributed software builds.
-
Feldman 1979 - The original make paper, including makefile syntax, implicit rules, double colon targets, macros, VPATH macro, and the usual cleanup and install targets.
-
Schönherr and Wolff 1998 - A set of makefile dependency generator tools for working with files written in Knuth's Literate Programming style.
-
Geosoft - A GNU Make and shell script setup for Java. Features dependency scanning, class files, JAR archives, JNI interfaces, RMI stub and skeletons, and Javadoc.
-
Lih and Zadok 1994 - Reports design issues and results of modifying GNU Make to do distributed makes using the Oakridge PVM Parallel Virtual Machine.
-
Baalbergen 1986 - Distributing machine specific compilation phases among machines with a distributed make program is about 3.5 times faster.
-
Miller 1997 - An argument against using recursive make techniques in the presence of cyclic dependencies among project subdirectories.
-
Kolpackov 2004 - This document compares recursive and non-recursive build systems (GNU make -j N) for building 277 software files in 15 directories using various combinations of parallelism and hardware. Non-recursive builds are faster.
-
Codefast - Contains many articles on software build topics such as problem scope, stakeholder design viewpoints, directory structures, architecture models, makefile generator tools and software build methods.
-
Fowler 1985 - A new make tool with support for CPP, dependency generation, compiled makefiles, parallel execution, pathname parsing operators, and a powerful metalanguage for builtin rules.