Skip to content
  • Ben Boeckel's avatar
    ninja: break unnecessary target dependencies · adf60b28
    Ben Boeckel authored
    Previously, given two libraries, X and Y where X depends on Y, all
    object compilations of X would require the Y library to have been linked
    before being compiled. This is not necessary and can instead be loosened
    such that object compilations of X only depend on the order-only
    dependencies of Y to be completed. This is to ensure that generated
    sources, headers, custom commands, etc. are completed before X starts to
    compile its objects.
    
    This should help build performance in projects with many libraries which
    cause a deep library dependency chain. Previously, a library at the
    bottom would not start compilation until after all other libraries
    completed, but now only its link step needs to wait and its compilation
    jobs can be run in parallel with other tasks.
    
    Fixes: #15555
    adf60b28