title: How does the make "-j" option actually work?
body: <p>From the man pages:</p>
  
  <blockquote>
    <p>-j [jobs], --jobs[=jobs]
                Specifies the number of jobs (commands) to run simultaneously.
    If there is more than one -j option,
    the last one is effective.  If the -j
    option  is
                given without an argument, make will not limit the number of jobs
    that can run simultaneously.</p>
  </blockquote>
  
  <p>I know it uses a graph dependency to know which rules are independent. </p>
  
  <p>I would like to know how this graph is built and understand what are the criteria used.</p>
  
  <p>thanks.</p>