注:この回答はmake
バージョン3.82以前に関するものです。バージョン4.2の時点でのより良い回答については、DimaPasechnikによる回答を参照してください。
どの-jオプションが提供されたかはわかりません。次の引用によると、ジョブの数に関する情報には、makeまたはそのサブプロセスから通常の方法でアクセスすることはできません。
トップメイクとそのすべてのサブメイクプロセスは、パイプを使用して相互に通信し、すべてのメイクでN個を超えるジョブが開始されないようにします。
(make 3.82ソースコードツリーのNEWSというファイルから取得)
トップメイクプロセスはジョブサーバーとして機能し、パイプを介してサブメイクプロセスにトークンを渡します。独自の並列処理を実行し、に提供されている指定された最大同時ジョブ数を引き続き尊重することが目標のようですmake
。それを達成するために、あなたはどういうわけかそのパイプを介して通信に自分自身を挿入する必要があります。ただし、これは無名パイプであり、私が見る限り、独自のプロセスがジョブサーバーメカニズムに参加する方法はありません。
ちなみに、あなたが言及する「フラグの前処理バージョン」には--jobserver-fds=3,4
、makeプロセス間のパイプのエンドポイントに関する情報を伝達するために使用される式が含まれています。これにより、内部で何が起こっているのかが少し明らかになります...