title: warning: jobserver unavailable: using -j1. Add '+' to parent make rule
body: <p>Here is my Makefile:</p>
  
  <pre><code>.PHONY: test%
  
  test1:
      # jobserver is UNavailable
      make -C sub
  
  test2:
      # jobserver is available, ok
      +make -C sub
  
  test3:
      # jobserver is available, ok
      $(MAKE) -C sub
  
  test4:
      # jobserver is available, ok
      +$(MAKE) -C sub
  </code></pre>
  
  <p><code>sub</code> is sub-directory that contains another Makefile (sub-make).</p>
  
  <p>When I run <code>test1</code> rule:</p>
  
  <pre><code>$ make -j8 test1
  make -C sub
  make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
  </code></pre>
  
  <p>I get warning that jobserver is unavailable and <code>sub/Makefile</code> is really run in single thread (as if <code>-j1</code>).</p>
  
  <p>They say I should add <code>+</code> and so I run a <code>test2</code> target which contains <code>+</code> before <code>make</code> command. And now I don't see the warning and <code>sub/Makefile</code> is really run in parallel. But according to <a href="https://stackoverflow.com/a/3477400/5447906">this answer</a>, the <code>+</code> sign is not for running in parallel but for forcing running commands even if <code>make</code> is run with <code>-n</code>, <code>-t</code>, <code>-q</code> flags. But why does <code>+</code> enables jobserver?</p>
  
  <p>When I run <code>test3</code> target that doesn't use <code>+</code> but uses <code>$(MAKE)</code> for running <code>sub/Makefile</code>, it doesn't give jobserver warning as well (parallel execution works). So what is difference between <code>make</code> and <code>$(MAKE)</code>? I thought it is just for allowing to substitute default <em>make</em> with user-defined <em>make</em>. When I don't override <code>MAKE</code> variable, I see the same <code>make</code> command as I see in the <code>test1</code> target. But why does the <code>$(MAKE)</code> enables jobserver and <code>make</code> does not?</p>
  
  <p>Running <code>test4</code> target does not give jobserver warning also (works in parallel).</p>
  
  <p>Please note my question is different from <a href="https://stackoverflow.com/q/53396967/5447906">this one</a>. It is about <em>cmake</em>, my question is about <em>make</em>. There is also <a href="https://stackoverflow.com/q/9147196/5447906">related question</a>, but it doesn't answer my questions.</p>