Skip to content
  • Brad King's avatar
    Ninja: Fix inter-target order-only dependencies of custom commands · 1296a0ea
    Brad King authored
    Custom command dependencies are followed for each target's source files
    and add their transitive closure to the corresponding target.  This
    means that when a custom command in one target has a dependency on a
    custom command in another target, both will appear in the dependent
    target's sources.  For the Makefile, VS IDE, and Xcode generators this
    is not a problem because each target gets its own independent build
    system that is evaluated in target dependency order.  By the time the
    dependent target is built the custom command that belongs to one of its
    dependencies will already have been brought up to date.
    
    For the Ninja generator we need to generate a monolithic build system
    covering all targets so we can have only one copy of a custom command.
    This means that we need to reconcile the target-level ordering
    dependencies from its appearance in multiple targets to include only the
    least-dependent common set.  This is done by computing the se...
    1296a0ea