title: Parallel building with gnumake and prerequisites
body: <p>My first question (yay!) is about gnumake and parallel builds.  Here's a quick example file:</p>
  
  <pre><code>.PHONY: tool_1 tool_2 tool_3 tool_4 all tools
  
  all: | tools
  
  tools: | tool_2 tool_3 tool_4
  
  tool_1:
      # commands for tool 1
  
  tool_2: | tool_1
      # commands for tool 2
  
  tool_3: | tool_1
      # commands for tool 3
  
  tool_4: | tool_1
      # commands for tool 4
  </code></pre>
  
  <p>If I do <code>make -j</code> on this guy, is what I have here correct to ensure that the commands for <code>tool_1</code> are executed exactly once, and before <code>make</code> tries to build any of <code>tool_[234]</code>?</p>
  
  <p>What I'm looking for is to have <code>make -j</code> cause <code>tool_1</code> to be built first, then <code>tool_[234]</code> to be built in parallel, but without executing the commands for <code>tool_1</code> three times.  I hope that makes sense.  Thanks for any suggestions or ideas!</p>