@node Jobserver @cindex jobserver @unnumbered Jobserver Parallel builds are made by utilizing the jobserver protocol. Each job have to take so called token and return it when it finishes. Jobserver creates the pipe, consisting of read and write files, that are passed to each @command{goredo} instance. Job takes the token by reading the single byte from that pipe, writing it back for returning. Pipe is pre-filled with required number of tokens. @pindex bmake @pindex gmake @command{goredo} can be integrated with @url{http://www.crufty.net/help/sjg/bmake.htm, bmake} and @url{https://www.gnu.org/software/make/, GNU Make} (@command{gmake}) jobserver protocol. All three of them use the same principle of jobserver, but different ways of passing pipe's file descriptors numbers to child process. @vindex REDO_MAKE @env{$REDO_MAKE} environment variable controls the compatibility behaviour: @table @command @item bmake Pass @code{-j 1 -J X,Y} arguments through @env{$MAKEFLAGS} variable. @item gmake Pass @code{--jobserver-auth=X,Y} arguments through @env{$MAKEFLAGS} variable. @item none Pass @code{X,Y} arguments through @env{$REDO_JS_FD} variable. Used by default, if @env{$REDO_MAKE} is not set. @end table