From fc0fe4103ac983d88b83dad0daf97664ffa8e04b Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 25 Apr 1999 04:30:55 +0000 Subject: * Add new jobserver feature. * Small updates to the manual * E.Zaretskii fix for new DJGPP version. --- make.texinfo | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'make.texinfo') diff --git a/make.texinfo b/make.texinfo index 6d9be0a..e6b6165 100644 --- a/make.texinfo +++ b/make.texinfo @@ -10,8 +10,8 @@ @set RCSID $Id$ @set EDITION 0.53 @set VERSION 3.78 -@set UPDATED 22 March 1999 -@set UPDATE-MONTH March 1999 +@set UPDATED 14 April 1999 +@set UPDATE-MONTH April 1999 @comment The ISBN number might need to change on next publication. @set ISBN 1-882114-80-9 @c CHANGE THIS BEFORE PRINTING AGAIN! --psmith 16jul98 @@ -24,12 +24,12 @@ @c Combine the program and concept indices: @syncodeindex pg cp -@ifinfo -@dircategory The GNU make utility +@dircategory GNU Packages @direntry - * Make: (make.info). The GNU make utility. +* Make: (make). Remake files automatically. @end direntry +@ifinfo This file documents the GNU Make utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. @@ -3032,8 +3032,8 @@ there is no limit on the number of job slots. The default number of job slots is one, which means serial execution (one thing at a time). One unpleasant consequence of running several commands simultaneously is -that output from all of the commands comes when the commands send it, so -messages from different commands may be interspersed. +that output generated by the commands appears whenever each command +sends it, so messages from different commands may be interspersed. Another problem is that two processes cannot both take input from the same device; so to make sure that only one command tries to take input @@ -3057,6 +3057,10 @@ standard input at all if you are using the parallel execution feature; but if you are not using this feature, then standard input works normally in all commands. +Finally, handling recursive @code{make} invocations raises issues. For +more information on this, see +@ref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}. + If a command fails (is killed by a signal or exits with a nonzero status), and errors are not ignored for that command (@pxref{Errors, ,Errors in Commands}), @@ -3546,13 +3550,22 @@ into @code{MAKEFLAGS}; these options are not passed down.@refill @cindex recursion, and @code{-j} @cindex job slots, and recursion The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}). -If you set it to some numeric value, @samp{-j 1} is always put into -@code{MAKEFLAGS} instead of the value you specified. This is because if -the @w{@samp{-j}} option were passed down to sub-@code{make}s, you would -get many more jobs running in parallel than you asked for. If you give -@samp{-j} with no numeric argument, meaning to run as many jobs as -possible in parallel, this is passed down, since multiple infinities are -no more than one.@refill +If you set it to some numeric value @samp{N} and your operating system +supports it (most any UNIX system will; others typically won't), the +parent @code{make} and all the sub-@code{make}s will communicate to +ensure that there are only @samp{N} jobs running at the same time +between them all. Note that any job that is marked recursive +(@pxref{Instead of Execution, ,Instead of Executing the Commands}) +doesn't count against the total jobs (otherwise we could get @samp{N} +sub-@code{make}s running and have no slots left over for any real work!) + +If your operating system doesn't support the above communication, then +@samp{-j 1} is always put into @code{MAKEFLAGS} instead of the value you +specified. This is because if the @w{@samp{-j}} option were passed down +to sub-@code{make}s, you would get many more jobs running in parallel +than you asked for. If you give @samp{-j} with no numeric argument, +meaning to run as many jobs as possible in parallel, this is passed +down, since multiple infinities are no more than one.@refill If you do not want to pass the other flags down, you must change the value of @code{MAKEFLAGS}, like this: -- cgit v1.2.3