The final category of makefile is the one where every command requires input, the
dependencies are incompletely specified, or you simply cannot create more than one target
at a time, as mentioned earlier. In addition, you may not have the time or desire to
upgrade the makefile to run smoothly with PMake. If you are
the conservative sort, this is the compatibility mode for you. It is entered either by
giving PMake the -M
flag (for Make), or by executing PMake as make. In either case, PMake performs
things exactly like Make (while still supporting most of the
nice new features PMake provides). This includes:
No parallel execution.
Targets are made in the exact order specified by the makefile. The sources for each target are made in strict left-to-right order, etc.
A single Bourne shell is used to execute each command, thus the shell's $$
variable is useless, changing directories does not work across
command lines, etc.
If no special characters exist in a command line, PMake will break the command into words itself and execute the command directly, without executing a shell first. The characters that cause PMake to execute a shell are: #, =, |, ^, (, ), {, }, ;, &, >, <, *, ?, [, ], :, $, `, and \. You should notice that these are all the characters that are given special meaning by the shell (except ' and , which PMake deals with all by its lonesome).
The use of the null suffix is turned off.