PMake is a program for creating other programs, or anything else you can think of for it to do. The basic idea behind PMake is that, for any given system, be it a program or a document or whatever, there will be some files that depend on the state of other files (on when they were last modified). PMake takes these dependencies, which you must specify, and uses them to build whatever it is you want it to build.
PMake is almost fully-compatible with Make, with which you may already be familiar. PMake's most important feature is its ability to run several different jobs at once, making the creation of systems considerably faster. It also has a great deal more functionality than Make.
This tutorial is divided into three main sections corresponding to basic, intermediate and advanced PMake usage. If you already know Make well, you will only need to skim Chapter 2 (there are some aspects of PMake that I consider basic to its use that did not exist in Make). Things in Chapter 3 make life much easier, while those in Chapter 4 are strictly for those who know what they are doing. Glossary of Jargon has definitions for the jargon I use and Chapter 5 contains possible solutions to the problems presented throughout the tutorial.